redis 哨兵(sentinel)模式实现

Redis 哨兵(sentinel)模式实现

之前搭建的主从复制(读写分离)在主节点宕机后,从节点依然提供数据读,但是不能进行数据写操作。
需要手动将某个从节点切换成主节点才行,哨兵模式就是解决这个手动操作的问题。
当一个集群中的master失效之后,sentinel可以选举出一个新的master继续工作,然后通过发布订阅模式通知其他从服务器,修改配置切换主节点。

核心配置 sentinel.conf

# 保护模式
protected-mode no
# 配置端口
port 26379
# 以守护进程模式启动(后台运行)
daemonize yes
# 日志文件
logfile /usr/local/redis/sentinel/redis-sentinel.log
# 工作目录
dir /usr/local/redis/sentinel/

# 配置哨兵
sentinel monitor mymaster 192.168.14.101 6379 2
# 密码
sentinel auth-pass mymaster wangjialun
# master被sentinel认定为失效的间隔时间
sentinel down-after-milliseconds mymaster 30000
# 剩余的slaves重新和新的master做同步的并行个数
sentinel parallel-syncs mymaster 1
# 故障转移开始,三分钟内没有完成,则认为转移失败
sentinel failover-timeout mymaster 180000

拷贝sentinel.conf到所有主从服务器上,通过redis-sentinel sentinel.conf启动哨兵

# Redis version=6.2.5, bits=64, commit=00000000, modified=0, pid=128938, just started
# Configuration loaded
* Increased maximum number of open files to 10032 (it was originally set to 1024).
* monotonic clock: POSIX clock_gettime
* Running mode=sentinel, port=26379.
# WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
# Sentinel ID is 60b579cb201e522a1da2670954ac2b04a02cb93a
# +monitor master mymaster 192.168.31.96 6379 quorum 2
* +slave slave 192.168.31.52:6379 192.168.31.52 6379 @ mymaster 192.168.31.96 6379
* +slave slave 192.168.31.121:6379 192.168.31.121 6379 @ mymaster 192.168.31.96 6379
* +sentinel sentinel 5a74e74ccc9b908a351ba415baee32f3ec94bcaa 192.168.31.96 26379 @ mymaster 192.168.31.96 6379
* +sentinel sentinel 6b0ea393a9d4e6c55e71829aef86c60d48a52c36 192.168.31.121 26379 @ mymaster 192.168.31.96 6379

查看日志redis-sentinel.log可以看到已经监测到了我的一个master和两个slaveredis节点。以及两个sentinel哨兵。

测试

关闭master节点的redis服务, 查看redis-sentinel.log
可以进入redis-cli通过info replication查看当前节点状态

# +sdown master mymaster 192.168.31.96 6379
# +new-epoch 1
# +vote-for-leader 6b0ea393a9d4e6c55e71829aef86c60d48a52c36 1
# +odown master mymaster 192.168.31.96 6379 #quorum 3/2
# Next failover delay: I will not start a failover before Tue Aug 10 01:49:49 2021
# +config-update-from sentinel 6b0ea393a9d4e6c55e71829aef86c60d48a52c36 192.168.31.121 26379 @ mymaster 192.168.31.96 6379
# +switch-master mymaster 192.168.31.96 6379 192.168.31.121 6379
* +slave slave 192.168.31.52:6379 192.168.31.52 6379 @ mymaster 192.168.31.121 6379
* +slave slave 192.168.31.96:6379 192.168.31.96 6379 @ mymaster 192.168.31.121 6379

sentinel监测到了master节点的故障状态,并从slave节点中选举了一个新的master节点出来,
通知其他的slave节点切换master节点。

当之前故障的master恢复后,发现自己变成了slave节点。注意info replication可能会发现master_link_status:down显示主节点down的状态,是因为没有配置主节点密码导致。需要修改自己的redis.conf中的masterauth

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值