四、哨兵模式搭建
能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库
1、编辑哨兵的配置文件
redis源码安装/redis/redis-6.0.8/下有sentinel.conf文件---默认生成的哨兵配置文件
将sentinel.conf复制出来(搭建几个哨兵复制几个)
daemonize yes
port 26379
sentinel monitor mymaster 127.0.0.1 6379 1 #指定别名 主节点地址 端口 哨兵个数(有几个哨兵监控到主节点宕机执行转移)
以下配置默认即可
#指定工作目录
dir "/usr/local/redis-sentinel/7505"
logfile "./sentinel.log"
#如果哨兵3s内没有收到主节点的心跳,哨兵就认为主节点宕机了,默认是30秒
sentinel down-after-milliseconds mymaster 3000
#选举出新的主节点之后,可以同时连接从节点的个数
sentinel parallel-syncs mymaster 1
#如果10秒后,master仍没活过来,则启动failover,默认180s
sentinel failover-timeout mymaster 10000
#配置连接redis主节点密码
sentinel auth-pass mymaster 123456
mymaster 后跟的是master的ip和端口,最后一个'2'代表我要启动只要有2个sentinel认为master下线,就认为该master客观下线,启动failover并选举产生新的master。通常最后一个参数不能多于启动的sentinel实例数。建议至少启动三台sentinel实例。
2、启动redis节点并启动哨兵
[root@bogon utils]# systemctl start redis_6379.service
[root@bogon utils]# systemctl start redis_6380.service
[root@bogon utils]# systemctl start redis_6381.service
[root@bogon src]# ./redis-server /opt/enviroment/redis-7.0.10/sentinel.conf --sentinel //启动哨兵
3、查看状态 | 从机 连接 主机
6380客户端执行:127.0.0.1:6380> REPLICAOF 127.0.0.1 6379 //从机指定主机
6381客户端执行:127.0.0.1:6381> REPLICAOF 127.0.0.1 6379 //从机指定主机
6380客户端执行:127.0.0.1:6380> info replication
6381客户端执行:127.0.0.1:6381> info replication
6379客户端执行:127.0.0.1:6379> info replication ## 查看主备默认是否成功
4、故障转移
6379客户端执行:127.0.0.1:6379> shutdown //把主节点关闭
等待30秒
6380\6381客户端执行:查看主备状态,看看现在谁是主节点,如果故障了根据投票数自动将 从库 转换为 主库
127.0.0.1:6380>info replication
127.0.0.1:6381>info replication
5、故障恢复
重新启动6379
[root@bogon utils]# systemctl stop redis_6379.service
[root@bogon utils]# systemctl start redis_6379.service
[root@bogon utils]# systemctl status redis_6379.service
再次查看 127.0.0.1:6379>info replication
原来的主节点变成了从节点
6、选取新的主机时受影响的因素:
1、slave-priority 越小
2、偏移量最大
3、runid最小