6.redis-哨兵

一.实战

  1./myredis目录下放sentinel.conf文件

    1) sentinel26379.conf

    2) sentinel26380.conf

    3) sentinel26381.conf

  2.重点参数说明

bind 0.0.0.0               #服务监听位置
daemonize yes          #后台运行
protected-mode no    #安全保护模式
port 26379                 #端口
logfile "/myredis/26379.log"        #日志文件路径
pidfile /var/run/redis_26379.pid  #pid文件路径
dir /myredis                                 #工作目录

#设置要监控的master服务器,

#quorum 表示最少有几个哨兵认可客观下线同意故障迁移的法定票数
sentinel monitor mymaster 192.168.3.128 6379 2 
sentinel auth-pass mymaster 111111 #redisd的密码

    其他参数

sentinel auth-user <master-name> <username>

#指定多少毫秒之后,主节点没有答应哨兵,此时哨兵主观上认为主节点下线

sentinel down-after-milliseconds mymaster 30000

#允许并同步的slave个数,当Master挂了后,哨兵会选出新的Master

sentinel parallel-syncs mymaster 1

#故障转移的超时时间,超出设置的毫秒,表示故障转移失败

sentinel failover-timeout mymaster 180000

#配置当莫一事件发生时所需要执行的脚本

sentinel notification-script mymaster /var/redis/notify.sh

#客户端重新配置主节点参数脚本

sentinel client-reconfig-script mymaster /var/redis/reconfig.sh

  3.通用配置

    1) sentinel26379.conf

bind 0.0.0.0
daemonize yes
protected-mode no
port 26379
logfile "/myredis/26379.log"
pidfile /var/run/redis_26379.pid
dir /myredis
sentinel monitor mymaster 192.168.3.128 6379 2
sentinel auth-pass mymaster 111111

    2) sentinel26380.conf

bind 0.0.0.0
daemonize yes
protected-mode no
port 26380
logfile "/myredis/26380.log"
pidfile /var/run/redis_26380.pid
dir /myredis
sentinel monitor mymaster 192.168.3.128 6379 2
sentinel auth-pass mymaster 111111

    3) sentinel26381.conf

bind 0.0.0.0
daemonize yes
protected-mode no
port 26381
logfile "/myredis/26381.log"
pidfile /var/run/redis_26381.pid
dir /myredis
sentinel monitor mymaster 192.168.3.128 6379 2
sentinel auth-pass mymaster 111111

  4.先启动一主二从redis

查看 https://mp.youkuaiyun.com/mp_blog/creation/editor/129999647

  5.启动3个哨兵

    1) redis-sentinel /path/to/sentinel.conf或者redis-server /path/to/sentinel.conf --sentinel

    2) 实际,cd 到/myredis

redis-sentinel sentinel26379.conf --sentinel

redis-sentinel sentinel26380.conf --sentinel

redis-sentinel sentinel26381.conf --sentinel

  6.测试主从复制

    1) 在主中set k1 111111

    2) 在从机get k1 查看是否有数据

    3) 在哨兵机中 ps -ef | grep redis

  7.原有的master挂了

    1) redis-cli -a 111111 -p 6379 shutdown

    2) 两台从机数据是否完整

    3) 是否从剩下2台机器上选出新的master

    4) 之前的master机器重启回来谁会是master

二.运行流程和选举原理

    1) 当三个哨兵ping主机,都超过了down-after-milliseconds的值30秒,才能判断主机挂到了

    2) 根据Raft算法(先到先得)选举出领导哨兵

    2) 由领导哨兵进行故障迁移选出master,算法是:

      slave-priority或者replica-priority值越小级别越高,如果priority值相同,就判断offset

      replication offset 值越大级别越高, 如果offset 值相同,就判断run id

      Run ID     ASCII值越小级别越高

    3) slave no one 可以使从节点独立出来,并同过slaveof让其他节点成为器

三.使用建议

Redis 提供了一系列工具和脚本以帮助用户更好地进行安装、测试、维护和性能评估。以下是对提到的工具和脚本的详细说明及其使用方式: ### `mkreleasehdr.sh` 脚本 `mkreleasehdr.sh` 是 Redis 源码构建过程中使用的一个脚本,主要负责生成版本头文件。它会根据 Git 仓库的信息生成 `version.h` 文件,该文件包含了当前 Redis 的版本号、Git 提交哈希值等元数据信息。这个脚本通常在 Redis 编译过程中自动运行,开发者无需手动调用它。如果手动需要运行,可以执行以下命令: ```bash ./mkreleasehdr.sh ``` 此脚本确保了 Redis 版本信息的动态生成,方便在不同环境中进行版本追踪和调试。 ### `redis-benchmark`:基准性能测试工具 `redis-benchmark` 是 Redis 自带的性能测试工具,用于评估 Redis 服务器的吞吐量、延迟等关键性能指标。它支持多种测试模式和选项,例如并发连接数、请求类型等。例如,测试本地 Redis 服务器的性能可以使用以下命令: ```bash redis-benchmark -h 127.0.0.1 -p 6379 -c 100 -n 10000 ``` 其中 `-h` 指定服务器地址,`-p` 指定端口,`-c` 表示并发客户端数量,`-n` 表示请求数量。该工具特别适用于在部署前评估 Redis 的性能瓶颈或在调试时验证配置更改的影响[^3]。 ### `redis-check-aof`:AOF 持久化文件修复工具 `redis-check-aof` 用于检查和修复 Redis 的 AOF(Append-Only File)持久化文件。如果 Redis 因为异常关闭而导致 AOF 文件损坏,可以使用该工具进行恢复。例如: ```bash redis-check-aof appendonly.aof ``` 如果发现文件损坏,可以使用 `--fix` 选项进行修复: ```bash redis-check-aof --fix appendonly.aof ``` 该工具能够确保 AOF 文件的完整性,避免数据丢失或服务中断。 ### `redis-cli`:命令行客户端工具 `redis-cli` 是 Redis 的命令行客户端工具,用于与 Redis 服务器交互。它支持多种命令,例如设置键值对、查询数据、管理服务器配置等。例如,连接本地 Redis 服务器并设置一个键值对: ```bash redis-cli 127.0.0.1:6379> SET mykey "Hello Redis" OK 127.0.0.1:6379> GET mykey "Hello Redis" ``` 此外,`redis-cli` 还支持集群管理、哨兵模式配置等高级功能,是日常运维和调试的核心工具。 ### `redis-server`:启动 Redis 服务器 `redis-server` 是启动 Redis 服务器的主程序。默认情况下,它会读取配置文件(通常是 `redis.conf`)来启动实例。例如: ```bash redis-server /path/to/redis.conf ``` 配置文件中可以定义端口、持久化策略、日志路径等参数。如果需要启动多个 Redis 实例,可以通过不同的配置文件指定不同的端口和数据目录。 ### 工具常见问题及解决方案 1. **`redis-benchmark` 测试结果不准确** 可能由于网络延迟或服务器负载过高导致。建议在本地环境中进行测试,并确保服务器资源充足。 2. **`redis-check-aof` 无法修复文件** 如果 AOF 文件损坏严重,可能需要依赖备份文件进行恢复。建议定期备份 AOF 文件以防止数据丢失。 3. **`redis-cli` 无法连接服务器** 检查 Redis 服务器是否正在运行,以及防火墙是否允许相应端口通信。可以使用 `redis-cli ping` 命令测试连接状态。 4. **`redis-server` 启动失败** 检查配置文件中的参数是否正确,尤其是端口是否被占用、日志路径是否存在。可以通过查看日志文件定位问题。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wang_peng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值