redis的主从复制有个缺点:
master宕机,需要手动把一个slave改为master,这期间master不存在,不能对外提供服务,且不一定能即使发现master宕机了。
主从复制表面上是高可用的,实际上并不是。
哨兵机制:
也叫做哨兵模式,监控master、slave的状态,若master故障,自动从slave中选出一个新的master,并将变化通知到管理员、redis客户端。实现了redis主从复制的高可用。
sentinel 哨兵
实现哨兵模式
实现哨兵要用到2个文件:
- redis的bin下面有一个可执行文件redis-sentinel
- redis的解压目录下有一个配置文件sentinel.conf,复制到/usr/local/redis/conf下,当然放哪儿都行
若多台虚拟机上模拟,无需修改端口号、各种文件保存位置,但太吃内初。
若在一台虚拟机上模拟,将redis复制多份,放到/usr/local/redis下,依次重命名为redis1、redis2....,并修改端口号、文件保存路径。
修改sentinel.conf中的几个参数:
bind 192.168.1.7 172.0.0.1 #绑定本机ip。可同时绑定多个,优先使用前面的,把实际ip写在前面。
#protected-mode no #关闭保护模式(不使用保护模式) port 26379 #修改要使用的端口号
daemonize yes #作为守护线程,后台启动 sentinel monitor mymaster 192.168.1.7 6379 2 #指定要监控的master的ip、port,客观下线指标(阈值)
#sentinel auth-pass mymaster abcd #如果master设置了密码,需要写上master的密码
先启动master、slave,等master、slave都启动了,再启动各个sentinel。
我们在sentinel.conf中配置的是master的ip、port,sentinel是通过master找到该master的slave,所以要先启动master、slave。
启动哨兵:
./redis-sentinel ../conf/sentinel.conf
就是执行redis的bin下面的redis-sentinel,指定配置文件sentinel.conf的位置。
ps -ef | grep sentinel 看到哨兵已经启动:(也可以grep redis)