美文网首页
redis cluster 节点

redis cluster 节点

作者: 个00个 | 来源:发表于2020-04-10 17:36 被阅读0次

    8个master

    redis-cli --cluster create 127.0.0.1:7000  127.0.0.1:7001  127.0.0.1:7002  127.0.0.1:7003  127.0.0.1:7004  127.0.0.1:7005  127.0.0.1:7006  127.0.0.1:7007
    

    登陆

    redis-cli -p 7000  -c
    

    一。 若其中某一个master挂了,然后他还有key

    127.0.0.1:7000> get bb
    -> Redirected to slot [8620] located at 127.0.0.1:7004
    Could not connect to Redis at 127.0.0.1:7004: Connection refused
    Could not connect to Redis at 127.0.0.1:7004: Connection refused
    

    可以看到这个key算丢失了 。 cluster_state:fail

    此时重新启动7004

    cluster_state:ok
    

    查看节点slots情况

    127.0.0.1:7000> cluster slots 
    1) 1) (integer) 14336
       2) (integer) 16383
       3) 1) "127.0.0.1"
          2) (integer) 7007
          3) "c3d0293b4cfb2d3c96c5d420f3cc9471f1474b03"
    2) 1) (integer) 4096
       2) (integer) 6143
       3) 1) "127.0.0.1"
          2) (integer) 7002
          3) "856f624296141f439085c4080d549e23099b6c44"
    3) 1) (integer) 0
       2) (integer) 2047
       3) 1) "127.0.0.1"
          2) (integer) 7000
          3) "e42bd0c1e6716f6d338b91a3403abd2f70243442"
    4) 1) (integer) 8192
       2) (integer) 10239
       3) 1) "127.0.0.1"
          2) (integer) 7004
          3) "ff85b7c7c5526a02e60b3e4288dfba08e345e93b"
    5) 1) (integer) 12288
       2) (integer) 14335
       3) 1) "127.0.0.1"
          2) (integer) 7006
          3) "73a092e6a5cbac8ca6285d7b4f477bb6fb020a9e"
    6) 1) (integer) 6144
       2) (integer) 8191
       3) 1) "127.0.0.1"
          2) (integer) 7003
          3) "77eb01b18d07082ebece62dc79baa8b605e23dc8"
    7) 1) (integer) 10240
       2) (integer) 12287
       3) 1) "127.0.0.1"
          2) (integer) 7005
          3) "1074463c33358b85f9aa0d29ef98b7b62fb13eff"
    8) 1) (integer) 2048
       2) (integer) 4095
       3) 1) "127.0.0.1"
          2) (integer) 7001
          3) "f8289e518709687453015ceabd886e9bec4af01e"
    

    删除一个节点

     redis-cli --cluster del-node 127.0.0.1:7000   e42bd0c1e6716f6d338b91a3403abd2f70243442
    
     Removing node e42bd0c1e6716f6d338b91a3403abd2f70243442 from cluster 127.0.0.1:7000
    [ERR] Node 127.0.0.1:7000 is not empty! Reshard data away and try again.
    
    # 有数据不能直接删除
    redis-cli --cluster reshard  127.0.0.1:7000
    
    >>> Check for open slots...
    [WARNING] Node 127.0.0.1:7004 has slots in importing state 1180.
    [WARNING] The following slots are open: 1180.
    >>> Check slots coverage...
    [OK] All 16384 slots covered.
    *** Please fix your cluster problems before resharding
    
    # 执行命令
    redis-cli -p 7004  -c  cluster setslot 1180 stable
    
    # 然后reshard
    https://blog.csdn.net/a826193310/article/details/102579395
    

    新增一个slave节点

    redis-cli --cluster add-node 127.0.0.1:7000 127.0.0.1:7001 --cluster-slave --cluster-master-id f8289e518709687453015ceabd886e9bec4af01e
    
    [ERR] Node 127.0.0.1:7000 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
    
    # 7000 的节点是刚从集群中摘下来的。 
    原因是之前记录的node.conf 并没有删除, 里面记录其他节点的信息。 
    导致启动7000时 会去读取配置信息,然而他的配置信息还tm是错的 。
    
    #解决方法
    删除node.conf  
    重启7000服务, 启动时会加入  且这个服务的key在摘下来是也没有被删除。
    需要先连上之后 flushdb 清空数据库。
    
    
    

    此时变更为7主一丛 7001 的服务的slave为7000

    此时关闭7001
    
    # shutdown
    
     cluster nodes
    
    c3d0293b4cfb2d3c96c5d420f3cc9471f1474b03 127.0.0.1:7007@17007 master - 0 1586511024764 8 connected 0-2047 14336-16383
    856f624296141f439085c4080d549e23099b6c44 127.0.0.1:7002@17002 master - 0 1586511025769 3 connected 4096-6143
    f8289e518709687453015ceabd886e9bec4af01e 127.0.0.1:7001@17001 master,fail - 1586510937894 1586510935000 2 disconnected
    77eb01b18d07082ebece62dc79baa8b605e23dc8 127.0.0.1:7003@17003 master - 0 1586511026774 4 connected 6144-8191
    73a092e6a5cbac8ca6285d7b4f477bb6fb020a9e 127.0.0.1:7006@17006 master - 0 1586511025000 7 connected 12288-14335
    ff85b7c7c5526a02e60b3e4288dfba08e345e93b 127.0.0.1:7004@17004 master - 0 1586511023000 5 connected 8192-10239
    326d15a842876b2b07b333f9dc4eaa7138eb4304 127.0.0.1:7000@17000 myself,master - 0 1586511025000 9 connected 2048-4095
    1074463c33358b85f9aa0d29ef98b7b62fb13eff 127.0.0.1:7005@17005 master - 0 1586511023758 6 connected 10240-12287
    
    可以看到7001 fail了  我们 7000成了master
    
    
    127.0.0.1:7000> cluster info 
    cluster_state:ok
    cluster_slots_assigned:16384
    cluster_slots_ok:16384
    cluster_slots_pfail:0
    cluster_slots_fail:0
    cluster_known_nodes:8
    cluster_size:7
    cluster_current_epoch:9
    
    集群的整体state 为ok  这里的 cluster_current_epoch:9 加了1
    
    cluster_slots_assigned:16384   #已分配的槽
    cluster_slots_ok:16384              #槽的状态是ok的数目
    cluster_slots_pfail:0                    #可能失效的槽的数目
    cluster_slots_fail:0                      #已经失效的槽的数目
    cluster_known_nodes:6             #集群中节点个数
    cluster_size:3                              #集群中设置的分片个数
    cluster_current_epoch:15          #集群中的currentEpoch总是一致的,currentEpoch越高,代表节点的配置或者操作越新,集群中最大的那个node epoch
    cluster_my_epoch:12                 #当前节点的config epoch,每个主节点都不同,一直递增, 其表示某节点最后一次变成主节点或获取新slot所有权的逻辑时间.
    cluster_stats_messages_sent:270782059
    cluster_stats_messages_received:270732696
    
    

    我们重新启动7001

    127.0.0.1:7001> cluster nodes
    f8289e518709687453015ceabd886e9bec4af01e 127.0.0.1:7001@17001 myself,slave 326d15a842876b2b07b333f9dc4eaa7138eb4304 0 1586511280000 2 connected
    ff85b7c7c5526a02e60b3e4288dfba08e345e93b 127.0.0.1:7004@17004 master - 0 1586511282034 5 connected 8192-10239
    c3d0293b4cfb2d3c96c5d420f3cc9471f1474b03 127.0.0.1:7007@17007 master - 0 1586511280029 8 connected 0-2047 14336-16383
    326d15a842876b2b07b333f9dc4eaa7138eb4304 127.0.0.1:7000@17000 master - 0 1586511278000 9 connected 2048-4095
    856f624296141f439085c4080d549e23099b6c44 127.0.0.1:7002@17002 master - 0 1586511279025 3 connected 4096-6143
    77eb01b18d07082ebece62dc79baa8b605e23dc8 127.0.0.1:7003@17003 master - 0 1586511278000 4 connected 6144-8191
    1074463c33358b85f9aa0d29ef98b7b62fb13eff 127.0.0.1:7005@17005 master - 0 1586511279000 6 connected 10240-12287
    73a092e6a5cbac8ca6285d7b4f477bb6fb020a9e 127.0.0.1:7006@17006 master - 0 1586511281031 7 connected 12288-14335
    
    太屈辱了 7001 变成了奴隶...
    
    解释一下
    节点ID:例如25e8c9379c3db621da6ff8152684dc95dbe2e163
    ip:port:节点的ip地址和端口号,例如192.168.64.102:8002
    flags:节点的角色(master,slave,myself)以及状态(pfail,fail)
    如果节点是一个从节点的话,那么跟在flags之后的将是主节点的节点ID,例如192.168.64.156:8001主节点的ID就是0b1f3dd6e53ba76b8664294af2b7f492dbf914ec
    集群最近一次向节点发送ping命令之后,过了多长时间还没接到回复
    节点最近一次返回pong回复的时间
    节点的配置纪元(config epoch)
    本节点的网络连接情况
    节点目前包含的槽,例如192.168.64.102:8002目前包含的槽为5461-10922
    

    相关文章

      网友评论

          本文标题:redis cluster 节点

          本文链接:https://www.haomeiwen.com/subject/duwrmhtx.html