前言:
1.在redis主从默认是只有主具备写的能力,而从只能读。如果主宕机,整个节点不具备写能力。但是如果这是让一个从变成主,整个节点就可以继续工作。即使之前的主恢复过来也当做这个节点的从即可。
2.Redis的哨兵就是帮助监控整个节点的,当节点主宕机等情况下,帮助重新选取主。
3.Redis中哨兵支持单哨兵和多哨兵。单哨兵是只要这个哨兵发现master宕机了,就直接选取另一个master。而多哨兵是根据我们设定,达到一定数量哨兵认为master宕机后才会进行重新选取主。
搭建Redis多哨兵机制:
一:在local目录下新建sentinel目录,并把redis的bin目录复制进sentinel目录
1.创建目录:# mkdir /usr/local/sentinel
2.复制redis:# cp -r /usr/local/redis/bin/* /usr/local/sentinel
二:从redis的解压目录复制sentinel配置文件
sentinel文件在redis的解压目录,一般情况下是在local下的临时文件夹temp中,如果你不是在temp文件夹解压的redis,就寻找你自己的解压目录,sentinel文件肯定在解压目录里面。
1.进入redis的解压目录
# cd /usr/local/tmp/redis-5.0.5/
2.复制sentinel进入local下的sentinel哨兵目录
# cp sentinel.conf /usr/local/sentinel/
三:修改sentinel配置文件(这个配置文件要准备三份)
1.进入sentinel目录
# cd /usr/local/sentinel
2.修改配置文件
# vim sentinel.conf
修改四个位置:
1.端口号:三个sentinel文件端口号分别为26379、26380、26381。
2.daemonize的“no”改为“yes”。
3.设置logfile日志文件路径:“/usr/local/sentinel/26379.log”
4.哨兵监视器:sentinel monitor mymaster + ip+被监视的redis端口+哨兵数量
eg:sentinel monitor mymaster 127.0.0.1 6379 2
这个配置文件要准备三份,分别是sentinel.conf、sentinel-26380.conf、sentinel-26381.conf,他们的端口号分别是26379、26380、26381。
以上就是redis多哨兵的搭建过程,下面开始测试:
四:启动主从
如果已经启动状态,忽略下面命令。如果启动部分,全部kill后重新启动。
查看redis进程:# ps aux|grep redis
杀死某进程:# kill -9 + 进程号
启动redis主从
# cd /usr/local/replica
# ./startup.sh
启动三个哨兵
# cd /usr/local/sentinel
# ./redis-sentinel sentinel.conf
# ./redis-sentinel sentinel-26380.conf
# ./redis-sentinel sentinel-26381.conf
查看redis主从和redis多哨兵启动信息:
可以看到三个redis和三个sentinel启动成功了的,并且还可以看到对应的进程号。
测试宕机:用kill命令杀死master进程
杀死master进程:kill -9 + 对应进程号
再次查看redis主从和redis多哨兵启动信息:
可以看到只有两个reids进程和三个哨兵进程了,少了一个原来的master进程。
查看新的master:
注意info replication信息中的“role:master”,可以看到6381端口号的redis成立新的master。说明我们杀死原来的master(redis端口号是6379),现在搭建了哨兵机制,自动选择一个原来的“从redis”变成了新的“主redis”。