sentinel monitor mymaster 192.168.1.108 6379 2
sentinel down-after-milliseconds mymaster 30000 //超过多少毫秒跟一个redis实例断了连接,哨兵就可能认为这个redis实例挂了
sentinel failover-timeout mymaster 60000 //执行故障转移的timeout超时时长
sentinel parallel-syncs mymaster 1 //选举出新的master后 一次性把几个slave挂载上去
sentinel auth-pass mymaster redis-pass
port 5000
bind 192.168.1.109
dir /var/sentinal/5000
sentinel monitor mymaster 192.168.1.108 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel failover-timeout mymaster 60000
sentinel parallel-syncs mymaster 1
sentinel auth-pass mymaster redis-pass
port 5000
bind 192.168.1.105
dir /var/sentinal/5000
sentinel monitor mymaster 192.168.1.108 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel failover-timeout mymaster 60000
sentinel parallel-syncs mymaster 1
sentinel auth-pass mymaster redis-pass
3、启动哨兵进程 在eshop-cache01、eshop-cache02、eshop-cache03三台机器上,分别启动三个哨兵进程,组成一个集群,观察一下日志的输出
redis-sentinel /etc/sentinal/5000.conf
redis-server /etc/sentinal/5000.conf --sentinel
日志里会显示出来,每个哨兵都能去监控到对应的redis master,并能够自动发现对应的slave,哨兵之间互相会自动进行发现,用的就是之前说的pub/sub,消息发布和订阅channel消息系统和机制
4、检查哨兵状态 redis-cli -h 192.168.1.108 -p 5000
sentinel master mymaster
SENTINEL slaves mymaster
SENTINEL sentinels mymaster
SENTINEL get-master-addr-by-name mymaster
文章插图
配置成功后的运行截图:
master的哨兵信息:
文章插图
Slave上的哨兵信息:
文章插图
master的哨兵监视信息:
文章插图
slave的监视信息:
文章插图
文章插图
模式master 宕机后的情景:
将master的端口关闭掉,或者直接关闭master虚拟机,
文章插图
------------------------------------------------------------------------------------------
在Master宕机以及分裂的异常情况下的处理方案:
Master宕机
第一种情况:在client不断往master写入数据,在准备将数据异步拷贝给各个slave的时候,此时master宕机的情况下,哨兵会选举新的master,然后clinet就会向
新的master写入数据,此时原来的master里边原来写入的那块数据就丢失了;
文章插图
分裂的情况
第二种情况脑裂:
也就是master由于异常原因,独立出slave所在的网络,但是master可以继续工作,但此时哨兵检测到master的异常后,重新选出一个slave作为新的master,
此时的场景下存在了两个master,在新的master选举出来之前,然后client继续向原来的master写入数据,当选举新master完成后,原来的master恢复被被设置
为slave,此时旧的master缓存的数据就会被覆盖,导致数据丢失;
文章插图
------------------------------------------------------------------
1、两种数据丢失的情况
主备切换的过程,可能会导致数据丢失
(1)异步复制导致的数据丢失
因为master -> slave的复制是异步的,所以可能有部分数据还没复制到slave,master就宕机了,此时这些部分数据就丢失了
(2)脑裂导致的数据丢失
脑裂,也就是说,某个master所在机器突然脱离了正常的网络,跟其他slave机器不能连接,但是实际上master还运行着
此时哨兵可能就会认为master宕机了,然后开启选举,将其他slave切换成了master
这个时候,集群里就会有两个master,也就是所谓的脑裂
此时虽然某个slave被切换成了master,但是可能client还没来得及切换到新的master,还继续写向旧master的数据可能也丢失了
因此旧master再次恢复的时候,会被作为一个slave挂到新的master上去,自己的数据会清空,重新从新的master复制数据
推荐阅读
- 私域流量的真相
- 百度seo流量浮动,网站到底该如何应对?
- 对DBA、开发、测试、产品同时友好 大规模多存储场景的数据库选型与服务平台建设
- 手淘推荐是什么流量入口 手淘推荐流量怎么获得
- RSS|在流量大厂的围攻下 有人希望20多岁老掉牙的技术复活
- 手淘推荐流量突然下降 手淘推荐是什么流量
- 全球最大CDN厂商Akamai:新冠疫情下互联网流量激增带来的安全新挑战
- 淘宝店铺没有自然流量进来怎么办 淘宝店流量一直起不来
- 交管12123怎么取消缴费?
- 淘宝新品上架多久会有自然流量 淘宝每天上新品可以提高流量吗