关于redis多个哨兵sentinel在阿里云的坑 sdown sentinel或者failover-abort-not-elected

sentinel之间不能相互通信的坑

这两天在三台阿里云服务器上搭建redis集群,遇到个问题,试了网上的bind 0.0.0.0protected-mode no仍然还是有问题,网上百度和谷歌了很久,都没有看到网上有解决办法,故记录这个坑,便别人参考。

redis环境: 一主二从三哨兵,都运行在阿里云服务器上

运行主服务器两从服务器,ok,相互数据也没问题,然后在三台服务器上运行这三个哨兵

+sdown sentinel xxxxxxxxx

在检测时间到后(默认30s),3个哨兵都显示另外两哨兵挂了(sdown sentinel)
模拟 主服务器 宕机,shutdown掉, 三个哨兵都无法选举 并且各自都显示+sdown master
,但是无法+odown master
因为设置的哨兵投票需要2票(sentinel monitor mymaster xx.xx.xx.xx 6379 2),然后三个哨兵都只显示sdown并不能odown所以无法重新选举,故想着把投票数要求设置为1(sentinel monitor mymaster xx.xx.xx.xx 1),这次再模拟挂机,能够成功odown了,但是却任然无法重新选举:

failover-abort-not-elected

解决方案(下面两个选一)

这里问题在于sentinel无法相互通信,而我已经放行了阿里的外网端口对应安全组,和linux的防火墙,仍然无法通信,这个为什么呢?其实是sentinel默认使用的阿里云服务器17开头的内网ip,并不是对应的外网ip,而它们内网之间默认是无法访问的,解决办法自然就是让他们正常访问就行了:

(1)阿里云安全组内网访问

这个在这里只是提供一种思路,你去百度就行了,一搜一大把,让安全组内网之间可以相互通信就可以了

在这里插入图片描述

(2)推荐:定义sentinel通信被发现的ip地址

这个方法是推荐的方法,很简单,你只需要在sentinel.conf中定义sentinel announce-ip "你服务器的ip"来指定sentinel对外发现的ip地址就可以了,这样,其它sentinel相互通信的时候就不是使用内网ip了,直接使用你定义的当前服务器的ip,就能成功通信了。
在这里插入图片描述

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值