我正在尝试创建一个简单的redis高可用性设置,包括1个主站、1个从站和2个哨兵。
当从redis-master到redis-slave失败时,设置工作得很好。当redis-master恢复时,它正确地将自己注册为新的redis-slave主程序的从属程序。
但是,当redis-slave作为主程序发生故障时,redis-master不能作为主程序返回。redis-master的日志进入循环,显示:
1:S 12 Dec 11:12:35.073 * MASTER <-> SLAVE sync started
1:S 12 Dec 11:12:35.073 * Non blocking connect for SYNC fired the event.
1:S 12 Dec 11:12:35.074 * Master replied to PING, replication can continue...
1:S 12 Dec 11:12:35.075 * Trying a partial resynchronization (request 684581a36d134a6d50f1cea32820004a5ccf3b2d:285273).
1:S 12 Dec 11:12:35.076 * Master is currently unable to PSYNC but should be in the future: -NOMASTERLINK Can't SYNC while not connected with my master
1:S 12 Dec 11:12:36.081 * Connecting to MASTER 10.102.1.92:6379
1:S 12 Dec 11:12:36.081 * MASTER <-> SLAVE sync started
1:S 12 Dec 11:12:36.082 * Non blocking connect for SYNC fired the event.
1:S 12 Dec 11:12:36.082 * Master replied to PING, replication can continue...
1:S 12 Dec 11:12:36.083 * Trying a partial resynchronization (request 684581a36d134a6d50f1cea32820004a5ccf3b2d:285273).
1:S 12 Dec 11:12:36.084 * Master is currently unable to PSYNC but should be in the future: -NOMASTERLINK Can't SYNC while not connected with my master
1:S 12 Dec 11:12:37.087 * Connecting to MASTER 10.102.1.92:6379
1:S 12 Dec 11:12:37.088 * MASTER <-> SLAVE sync started
...根据复制文档,它指出:
从Redis 4.0开始,当一个实例在故障转移之后被提升为主程序时,它仍然能够与旧主的奴隶执行部分重新同步。
但日志似乎显示了相反的情况。显示第一个redis-master到redis-slave故障转移和后续redis-slave到redis-master日志的更详细的日志版本是可用的这里。
知道怎么回事吗?为了让redis-master返回到主角色,我需要做什么?配置细节如下:
服务
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
redis-master ClusterIP 10.102.1.92 <none> 6379/TCP 11m
redis-slave ClusterIP 10.107.0.73 <none> 6379/TCP 11m
redis-sentinel ClusterIP 10.110.128.95 <none> 26379/TCP 11mredis-主配置
requirepass test1234
masterauth test1234
dir /data
tcp-keepalive 60
maxmemory-policy noeviction
appendonly no
bind 0.0.0.0
save 900 1
save 300 10
save 60 10000
slave-announce-ip redis-master.fp8-cache
slave-announce-port 6379redis-从配置
requirepass test1234
slaveof redis-master.fp8-cache 6379
masterauth test1234
dir /data
tcp-keepalive 60
maxmemory-policy noeviction
appendonly no
bind 0.0.0.0
save 900 1
save 300 10
save 60 10000
slave-announce-ip redis-slave.fp8-cache
slave-announce-port 6379发布于 2018-12-22 15:45:16
事实证明,这个问题与使用主机名而不是IP有关:
slaveof redis-master.fp8-cache 6379
...
slave-announce-ip redis-slave.fp8-cache因此,当主人作为奴隶回来时,哨兵显示现在有两个奴隶:一个有ip地址,另一个有主机名。不清楚这两个从条目(指向同一个Redis服务器)是如何导致上述问题的。现在,我将配置更改为使用IP地址,而不是主机名,Redis正在完美地工作。
https://stackoverflow.com/questions/53743032
复制相似问题