redis哨兵模式
一:原理图
1:master下线
sentinel 会以每秒一次的频率向所有节点(其他sentinel、主节点、以及从节点)发送 ping 消
息,然后通过接收返回判断该节点是否下线;如果在配置指定 down-after-milliseconds 时间内,sentinel收到的都是无效回复, 则被判断为主观下线;
当一个 sentinel 节点将一个主节点判断为主观下线之后,为了确认这个主节点是否真的下线,它
会向其他sentinel 节点进行询问,如果收到一定数量的已下线回复,sentinel 会将主节点判定为客
观下线,并通过领头 sentinel 节点对主节点执行故障转移;
2:故障转移
主节点被判定为客观下线后,开始领头 sentinel 选举,需要一半以上的 sentinel 支持,选举领头
sentinel后,开始执行对主节点故障转移;
-
从从节点中选举一个从节点作为新的主节点
-
通知其他从节点复制连接新的主节点
-
若故障主节点重新连接,将作为新的主节点的从节点
-
发布消息通知客户端主节点的改变。
3:客户端使用
1:连接sentinel
2:为当前连接的哨兵节点,添加发布订阅( PUB/SUB )连接,并且订阅 +switch-master 频 道;
二:配置实现
redis:6380(主),6381(从1),6382(从2)
sentinel:16380(主),16381(从1),16382(从2)
1:配置主节点-sentinel(sentinel-16380)
#切换到redis安装目录
cd /use/local/bin
#创建文件sentinel-26382.conf文件,并添加以下内容
#-----------------------------------------------------------------------------------------------------------
# 哨兵端口
port 16380
daemonize yes
# 配置该哨兵节点监听的主节点
# "mymaster"表示主节点名称
# "2"表示至少需要2个哨兵同意,才可判定主节点故障并进行故障转移
sentinel monitor mymaster 127.0.0.1 6380 2
# 配置哨兵连接主节点的认证密码
sentinel auth-pass mymaster 123456
2:配置从节点1-sentinel(sentinel-16381)
#切换到redis安装目录
cd /use/local/bin
#创建文件sentinel-16381.conf文件,并添加以下内容
#-----------------------------------------------------------------------------------------------------------
# 哨兵端口
port 16381
daemonize yes
# 配置该哨兵节点监听的主节点
# "mymaster"表示主节点名称
# "2"表示至少需要2个哨兵同意,才可判定主节点故障并进行故障转移
sentinel monitor mymaster 127.0.0.1 6380 2
# 配置哨兵连接主节点的认证密码
sentinel auth-pass mymaster 123456
3:配置从节点2-sentinel(sentinel-16382)
#切换到redis安装目录
cd /use/local/bin
#创建文件sentinel-26382.conf文件,并添加以下内容
#-----------------------------------------------------------------------------------------------------------
# 哨兵端口
port 16382
daemonize yes
# 配置该哨兵节点监听的主节点
# "mymaster"表示主节点名称,可以通过info replication查看(连接redis后执行)
# "2"表示至少需要2个哨兵同意,才可判定主节点故障并进行故障转移
sentinel monitor mymaster 127.0.0.1 6380 2
# 配置哨兵连接主节点的认证密码
sentinel auth-pass mymaster 123456
4:各个节点启动哨兵模式
redis-sentinel sentinel-16380.conf
redis-sentinel sentinel-16381.conf
redis-sentinel sentinel-16382.conf
5:查看哨兵配置
#登录从节点redis,执行命令
info Sentinel