如何在失败后重新启动redis群集节点

时间:2018-04-22 09:56:45

标签: redis

我正按照文档试验Redis群集。我有一点混乱。

初始配置

35edd8052caf37149b4f9cc800fcd2ba60018ab5 127.0.0.1:30005@40005 slave bd76f831d34ed265a964e5f5caff2c0807c96b85 0 1524390407263 5 connected
d9e92c606f1fddebf84bbbc6f76485e418647683 127.0.0.1:30003@40003 master - 0 1524390407263 8 connected 10923-16383
edf62838d10b99018a0ecb7698c1b9ac52aa3bbb 127.0.0.1:30002@40002 myself,master - 0 1524390407000 2 connected 5461-10922
bd76f831d34ed265a964e5f5caff2c0807c96b85 127.0.0.1:30001@40001 master - 0 1524390407062 1 connected 0-5460
55a72ea5b4d0a77e2b18ca2b3f74b20d3550244c 127.0.0.1:30006@40006 slave edf62838d10b99018a0ecb7698c1b9ac52aa3bbb 0 1524390407562 6 connected
26788ce4523c95a93bd63907c1c75827fe61476a 127.0.0.1:30004@40004 slave d9e92c606f1fddebf84bbbc6f76485e418647683 0 1524390407263 8 connected

现在测试一下,如果任何主机失败,我使用以下命令手动失败。

redis-cli -p 30001 debug segfault

现在配置看起来像这样。 (30001失败,30005升为硕士)

35edd8052caf37149b4f9cc800fcd2ba60018ab5 127.0.0.1:30005@40005 master - 0 1524390694964 9 connected 0-5460
d9e92c606f1fddebf84bbbc6f76485e418647683 127.0.0.1:30003@40003 master - 0 1524390695064 8 connected 10923-16383
edf62838d10b99018a0ecb7698c1b9ac52aa3bbb 127.0.0.1:30002@40002 myself,master - 0 1524390694000 2 connected 5461-10922
bd76f831d34ed265a964e5f5caff2c0807c96b85 127.0.0.1:30001@40001 master,fail - 1524390636966 1524390636165 1 disconnected
55a72ea5b4d0a77e2b18ca2b3f74b20d3550244c 127.0.0.1:30006@40006 slave edf62838d10b99018a0ecb7698c1b9ac52aa3bbb 0 1524390694964 6 connected
26788ce4523c95a93bd63907c1c75827fe61476a 127.0.0.1:30004@40004 slave d9e92c606f1fddebf84bbbc6f76485e418647683 0 1524390695164 8 connected

如何再次将30001添加到群集中?另外,我如何才能启动该节点?

我正在关注此文件。 https://redis.io/topics/cluster-tutorial。 (这里有一条声明“我重新启动崩溃的实例,以便它作为奴隶重新加入群集”,但没有提到如何做到这一点?)

3 个答案:

答案 0 :(得分:3)

您可以使用与之前启动它相同的命令重新启动所需端口上的redis实例,即

cd 30001
../redis-server redis.conf

答案 1 :(得分:3)

使用redis-trib.rb创建集群需要运行Redis实例,我们应该开始使用自定义配置文件

../redis-server redis.conf

其中redis.conf包含该节点的配置。 例如

  • port 7000
  • cluster-enabled yes
  • cluster-config-file nodes.conf
  • cluster-node-timeout 5000
  • appendonly yes

redis群集创建如下,

./redis-trib.rb create --replicas 1 host1:port1 host2:port2 host3:port3 host4:port4 host5:port5 host6:port6

ruby​​文件将在这些文件中随机创建master和slave,并创建一个nodes.conf文件(如redis.conf文件中所述),它将具有节点信息

当您使用../redis-server redis.conf启动服务器时,它将从nodes.conf中选择节点信息,如id,其主/从,并再次连接到集群

答案 2 :(得分:1)

假设您已按照本教程进行操作,并使用create-cluster命令创建了集群,即

# pwd: redis/utils/create-cluster
./create-cluster start
./create-cluster create

要恢复发生故障的节点,请使用再次启动

./create-cluster start

这将启动发生故障的节点。当前正在运行的节点不会受到影响。

https://github.com/antirez/redis/blob/unstable/utils/create-cluster/create-cluster#L25