Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Redis sentinel主从协同配置中,初始主机的新主机显示为向下_Redis_Redis Sentinel - Fatal编程技术网

在Redis sentinel主从协同配置中,初始主机的新主机显示为向下

在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(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