在Redis sentinel主从协同配置中,初始主机的新主机显示为向下
安装了一个redis(v.3.0.4)主从模式,使用3个节点(1个主节点和2个从节点),每个节点都有requirepass,如中所述,然后在每个节点上启动3个sentinel,如本文所述 在他们试图推翻奴隶主后,哨兵果然将其中一名奴隶提升为奴隶主。然后当老主人起来的时候 它又变成了奴隶,认识了一个新主人,这可以从 /etc/redis/sentinel.conf,已使用新的主IP更新 在“sentinel monitor redis群集”属性中。 但是我注意到,旧主机尽管知道新主机的IP,但它认为新主机是向下的,不像其他从机看到它向上。可以通过对旧主机运行以下命令来检查:在Redis sentinel主从协同配置中,初始主机的新主机显示为向下,redis,redis-sentinel,Redis,Redis Sentinel,安装了一个redis(v.3.0.4)主从模式,使用3个节点(1个主节点和2个从节点),每个节点都有requirepass,如中所述,然后在每个节点上启动3个sentinel,如本文所述 在他们试图推翻奴隶主后,哨兵果然将其中一名奴隶提升为奴隶主。然后当老主人起来的时候 它又变成了奴隶,认识了一个新主人,这可以从 /etc/redis/sentinel.conf,已使用新的主IP更新 在“sentinel monitor redis群集”属性中。 但是我注意到,旧主机尽管知道新主机的IP,但它认
$redis-cli -a altoros info replication
#
Replication
role:slave
master_host: new master ip
master_port:6379
master_link_status:down
当尝试使用同步客户端测试节点上的数据复制时,这似乎也会导致以下错误“与主服务器的主服务器断开链接,从服务器过时数据设置为“否”
The logs of the old masters (/var/log/redis/redis-server.log) are showing:
20731:S 09 Nov 10:16:31.117 * Connecting to MASTER <new master="" ip="">: 6379
20731:S 09 Nov 10:16:31.117 * MASTER <-> SLAVE sync started
20731:S 09 Nov 10:16:31.118 * Non blocking connect for SYNC fired the event.
20731:S 09 Nov 10:16:31.118 * Master replied to PING, replication can continue...
20731:S 09 Nov 10:16:31.119 * (Non critical) Master does not under stand REPLCONF listening-port: -NOAUTH Authentication required.
20731:S 09 Nov 10:16:31.119 * (Non critical) Master does not under stand REPLCONF capa:
-NOAUTH Authentication required.
旧主机的日志(/var/log/redis/redis server.log)显示:
20731:S 09 11月10:16:31.117*连接到主机:6379
20731:S 09 11月10:16:31.117*主从同步已开始
20731:S 09 Nov 10:16:31.118*同步的非阻塞连接触发了事件。
20731:S 09 Nov 10:16:31.118*主机已回复PING,复制可以继续。。。
20731:S 09 Nov 10:16:31.119*(非关键)主机不支持REPLCONF侦听端口:-需要NOAUTH身份验证。
20731:S 09 Nov 10:16:31.119*(非关键)船长不理解REPLCONF capa:
-不需要身份验证。
看起来旧主机无法向新主机进行身份验证,因为它
没有他的密码,但如何正确设置
因为我注意到/etc/redis/redis.conf在创建新主机后没有更改
与/etc/redis/sentinel.conf不同,这可能会导致主服务器的redis.conf不包含新主服务器的密码
如果您有任何提示来解决此问题,我们将不胜感激。主设备需要像从设备一样配置,因为有一天它可能会变成从设备。因此,您需要将其
masterauth
设置为pod的密码
您可以在不重新启动y的情况下对“旧主机”执行以下操作:
从那时起就可以了,配置文件将被更新。主设备需要像从设备一样进行配置,因为有一天它可能会变成从设备。因此,您需要将其
masterauth
设置为pod的密码
您可以在不重新启动y的情况下对“旧主机”执行以下操作:
从那一点开始应该没问题,配置文件将被更新。您说您在每个节点上都设置了
requirepass
,并且必须设置masterauth
才能让从属节点工作,但是您是否也在sentinel中设置了sentinel auth pass
config?是的,sentinel配置文件(/etc/redis/sentinel.conf)中设置了sentinel auth pass
,否则在取下初始主设备时,sentinel无法将其中一个从设备升级为主设备。因此,问题似乎不是在sentinel级别,而是在redis级别。您说您在每个节点上设置了requirepass
,并且必须设置masterauth
才能让从属节点工作,但是您是否也在sentinel中设置了sentinel auth pass
config?是的,sentinel配置文件(/etc/redis/sentinel.conf)中设置了sentinel auth pass
,否则在取下初始主设备时,sentinel无法将其中一个从设备升级为主设备。所以问题似乎不是在哨兵级别,而是在redis级别。
redis-cli -h oldmasterip -a thepassword config set masterauth thepassword
redis-cli -h oldmasterip -a thepassword config rewrite