Sentinel(哨兵)进程是用于监控redis主从关系中的Master主机的状态,在Master主服务器发生故障的时候,可以实现Master和Slave服务器的切换,保证了redis服务器的高可用。
Sentinel(哨兵)进程的工作方式:
1. Sentinel(哨兵)进程使用ping-pong机制以每秒钟一次的频率对Master主服务器进行监测,同时哨兵可以通过主服务器获取到从服务器的信息。
2. 如果哨兵距离最后一次有效回复 PING-PONG 命令的时间超过 down-after-milliseconds 选项所指定的值, 则这个Master主服务器会被 Sentinel(哨兵)认为宕机了。
3.当主服务器宕机后,哨兵通过投票(所有的哨兵参与投票)从节点服务器(从服务器)中选出一台服务器作为主机服务器,并将其他从机的主从关系(redis.conf文件)修改为新主机,此外将宕机的主服务器的主从关系修改为新服务器(旧主机修改为从机,当旧主机修复重启后作为从机).
Redis哨兵(Sentinel)的配置:
-
新建sentinel文件夹,并复制以下内容;
-
使用命令vim sentinel.conf对哨兵进行配置(哨兵的默认端口为26379):
(1)关闭保护模式;
(2)后台启动改为yes;
(3)修改哨兵监听的主机(mymaster);
(4)配置主机宕机后哨兵等待多长时间开始推选主机;
(5)配置哨兵等待被推选主机开始工作时间,超过此事件被推选主机没有开始工作,则重写推选;
3.分别修改每一个xxx.conf为6379,6380,6381;
4.进入需要配置为从服务器的redis客户端,使用以下命令将从机挂载到指定主机:
slaveof 挂载主机的ip 挂载主机的端口号
如: slaveof 192.168.161.128 6379(这里将6379当做主机)
同理,将6381挂载到6379.conf主机上;
5.使用如下命令启动哨兵;
redis-sentinel sentinel.conf
至此,哨兵高可用搭建完成。