Redis哨兵模式详解
1、作用
在主从复制集群当中,使用哨兵模式,可以对 master/slave 进行监控,以实现自动管理。
有哪些自动管理:
①监控主从复合集群各服务器状态,如正在运行:up,宕机:down
②master 宕机后推选新的 master
③slave 宕机重启后自动恢复 slave 身份
图示:
2、判断宕机的依据
①主观下线
当有一台哨兵服务器检测到下线即为主观下线
注意:它只针对 slave 做主观下线
②客观下线
当一定数量(这里一定数量是在配置文件中指定的)的哨兵判定某个节点服务器宕机,则为客观下线。
注意:客观下线只针对 master 不对 slave 作客观下线
③timeout 超时检查
当哨兵检测到某节点服务器宕机下线后,并不会立马做出反应判断下线,而是要等待一定的时间。
④心跳检查
哨兵是怎样知道服务器下线的,它不断地向服务器发送数据包,发送完后等待服务器回复,如果正常收到回复信息,则处于正常连接中,反之故障。
3、代码演示
①配置哨兵
以配置一台哨兵为例。
[1]创建配置文件
因为启动哨兵与启动 Redis 服务器相似,需要一个配置文件,所以首先我们创建一个 sentinel.conf 配置文件。并进入编辑模式,按以下格式书写配置内容。
[2]配置内容
格式 | sentinel monitor 为主机命名 主机IP 主机端口号 将主机判定为下线时需要Sentinel同意的数量 |
---|---|
例子 | sentinel monitor mymaster 127.0.0.1 7000 1 |
②启动三个 Redis 服务
其中端口号7000为 master,端口号8000、9000的为 slave
③启动哨兵
/usr/local/redis/bin/redis-server /usr/local/cluster-redis/sentinel.conf --sentinel
④启动效果
启动后我们可以看到如下信息,端口号为7000的为master,并管理着两个slave。
⑤测试自动管理
对象 | 下线后 | 重新上线 |
---|---|---|
slave(主观下线) | 哨兵检测到下线 | 刚上线为master 随后变为slave |
master(客观下线) | ||
情况一: slave A:投票给 slave B slave B:投票给 slave A 平票,继续投票 情况二: slave A:投票给自己 slave B:投票给自己 平票,继续投票 情况三: slave A:投票给自己 slave B:投票给 slave A slave A当选 master 情况四: slave A:投票给 slave B slave B:投票给自己 slave B当选 master | 变成slave,跟从新的master |