哨兵是一个独立的进程,用于监控redis主从库的状态,当主库宕机后,可以选举一个从库来作为主库,其它的从库和已宕机的主库将作为新的主库的从库来运行,以此来实现redis的高可用性。
一个哨兵可以监控多个主从复制。一个主从复制也可以被多个哨兵监控。
一、哨兵的基本使用
1.1 添加一个哨兵配置文件: vi sentinel.conf
内容格式为:sentinel monitor 自定义的主库名称 主库ip 端口号 选举最低通过票数
例如:sentinel monitor masterRedis 127.0.0.1 6379 1
注:只需要配置主库信息,哨兵会发送info命令给主库来获取从库信息,如果要监控多个主从复制,则以上命令配置多条即可。
1.2 启动哨兵:redis-sentinel ../sentinel.conf
1.3 哨兵其它配置项:
| 命令 | 描述 | 说明 |
| sentinel down-after-millisenconds 自定义的主库名称 时间(毫秒) | 对于被监控的数据库和哨兵节点,发送ping命令的时间间隔 | 自定义的主库名称:需要与sentinel monitor一致 时间(毫秒):最大值为1000毫秒,超过1000的都按1000来执行 |
二、哨兵的执行过程
哨兵启动的时候首先读取配置文件的内容,找到需要被监控的主库。哨兵启动后会与主库建立两条连接,第一条用来订阅被监控的数据库的_sentinel_:hello频道以获取其它监控此数据库的哨兵节点信息,哨兵也需要定期向数据库发送info等命令来获取数据库信息,但是当客户端的连接进入订阅模式的时候,就不能执行其他命令了,这个时候哨兵就会用另一条连接来发送这些命令。
哨兵和数据库连接建立后,哨兵会定时执行下面3个操作:
1、每10秒哨兵会向主库和从库发送info命令。
用于获取当前数据库的相关信息:运行ID、复制信息等。还可以自动发现新的从库。
2、每2秒哨兵会向主库和从库的_sentinel_:hello频道发送自己的信息。
用于与其它哨兵分享自己的信息。以此来实现多哨兵模式。
3、每1秒哨兵会向主库、从库、其它哨兵节点发送ping命令。
用于监控主库、从库和其它哨兵节点的状态。请求间隔与sentinel down-after-millisenconds有关。