【问题标题】:How to restart redis cluster node after failureredis集群节点故障后如何重启
【发布时间】:2019-08-10 23:22:26
【问题描述】:

我正在根据文档试验 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

现在要测试是否有任何 master 失败,我使用以下命令手动失败。

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。 (这里有一个声明“我重新启动了崩溃的实例,以便它作为从属重新加入集群”,但没有提到如何做到这一点?)

【问题讨论】:

    标签: redis


    【解决方案1】:

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

    ../redis-server redis.conf
    

    redis.conf 包含该节点的配置。 比如

    • 端口 7000
    • 启用集群是
    • 集群配置文件nodes.conf
    • 集群节点超时 5000
    • 只追加是的

    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、它的主/从,并再次连接到集群

    【讨论】:

    • 我的问题是只有一个redis服务器停止或失败,所以我想重新启动它。 nodes.conf 文件在哪里创建。
    • 如果你遵循了redis集群教程,nodes.conf是在名为文件夹的端口内创建的,在你的例子中是30001
    • @dotnetstep 如果您对答案感到满意。请接受它以帮助社区
    • 没有回答问题。
    【解决方案2】:

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

    cd 30001
    ../redis-server redis.conf
    

    【讨论】:

    • 我知道要启动 redis 我们必须这样做,但我使用 redis-trib.rb 来创建集群。在那种情况下, redis.conf 文件的位置是什么。现在你的答案更笼统。
    【解决方案3】:

    假设您按照教程并使用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

    【讨论】:

      猜你喜欢
      • 2016-03-19
      • 1970-01-01
      • 1970-01-01
      • 2016-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-28
      相关资源
      最近更新 更多