linux哨兵命令 哨兵的命令( 三 )


选举领头Sentinel规则和方法:
下面两幅图表示当三个Sentinel发现主服务器已经进入客观下线状态后,为了选举出领头Sentinel , 三个Sentinel将再次向其他Sentinel发送SENTINEL is-master-down-by-addr命令要求其他Sentinel将自己设置为局部领头Sentinel 。根据先到先得规则,如果某个Sentinel发送的命令比其他的快 , 并最终胜出领头Sentinel的选举,然后这个领头Sentinel就可以开始对服务器执行故障转移操作了 。
在选举产生出领头Sentinel之后 , 领头Sentinel将对已下线的主服务器执行故障转移操作,该操作包含以下三个步骤:
(1) 选出新的主服务器
故障转移的第一步就是在已下线主服务器属下的所有从服务器中挑选出一个状态良好、数据完成整的从服务器 , 然后向这个从服务器发送slaveno one 命令,将这个从服务器装换为主服务器 。
下图展示在一次故障转移操作中,领头Sentinel向选中的从服务器server3发送 SLAVEOF no one 命令 。
在发送 SLAVEOF no one命令之后,领头 Sentinel会以每秒一次的频率(平时是每10秒一次) , 向被升级的从服服务发送INFO命令,并观察命令回复中角色(role)信息,当被升级的从服务器的role由原来的slave变为master时,领头Sentinel就知道被选中的从服务器顺利升级为主服务器了 。
(2) 修改从服务器的复制目标
当新的主服务器出现之后 , 领头Sentinel让已下线主服务器属下的所有从服务器去复制新的主服务器,这一动作可以通过向从服务器发送 SLAVE OF 命令来实现 。
(3) 将旧的主服务器变为从服务器
故障转移操作最后要做的是, 将巳下线的主服务器设置为新的主服务器的从服务器 。
当serverl1重新上线时,Sentinel就会向它发送 SLAVEOF 命令,让它成为server3的从服务器 。
Redis的Sentinel实现主要包含以下几个方面: 三个定时任务、主观下线和客观下线检测、领头Sentinel的选举、故障转移 。
(1) 定时任务
(2) 主观下线和客观下线检测
客观下线:当Sentinel将一个主服务器判断为主观下线后 , 为了确认这个主服务是否真的下线了,他会向同样监视这个主服务器的所有其他Sentinel进行询问 , 看它们是否也认为主服务器是否进入下线状态 , 如果有足够多数量的Sentinel认为主服务器进入下线状态时 , Sentinel就会将主服务器判定为客观下线状态 。
(3) 领头Sentinel的选举
在主服务器被判定为客观下线后,Sentinel之间会根据一定的规则选出一个领头Sentinel,故障转移的工作就是这个领头Sentinel来完成的 。
(4) 故障转移
注:本文参考《Redis设计与实现》 , 如发现错误,请指正!
Linux下安装配置redis详细教程,并配置哨兵模式 redis版本为redis-3.2.12,使用工具将安装包上传到data目录 。
在data目录下创建文件夹redis,将redis安装在此目录 。
第一步:解压 。
第二步:安装,PREFIX=/data/redis用来设置安装目录 。
到此 , redis已经安装完成,剩下就是配置和启动服务 。
进入redis目录,创建配置文件conf、日志logs、数据库dump、进程号pid四个目录,用来存放对应的文件,这四个目录也可以存放在其他文件夹 , 只要与配置文件中的配置一致即可,否则在启动服务时会报错 。其中bin目录就是redis安装成功后的一些命令文件 。
redis服务配置一主二从,哨兵模式 。注意:如果在实际开发中用不到哨兵模式,redis服务配置一主一从即可 。
主Redis配置:redis_6379.conf
从Redis配置,redis_6380.conf和redis_6381.conf,与主Redis配置基本上一样,不一样的地方在于端口、数据库、日志、pid文件名称 , 都以6380或6381为标志,最重要的地方是建立主从关系和同步验证 。

推荐阅读