Redis集群从属失败时不升级

时间:2020-11-04 03:36:47

标签: redis redis-cluster

我们正在AWS EC2上运行一些服务器,我们有3台服务器具有最低要求:

  • 3师傅
  • 3个奴隶

因此,我们在每个服务器上都运行以下主机:

redis-cli -h 10.0.1.203 -p 6379
redis-cli -h 10.0.1.202 -p 6380
redis-cli -h 10.0.1.190 -p 6381

每个主服务器的基本配置:

# bind 127.00.1
protected-mode no
port PORT
pidfile /var/run/redis_PORT.pid
cluster-enabled yes
cluster-config-file nodes-PORT.conf
cluster-node-timeout 15000
appendonly yes

因此,当主服务器运行时,我们只需运行以下命令:

redis-cli --cluster create 10.0.1.203:6379 10.0.1.202:6380 10.0.1.190:6381

3个集群正常运行:

250b7c31d7b8c9904ce8973cc455665442fd5005 10.0.1.203:6379@16379 master - 0 1604457241953 1 connected 0-5460
4c71052d7a0e7ea4d0bff1d7a3e60881c85d3c68 10.0.1.202:6380@16380 master - 0 1604457242000 2 connected 5461-10922
4f44bbb25c2a65fa76483de8b23a7f6a6a768886 10.0.1.190:6381@16381 master - 0 1604457243000 3 connected 10923-16383

因此,我们在跨模式下为HA为每个主机添加一个从机:

    redis-cli --cluster add-node 10.0.1.202:6379 10.0.1.203:6379 --cluster-slave --cluster-master-id 250b7c31d7b8c9904ce8973cc455665442fd5005
    redis-cli --cluster add-node 10.0.1.203:6381 10.0.1.190:6381 --cluster-slave --cluster-master-id 4f44bbb25c2a65fa76483de8b23a7f6a6a768886
    redis-cli --cluster add-node 10.0.1.190:6380 10.0.1.202:6380 --cluster-slave --cluster-master-id 4c71052d7a0e7ea4d0bff1d7a3e60881c85d3c68

我们检查我们的配置:

10.0.1.202:6380> CLUSTER NODES
4c71052d7a0e7ea4d0bff1d7a3e60881c85d3c68 10.0.1.202:6380@16380 myself,master - 0 1604458060000 2 connected 5461-10922
7d44ec90814058c07d241a7ccf7ba7a5ed62e6c8 10.0.1.202:6379@16379 slave 250b7c31d7b8c9904ce8973cc455665442fd5005 0 1604458060000 1 connected
fbfd4d0bcbcb411093d36ffef8557fabe8880d2f 10.0.1.203:6381@16381 slave 4f44bbb25c2a65fa76483de8b23a7f6a6a768886 0 1604458059496 3 connected
250b7c31d7b8c9904ce8973cc455665442fd5005 10.0.1.203:6379@16379 master - 0 1604458060097 1 connected 0-5460
4f44bbb25c2a65fa76483de8b23a7f6a6a768886 10.0.1.190:6381@16381 master - 0 1604458060498 3 connected 10923-16383
fbbb86c1ea48a30841afee555ab64e9fe557c984 10.0.1.190:6380@16380 slave 4c71052d7a0e7ea4d0bff1d7a3e60881c85d3c68 0 1604458061501 2 connected

一切正常,一切都好,直到我们停止一个主机为止,问题是从机从未升级为主机,实际上有点奇怪,当我们再次启动服务器时,主机仍为从机。

所以我们运行:

redis-cli -p 6379 debug segfault


10.0.1.202:6380> CLUSTER NODES
4c71052d7a0e7ea4d0bff1d7a3e60881c85d3c68 10.0.1.202:6380@16380 myself,master - 0 1604460813000 2 connected 5461-10922
7d44ec90814058c07d241a7ccf7ba7a5ed62e6c8 10.0.1.202:6379@16379 master - 0 1604460814388 4 connected 0-5460
fbfd4d0bcbcb411093d36ffef8557fabe8880d2f 10.0.1.203:6381@16381 slave 4f44bbb25c2a65fa76483de8b23a7f6a6a768886 0 1604460814589 3 connected
250b7c31d7b8c9904ce8973cc455665442fd5005 :0@0 master,fail,noaddr - 1604459431574 1604459429000 1 disconnected
4f44bbb25c2a65fa76483de8b23a7f6a6a768886 10.0.1.190:6381@16381 master - 0 1604460812883 3 connected 10923-16383
fbbb86c1ea48a30841afee555ab64e9fe557c984 10.0.1.190:6380@16380 slave 4c71052d7a0e7ea4d0bff1d7a3e60881c85d3c68 0 1604460814000 2 connected

然后我们重新启动6379主机:

redis-server a_master.conf  --daemonize yes

坏消息:

10.0.1.203:6379> CLUSTER NODES
605408695d82e9d871a65f4d641f21d91abf6481 10.0.1.203:6379@16379 myself,master - 0 1604460666184 1 connected 0-5460
21244bde7e2734d6e33d4585a0684da348cf3293 :0@0 master,noaddr - 1604460666189 1604460666184 2 disconnected 5461-10922
96634a696e3cb0a0ba634dfe825643a2f38f07ad :0@0 master,noaddr - 1604460666189 1604460666184 3 disconnected 10923-16383

我们是否缺少某些东西,即使复制也需要运行命令?

任何建议将不胜感激。

0 个答案:

没有答案