Redis部署之哨兵
背景
在上篇中Redis部署之主从已完成redis主从部署,系统的性能提高了,但如果主节点发送故障,则无法对外提供写入服务,需要手动进行主从切换。
引入哨兵可提升系统可用性,并在主节点故障时自动完成主从切换。
环境说明
- 2台云服务器
- 使用docker部署
- 一主一从一哨兵
- redis版本为:7.2.4
前置条件
已完成redis主从部署
下载配置文件
1 | wget http://download.redis.io/redis-stable/sentinel.conf |
修改配置文件
1 | 哨兵监控IP为127.0.0.1端口号为6379的redis主服务器,主服务器名称为mymaster,最后的数字表示数量,例如3台哨兵,其中有2台哨兵认为redis主服务器已经宕机,则主机已经宕机,否则不认为redis的主服务器宕机 |
如主节点配置了密码,则sentinel.conf
配置文件必须配置密码,如:
sentinel auth-pass mymaster 123456
启动哨兵
1 | docker run -d --name sentinel -p 26379:26379 -v /root/docker-data/redis/sentinel.conf:/usr/local/etc/redis/sentinel.conf -v /etc/localtime:/etc/localtime:ro redis redis-sentinel /usr/local/etc/redis/sentinel.conf |
/root/docker-data/redis/sentinel.conf
为宿主机挂载目录,可自行修改。
踩坑记录
在主从配置中,从节点需要连接主节点,因此从节点通过masterauth <your-password>
配置主节点认证密码从而连接主节点,而主节点不需要配置从节点的认证密码,因为不会自动进行主从切换,主节点不需要连接到从节点。
而在哨兵模式下,当主节点A下线,从节点B升级为主节点后,若A上线后,A会尝试以从节点的身份连接到主节点B,而由于A未配置从节点的认证密码,导致无法连接。
因此,哨兵模式下,主从节点都需要配置对方的认证密码,如:
1 | masterauth 123456 |