Redis 哨兵配置

哨兵主要解决master和slave角色的无缝切换,让业务无感知从而不影响业务使用。

Sentinel 进程是用于监控redis集群中Master主服务器工作的状态,在Master主服务器发生故障的时候,可以实现Master和Slave服务器的切换,保证系统的高可用。

哨兵(Sentinel) 是一个分布式系统,可以在一个架构中运行多个哨兵(sentinel) 进程,这些进程使用流言协议(gossip protocols)来接收关于Master主服务器是否下线的信息,并使用投票协议(Agreement Protocols)来决定是否执行自动故障迁移,以及选择哪个Slave作为新的Master。

拓扑:
在这里插入图片描述

一、配置一主两从

root@redis-server2:~# vim /apps/redis/etc/redis.conf
slaveof 10.0.0.31 6379
masterauth 123456
root@redis-server2:~# systemctl restart redis.service
root@redis-server3:~# vim /apps/redis/etc/redis.conf
slaveof 10.0.0.31 6379
masterauth 123456
root@redis-server3:~# systemctl restart redis.service

在master查看是有slave

127.0.0.1:6379> INFO
# Replication
role:master
connected_slaves:2
slave0:ip=10.0.0.32,port=6379,state=online,offset=28,lag=1
slave1:ip=10.0.0.33,port=6379,state=online,offset=28,lag=1

二、修改哨兵配置文件

master和slave 哨兵配置文件保持一致,不需要修改

root@redis-server1:~# cp /usr/local/src/redis-4.0.14/sentinel.conf /apps/redis/etc/
root@redis-server1:~# grep "^[a-Z]" /apps/redis/etc/sentinel.conf
bind 0.0.0.0
port 26379
daemonize yes
pidfile "redis-sentinel.pid"
logfile "sentinel_26379.log"
dir "/apps/redis/log"
sentinel monitor mymaster 10.0.0.31 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel auth-pass mymaster 123456
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
sentinel deny-scripts-reconfig yes
root@redis-server1:~# scp /apps/redis/etc/sentinel.conf 10.0.0.32:/apps/redis/etc/sentinel.conf
root@redis-server1:~# scp /apps/redis/etc/sentinel.conf 10.0.0.33:/apps/redis/etc/sentinel.conf

master和slave 分别执行命令启动哨兵

root@redis-server1:/apps/redis/etc# /apps/redis/bin/redis-sentinel /apps/redis/etc/sentinel.conf --sentinel
root@redis-server2:/apps/redis/etc# /apps/redis/bin/redis-sentinel /apps/redis/etc/sentinel.conf --sentinel
root@redis-server3:/apps/redis/etc# /apps/redis/bin/redis-sentinel /apps/redis/etc/sentinel.conf --sentinel

通过 ss -ntl 查看26379端口是否启动,来验证哨兵是否成功开启

哨兵正常启动的日志

root@redis-server1:/apps/redis/etc# tail -f /apps/redis/log/sentinel_26379.log
35082:X 15 Jul 15:00:34.556 # Redis version=4.0.14, bits=64, commit=00000000, modified=0, pid=35082, just started
35082:X 15 Jul 15:00:34.556 # Configuration loaded
35083:X 15 Jul 15:00:34.557 * Increased maximum number of open files to 10032 (it was originally set to 1024).
35083:X 15 Jul 15:00:34.558 * Running mode=sentinel, port=26379.
35083:X 15 Jul 15:00:34.558 # Sentinel ID is 15d367ee972ba5b8cb112dfa0b69f1ec87a32039
35083:X 15 Jul 15:00:34.558 # +monitor master mymaster 10.0.0.31 6379 quorum 2
35083:X 15 Jul 15:00:34.559 * +slave slave 10.0.0.32:6379 10.0.0.32 6379 @ mymaster 10.0.0.31 6379
35083:X 15 Jul 15:00:34.569 * +slave slave 10.0.0.33:6379 10.0.0.33 6379 @ mymaster 10.0.0.31 6379
35083:X 15 Jul 15:00:38.868 * +sentinel sentinel f411228800de263c3e6b039e9c2295564651e265 10.0.0.32 26379 @ mymaster 10.0.0.31 6379
35083:X 15 Jul 15:00:41.042 * +sentinel sentinel 83d8c67fd2a8e83290c3e9ebd528b54e401e6405 10.0.0.33 26379 @ mymaster 10.0.0.31 6379

查看当前sentinel的状态

root@redis-server1:~# redis-cli -h 10.0.0.31 -p 26379
10.0.0.31:26379> INFO sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=10.0.0.31:6379,slaves=2,sentinels=3

三、master模拟故障

root@redis-server1:~# systemctl stop redis.service

切换前 10.0.0.31 为master, 10.0.0.32 10.0.0.33 为slave
切换后 10.0.0.33 为master, 10.0.0.32 为slave

10.0.0.31的sentinel日志如下:
在这里插入图片描述
10.0.0.32的sentinel日志如下:
在这里插入图片描述
10.0.0.33的sentinel日志如下:
在这里插入图片描述

四、故障转移之后sentinel配置文件的变化情况

故障转移后redis.conf中的replicaof行的master IP会被修改,sentinel.conf中的sentinel monitor IP会被修改。

root@redis-server2:/apps/redis/etc# grep "^[a-Z]" /apps/redis/etc/redis.conf
......
slaveof 10.0.0.33 6379
......
root@redis-server2:/apps/redis/etc# grep "^[a-Z]" /apps/redis/etc/sentinel.conf
bind 0.0.0.0
port 26379
daemonize yes
pidfile "redis-sentinel.pid"
logfile "sentinel_26379.log"
dir "/apps/redis/log"
sentinel myid f411228800de263c3e6b039e9c2295564651e265
sentinel deny-scripts-reconfig yes
sentinel monitor mymaster 10.0.0.33 6379 2
sentinel auth-pass mymaster 123456
sentinel config-epoch mymaster 1
sentinel leader-epoch mymaster 1
sentinel known-slave mymaster 10.0.0.31 6379
sentinel known-slave mymaster 10.0.0.32 6379
sentinel known-sentinel mymaster 10.0.0.33 26379 83d8c67fd2a8e83290c3e9ebd528b54e401e6405
sentinel known-sentinel mymaster 10.0.0.31 26379 15d367ee972ba5b8cb112dfa0b69f1ec87a32039
sentinel current-epoch 1
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值