• docker 部署Redis集群(三主三从,以及扩容、缩容)


    1:创建6个redis容器

    1. docker run -d --name redis01 --net host --privileged=true -v /opt/redis/redis01:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6381
    2. docker run -d --name redis02 --net host --privileged=true -v /opt/redis/redis02:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6382
    3. docker run -d --name redis03 --net host --privileged=true -v /opt/redis/redis03:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6383
    4. docker run -d --name redis04 --net host --privileged=true -v /opt/redis/redis04:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6384
    5. docker run -d --name redis05 --net host --privileged=true -v /opt/redis/redis05:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6385
    6. docker run -d --name redis06 --net host --privileged=true -v /opt/redis/redis06:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6386

    2:查看容器运行状态

    1. [root@localhost redis]# docker ps
    2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    3. 2230e0a5bf5c redis:6.0.8 "docker-entrypoint.s…" 7 seconds ago Up 6 seconds redis06
    4. 0bc9f5da8601 redis:6.0.8 "docker-entrypoint.s…" 9 seconds ago Up 8 seconds redis05
    5. e1431fb85072 redis:6.0.8 "docker-entrypoint.s…" 9 seconds ago Up 8 seconds redis04
    6. 01c2ff5e0090 redis:6.0.8 "docker-entrypoint.s…" 9 seconds ago Up 8 seconds redis03
    7. 88892f9eb9db redis:6.0.8 "docker-entrypoint.s…" 9 seconds ago Up 9 seconds redis02
    8. a13bfc991867 redis:6.0.8 "docker-entrypoint.s…" 44 seconds ago Up 43 seconds redis01

    3:创建redis 3主3从集群

    1. [root@localhost ~]# docker exec -it redis01 /bin/bash
    2. --cluster-replicas 1 表示为每个master,创建一个slave节点
    3. root@localhost:/data# redis-cli --cluster create 192.168.1.31:6381 192.168.1.31:6382 192.168.1.31:6383 192.168.1.31:6384 192.168.1.31:6385 192.168.1.31:6386 --cluster-replicas 1
    4. >>> Performing hash slots allocation on 6 nodes...
    5. Master[0] -> Slots 0 - 5460
    6. Master[1] -> Slots 5461 - 10922
    7. Master[2] -> Slots 10923 - 16383
    8. Adding replica 192.168.1.31:6385 to 192.168.1.31:6381
    9. Adding replica 192.168.1.31:6386 to 192.168.1.31:6382
    10. Adding replica 192.168.1.31:6384 to 192.168.1.31:6383
    11. >>> Trying to optimize slaves allocation for anti-affinity
    12. [WARNING] Some slaves are in the same host as their master
    13. M: cd9a9149593770a920258bf75e1235ca4b904cd5 192.168.1.31:6381
    14. slots:[0-5460] (5461 slots) master
    15. M: 89228357317c6b7d6850fffa2f0819085def1a2f 192.168.1.31:6382
    16. slots:[5461-10922] (5462 slots) master
    17. M: c2436c65625e1d74d8ea5bde328df04699d494e9 192.168.1.31:6383
    18. slots:[10923-16383] (5461 slots) master
    19. S: eac210d52a6c6ddeb9556ffa1820d13a89828264 192.168.1.31:6384
    20. replicates 89228357317c6b7d6850fffa2f0819085def1a2f
    21. S: d8f0436ada2c423bc07d8cba38461eb3bb00ca3a 192.168.1.31:6385
    22. replicates c2436c65625e1d74d8ea5bde328df04699d494e9
    23. S: 5b40728c470dac59556f7b51866e590e9038bbd9 192.168.1.31:6386
    24. replicates cd9a9149593770a920258bf75e1235ca4b904cd5
    25. Can I set the above configuration? (type 'yes' to accept): yes
    26. >>> Nodes configuration updated
    27. >>> Assign a different config epoch to each node
    28. >>> Sending CLUSTER MEET messages to join the cluster
    29. Waiting for the cluster to join
    30. .
    31. >>> Performing Cluster Check (using node 192.168.1.31:6381)
    32. M: cd9a9149593770a920258bf75e1235ca4b904cd5 192.168.1.31:6381
    33. slots:[0-5460] (5461 slots) master
    34. 1 additional replica(s)
    35. S: eac210d52a6c6ddeb9556ffa1820d13a89828264 192.168.1.31:6384
    36. slots: (0 slots) slave
    37. replicates 89228357317c6b7d6850fffa2f0819085def1a2f
    38. M: 89228357317c6b7d6850fffa2f0819085def1a2f 192.168.1.31:6382
    39. slots:[5461-10922] (5462 slots) master
    40. 1 additional replica(s)
    41. S: 5b40728c470dac59556f7b51866e590e9038bbd9 192.168.1.31:6386
    42. slots: (0 slots) slave
    43. replicates cd9a9149593770a920258bf75e1235ca4b904cd5
    44. S: d8f0436ada2c423bc07d8cba38461eb3bb00ca3a 192.168.1.31:6385
    45. slots: (0 slots) slave
    46. replicates c2436c65625e1d74d8ea5bde328df04699d494e9
    47. M: c2436c65625e1d74d8ea5bde328df04699d494e9 192.168.1.31:6383
    48. slots:[10923-16383] (5461 slots) master
    49. 1 additional replica(s)
    50. [OK] All nodes agree about slots configuration.
    51. >>> Check for open slots...
    52. >>> Check slots coverage...
    53. [OK] All 16384 slots covered.

    4:查看集群状态

    1. root@localhost:/data# redis-cli -p 6381
    2. 127.0.0.1:6381> keys *
    3. (empty array)
    4. 127.0.0.1:6381> cluster info
    5. cluster_state:ok
    6. cluster_slots_assigned:16384
    7. cluster_slots_ok:16384
    8. cluster_slots_pfail:0
    9. cluster_slots_fail:0
    10. cluster_known_nodes:6
    11. cluster_size:3
    12. cluster_current_epoch:6
    13. cluster_my_epoch:1
    14. cluster_stats_messages_ping_sent:300
    15. cluster_stats_messages_pong_sent:310
    16. cluster_stats_messages_sent:610
    17. cluster_stats_messages_ping_received:305
    18. cluster_stats_messages_pong_received:300
    19. cluster_stats_messages_meet_received:5
    20. cluster_stats_messages_received:610
    21. 127.0.0.1:6381> cluster nodes
    22. cd9a9149593770a920258bf75e1235ca4b904cd5 192.168.1.31:6381@16381 myself,master - 0 1700124241000 1 connected 0-5460
    23. eac210d52a6c6ddeb9556ffa1820d13a89828264 192.168.1.31:6384@16384 slave 89228357317c6b7d6850fffa2f0819085def1a2f 0 1700124242176 2 connected
    24. 89228357317c6b7d6850fffa2f0819085def1a2f 192.168.1.31:6382@16382 master - 0 1700124242000 2 connected 5461-10922
    25. 5b40728c470dac59556f7b51866e590e9038bbd9 192.168.1.31:6386@16386 slave cd9a9149593770a920258bf75e1235ca4b904cd5 0 1700124240000 1 connected
    26. d8f0436ada2c423bc07d8cba38461eb3bb00ca3a 192.168.1.31:6385@16385 slave c2436c65625e1d74d8ea5bde328df04699d494e9 0 1700124239000 3 connected
    27. c2436c65625e1d74d8ea5bde328df04699d494e9 192.168.1.31:6383@16383 master - 0 1700124241149 3 connected 10923-16383
    28. 可以看出主从关系如下:
    29. 192.168.1.31:6381 -> 192.168.1.31:6386
    30. 192.168.1.31:6382 -> 192.168.1.31:6384
    31. 192.168.1.31:6383 -> 192.168.1.31:6385

    5:存储数据,必须连接redis集群,不能连接单节点

    1. root@localhost:/data# redis-cli -p 6381 -c
    2. 127.0.0.1:6381> keys *
    3. (empty array)
    4. 127.0.0.1:6381> set k1 v1
    5. (error) MOVED 12706 192.168.1.31:6383
    6. 127.0.0.1:6381> set k2 v2
    7. OK
    8. 127.0.0.1:6381> set k3 v3
    9. OK
    10. 127.0.0.1:6381> set k4 v4
    11. (error) MOVED 8455 192.168.1.31:6382
    12. 127.0.0.1:6381>
    13. 127.0.0.1:6381> set k1 v-cluster1
    14. -> Redirected to slot [12706] located at 192.168.1.31:6383
    15. OK
    16. 192.168.1.31:6383> set k2 v-cluster2
    17. -> Redirected to slot [449] located at 192.168.1.31:6381
    18. OK
    19. 192.168.1.31:6381> set k3 v3
    20. OK
    21. 192.168.1.31:6381> set k4 v4
    22. -> Redirected to slot [8455] located at 192.168.1.31:6382
    23. OK

    6:主从容错切换迁移
    6.1:查看集群信息

    1. root@localhost:/data# redis-cli --cluster check 192.168.1.31:6381
    2. 192.168.1.31:6381 (cd9a9149...) -> 2 keys | 5461 slots | 1 slaves.
    3. 192.168.1.31:6382 (89228357...) -> 1 keys | 5462 slots | 1 slaves.
    4. 192.168.1.31:6383 (c2436c65...) -> 1 keys | 5461 slots | 1 slaves.
    5. [OK] 4 keys in 3 masters.
    6. 0.00 keys per slot on average.
    7. >>> Performing Cluster Check (using node 192.168.1.31:6381)
    8. M: cd9a9149593770a920258bf75e1235ca4b904cd5 192.168.1.31:6381
    9. slots:[0-5460] (5461 slots) master
    10. 1 additional replica(s)
    11. S: eac210d52a6c6ddeb9556ffa1820d13a89828264 192.168.1.31:6384
    12. slots: (0 slots) slave
    13. replicates 89228357317c6b7d6850fffa2f0819085def1a2f
    14. M: 89228357317c6b7d6850fffa2f0819085def1a2f 192.168.1.31:6382
    15. slots:[5461-10922] (5462 slots) master
    16. 1 additional replica(s)
    17. S: 5b40728c470dac59556f7b51866e590e9038bbd9 192.168.1.31:6386
    18. slots: (0 slots) slave
    19. replicates cd9a9149593770a920258bf75e1235ca4b904cd5
    20. S: d8f0436ada2c423bc07d8cba38461eb3bb00ca3a 192.168.1.31:6385
    21. slots: (0 slots) slave
    22. replicates c2436c65625e1d74d8ea5bde328df04699d494e9
    23. M: c2436c65625e1d74d8ea5bde328df04699d494e9 192.168.1.31:6383
    24. slots:[10923-16383] (5461 slots) master
    25. 1 additional replica(s)
    26. [OK] All nodes agree about slots configuration.
    27. >>> Check for open slots...
    28. >>> Check slots coverage...
    29. [OK] All 16384 slots covered.

    6.2:停止6381,redis01

    [root@localhost redis]# docker stop redis01

    6.3:查看集群状态

    1. [root@localhost redis]# docker exec -it redis02 /bin/bash
    2. root@localhost:/data# redis-cli -p 6382 -c
    3. 查看集群状态:
    4. 127.0.0.1:6382> cluster nodes
    5. eac210d52a6c6ddeb9556ffa1820d13a89828264 192.168.1.31:6384@16384 slave 89228357317c6b7d6850fffa2f0819085def1a2f 0 1700133223366 2 connected
    6. 5b40728c470dac59556f7b51866e590e9038bbd9 192.168.1.31:6386@16386 master - 0 1700133224000 7 connected 0-5460
    7. d8f0436ada2c423bc07d8cba38461eb3bb00ca3a 192.168.1.31:6385@16385 slave c2436c65625e1d74d8ea5bde328df04699d494e9 0 1700133224388 3 connected
    8. 89228357317c6b7d6850fffa2f0819085def1a2f 192.168.1.31:6382@16382 myself,master - 0 1700133223000 2 connected 5461-10922
    9. cd9a9149593770a920258bf75e1235ca4b904cd5 192.168.1.31:6381@16381 master,fail - 1700133123340 1700133116000 1 disconnected
    10. c2436c65625e1d74d8ea5bde328df04699d494e9 192.168.1.31:6383@16383 master - 0 1700133225412 3 connected 10923-16383
    11. 192.168.1.31:6386,成为master了,192.168.1.31:6381宕机了。
    12. # 可以正常查询数据
    13. 127.0.0.1:6382> get k1
    14. -> Redirected to slot [12706] located at 192.168.1.31:6383
    15. "v-cluster1"
    16. 192.168.1.31:6383> get k2
    17. -> Redirected to slot [449] located at 192.168.1.31:6386
    18. "v-cluster2"
    19. 192.168.1.31:6386> get k3
    20. "v3"
    21. 192.168.1.31:6386> get k4
    22. -> Redirected to slot [8455] located at 192.168.1.31:6382
    23. "v4"

    6.4:启动redis01

    [root@localhost redis]# docker start redis01

    6.5:查看redis 集群状况

    1. [root@localhost redis]# docker exec -it redis02 /bin/bash
    2. root@localhost:/data# redis-cli -p 6382 -c
    3. 127.0.0.1:6382> cluster nodes
    4. eac210d52a6c6ddeb9556ffa1820d13a89828264 192.168.1.31:6384@16384 slave 89228357317c6b7d6850fffa2f0819085def1a2f 0 1700134213000 2 connected
    5. 5b40728c470dac59556f7b51866e590e9038bbd9 192.168.1.31:6386@16386 master - 0 1700134213004 7 connected 0-5460
    6. d8f0436ada2c423bc07d8cba38461eb3bb00ca3a 192.168.1.31:6385@16385 slave c2436c65625e1d74d8ea5bde328df04699d494e9 0 1700134214020 3 connected
    7. 89228357317c6b7d6850fffa2f0819085def1a2f 192.168.1.31:6382@16382 myself,master - 0 1700134211000 2 connected 5461-10922
    8. cd9a9149593770a920258bf75e1235ca4b904cd5 192.168.1.31:6381@16381 slave 5b40728c470dac59556f7b51866e590e9038bbd9 0 1700134211000 7 connected
    9. c2436c65625e1d74d8ea5bde328df04699d494e9 192.168.1.31:6383@16383 master - 0 1700134212000 3 connected 10923-16383
    10. 6381成为slave,6386是master

    6.6:恢复成原来的 6381位master,6386为slave,只需要重启redis06

    1. docker stop redis06
    2. docker start redis06

    6.7:检查集群状况

    1. root@localhost:/data# redis-cli --cluster check 192.168.1.31:6381
    2. 192.168.1.31:6381 (cd9a9149...) -> 2 keys | 5461 slots | 1 slaves.
    3. 192.168.1.31:6383 (c2436c65...) -> 1 keys | 5461 slots | 1 slaves.
    4. 192.168.1.31:6382 (89228357...) -> 1 keys | 5462 slots | 1 slaves.
    5. [OK] 4 keys in 3 masters.
    6. 0.00 keys per slot on average.
    7. >>> Performing Cluster Check (using node 192.168.1.31:6381)
    8. M: cd9a9149593770a920258bf75e1235ca4b904cd5 192.168.1.31:6381
    9. slots:[0-5460] (5461 slots) master
    10. 1 additional replica(s)
    11. S: eac210d52a6c6ddeb9556ffa1820d13a89828264 192.168.1.31:6384
    12. slots: (0 slots) slave
    13. replicates 89228357317c6b7d6850fffa2f0819085def1a2f
    14. S: d8f0436ada2c423bc07d8cba38461eb3bb00ca3a 192.168.1.31:6385
    15. slots: (0 slots) slave
    16. replicates c2436c65625e1d74d8ea5bde328df04699d494e9
    17. S: 5b40728c470dac59556f7b51866e590e9038bbd9 192.168.1.31:6386
    18. slots: (0 slots) slave
    19. replicates cd9a9149593770a920258bf75e1235ca4b904cd5
    20. M: c2436c65625e1d74d8ea5bde328df04699d494e9 192.168.1.31:6383
    21. slots:[10923-16383] (5461 slots) master
    22. 1 additional replica(s)
    23. M: 89228357317c6b7d6850fffa2f0819085def1a2f 192.168.1.31:6382
    24. slots:[5461-10922] (5462 slots) master
    25. 1 additional replica(s)
    26. [OK] All nodes agree about slots configuration.
    27. >>> Check for open slots...
    28. >>> Check slots coverage...
    29. [OK] All 16384 slots covered.

    7:主从扩容,增加一个节点6387为master,一个节点6388为slave

    1. docker run -d --name redis07 --net host --privileged=true -v /opt/redis/redis07:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6387
    2. docker run -d --name redis08 --net host --privileged=true -v /opt/redis/redis08:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6388
    3. [root@localhost redis]# docker exec -it redis07 /bin/bash
    4. 将新增的6387作为master节点加入集群
    5. 6387就是将要作为master新增节点
    6. 6381就是原来集群节点里面的领导
    7. root@localhost:/data# redis-cli --cluster add-node 192.168.1.31:6387 192.168.1.31:6381
    8. >>> Adding node 192.168.1.31:6387 to cluster 192.168.1.31:6381
    9. >>> Performing Cluster Check (using node 192.168.1.31:6381)
    10. M: cd9a9149593770a920258bf75e1235ca4b904cd5 192.168.1.31:6381
    11. slots:[0-5460] (5461 slots) master
    12. 1 additional replica(s)
    13. S: eac210d52a6c6ddeb9556ffa1820d13a89828264 192.168.1.31:6384
    14. slots: (0 slots) slave
    15. replicates 89228357317c6b7d6850fffa2f0819085def1a2f
    16. S: d8f0436ada2c423bc07d8cba38461eb3bb00ca3a 192.168.1.31:6385
    17. slots: (0 slots) slave
    18. replicates c2436c65625e1d74d8ea5bde328df04699d494e9
    19. S: 5b40728c470dac59556f7b51866e590e9038bbd9 192.168.1.31:6386
    20. slots: (0 slots) slave
    21. replicates cd9a9149593770a920258bf75e1235ca4b904cd5
    22. M: c2436c65625e1d74d8ea5bde328df04699d494e9 192.168.1.31:6383
    23. slots:[10923-16383] (5461 slots) master
    24. 1 additional replica(s)
    25. M: 89228357317c6b7d6850fffa2f0819085def1a2f 192.168.1.31:6382
    26. slots:[5461-10922] (5462 slots) master
    27. 1 additional replica(s)
    28. [OK] All nodes agree about slots configuration.
    29. >>> Check for open slots...
    30. >>> Check slots coverage...
    31. [OK] All 16384 slots covered.
    32. >>> Send CLUSTER MEET to node 192.168.1.31:6387 to make it join the cluster.
    33. [OK] New node added correctly.
    34. root@localhost:/data# redis-cli --cluster check 192.168.1.31:6381
    35. 192.168.1.31:6381 (cd9a9149...) -> 2 keys | 5461 slots | 1 slaves.
    36. 192.168.1.31:6387 (f32e0d73...) -> 0 keys | 0 slots | 0 slaves.
    37. 192.168.1.31:6383 (c2436c65...) -> 1 keys | 5461 slots | 1 slaves.
    38. 192.168.1.31:6382 (89228357...) -> 1 keys | 5462 slots | 1 slaves.
    39. [OK] 4 keys in 4 masters.
    40. 0.00 keys per slot on average.
    41. >>> Performing Cluster Check (using node 192.168.1.31:6381)
    42. M: cd9a9149593770a920258bf75e1235ca4b904cd5 192.168.1.31:6381
    43. slots:[0-5460] (5461 slots) master
    44. 1 additional replica(s)
    45. M: f32e0d7320635a5873beb3594927ed6eea318976 192.168.1.31:6387
    46. slots: (0 slots) master
    47. S: eac210d52a6c6ddeb9556ffa1820d13a89828264 192.168.1.31:6384
    48. slots: (0 slots) slave
    49. replicates 89228357317c6b7d6850fffa2f0819085def1a2f
    50. S: d8f0436ada2c423bc07d8cba38461eb3bb00ca3a 192.168.1.31:6385
    51. slots: (0 slots) slave
    52. replicates c2436c65625e1d74d8ea5bde328df04699d494e9
    53. S: 5b40728c470dac59556f7b51866e590e9038bbd9 192.168.1.31:6386
    54. slots: (0 slots) slave
    55. replicates cd9a9149593770a920258bf75e1235ca4b904cd5
    56. M: c2436c65625e1d74d8ea5bde328df04699d494e9 192.168.1.31:6383
    57. slots:[10923-16383] (5461 slots) master
    58. 1 additional replica(s)
    59. M: 89228357317c6b7d6850fffa2f0819085def1a2f 192.168.1.31:6382
    60. slots:[5461-10922] (5462 slots) master
    61. 1 additional replica(s)
    62. [OK] All nodes agree about slots configuration.
    63. >>> Check for open slots...
    64. >>> Check slots coverage...
    65. [OK] All 16384 slots covered.
    66. 重新分配槽号:
    67. root@localhost:/data# redis-cli --cluster reshard 192.168.1.31:6381
    68. >>> Performing Cluster Check (using node 192.168.1.31:6381)
    69. M: cd9a9149593770a920258bf75e1235ca4b904cd5 192.168.1.31:6381
    70. slots:[0-6826],[10923-12287] (8192 slots) master
    71. 1 additional replica(s)
    72. M: f32e0d7320635a5873beb3594927ed6eea318976 192.168.1.31:6387
    73. slots: (0 slots) master
    74. S: eac210d52a6c6ddeb9556ffa1820d13a89828264 192.168.1.31:6384
    75. slots: (0 slots) slave
    76. replicates 89228357317c6b7d6850fffa2f0819085def1a2f
    77. S: d8f0436ada2c423bc07d8cba38461eb3bb00ca3a 192.168.1.31:6385
    78. slots: (0 slots) slave
    79. replicates c2436c65625e1d74d8ea5bde328df04699d494e9
    80. S: 5b40728c470dac59556f7b51866e590e9038bbd9 192.168.1.31:6386
    81. slots: (0 slots) slave
    82. replicates cd9a9149593770a920258bf75e1235ca4b904cd5
    83. M: c2436c65625e1d74d8ea5bde328df04699d494e9 192.168.1.31:6383
    84. slots:[12288-16383] (4096 slots) master
    85. 1 additional replica(s)
    86. M: 89228357317c6b7d6850fffa2f0819085def1a2f 192.168.1.31:6382
    87. slots:[6827-10922] (4096 slots) master
    88. 1 additional replica(s)
    89. [OK] All nodes agree about slots configuration.
    90. >>> Check for open slots...
    91. >>> Check slots coverage...
    92. [OK] All 16384 slots covered.
    93. How many slots do you want to move (from 1 to 16384)? 4096
    94. What is the receiving node ID? f32e0d7320635a5873beb3594927ed6eea318976 #6387的节点id
    95. Please enter all the source node IDs.
    96. Type 'all' to use all the nodes as source nodes for the hash slots.
    97. Type 'done' once you entered all the source nodes IDs.
    98. Source node #1: all #从其他3个主节点拿槽位
    99. root@localhost:/data# redis-cli --cluster check 192.168.1.31:6381
    100. 192.168.1.31:6381 (cd9a9149...) -> 1 keys | 4096 slots | 1 slaves.
    101. 192.168.1.31:6387 (f32e0d73...) -> 1 keys | 4096 slots | 0 slaves.
    102. 192.168.1.31:6383 (c2436c65...) -> 1 keys | 4096 slots | 1 slaves.
    103. 192.168.1.31:6382 (89228357...) -> 1 keys | 4096 slots | 1 slaves.
    104. [OK] 4 keys in 4 masters.
    105. 0.00 keys per slot on average.
    106. >>> Performing Cluster Check (using node 192.168.1.31:6381)
    107. M: cd9a9149593770a920258bf75e1235ca4b904cd5 192.168.1.31:6381
    108. slots:[1365-5460] (4096 slots) master
    109. 1 additional replica(s)
    110. M: f32e0d7320635a5873beb3594927ed6eea318976 192.168.1.31:6387
    111. slots:[0-1364],[5461-6826],[10923-12287] (4096 slots) master
    112. S: eac210d52a6c6ddeb9556ffa1820d13a89828264 192.168.1.31:6384
    113. slots: (0 slots) slave
    114. replicates 89228357317c6b7d6850fffa2f0819085def1a2f
    115. S: d8f0436ada2c423bc07d8cba38461eb3bb00ca3a 192.168.1.31:6385
    116. slots: (0 slots) slave
    117. replicates c2436c65625e1d74d8ea5bde328df04699d494e9
    118. S: 5b40728c470dac59556f7b51866e590e9038bbd9 192.168.1.31:6386
    119. slots: (0 slots) slave
    120. replicates cd9a9149593770a920258bf75e1235ca4b904cd5
    121. M: c2436c65625e1d74d8ea5bde328df04699d494e9 192.168.1.31:6383
    122. slots:[12288-16383] (4096 slots) master
    123. 1 additional replica(s)
    124. M: 89228357317c6b7d6850fffa2f0819085def1a2f 192.168.1.31:6382
    125. slots:[6827-10922] (4096 slots) master
    126. 1 additional replica(s)
    127. [OK] All nodes agree about slots configuration.
    128. >>> Check for open slots...
    129. >>> Check slots coverage...
    130. [OK] All 16384 slots covere
    131. 可以看到63873个新的区间,以前的还是连续?
    132. 重新分配成本太高,所以3家各匀出来一部分,从638163826383三个旧节点,分别匀出1364个槽位给新节点6387
    133. 6387 添加slave 6388,f32e0d7320635a5873beb3594927ed6eea3189766387的编号
    134. root@localhost:/data# redis-cli --cluster add-node 192.168.1.31:6388 192.168.1.31:6387 --cluster-slave --cluster-master-id f32e0d7320635a5873beb3594927ed6eea318976
    135. >>> Adding node 192.168.1.31:6388 to cluster 192.168.1.31:6387
    136. >>> Performing Cluster Check (using node 192.168.1.31:6387)
    137. M: f32e0d7320635a5873beb3594927ed6eea318976 192.168.1.31:6387
    138. slots:[0-1364],[5461-6826],[10923-12287] (4096 slots) master
    139. S: 5b40728c470dac59556f7b51866e590e9038bbd9 192.168.1.31:6386
    140. slots: (0 slots) slave
    141. replicates cd9a9149593770a920258bf75e1235ca4b904cd5
    142. M: c2436c65625e1d74d8ea5bde328df04699d494e9 192.168.1.31:6383
    143. slots:[12288-16383] (4096 slots) master
    144. 1 additional replica(s)
    145. M: 89228357317c6b7d6850fffa2f0819085def1a2f 192.168.1.31:6382
    146. slots:[6827-10922] (4096 slots) master
    147. 1 additional replica(s)
    148. M: cd9a9149593770a920258bf75e1235ca4b904cd5 192.168.1.31:6381
    149. slots:[1365-5460] (4096 slots) master
    150. 1 additional replica(s)
    151. S: eac210d52a6c6ddeb9556ffa1820d13a89828264 192.168.1.31:6384
    152. slots: (0 slots) slave
    153. replicates 89228357317c6b7d6850fffa2f0819085def1a2f
    154. S: d8f0436ada2c423bc07d8cba38461eb3bb00ca3a 192.168.1.31:6385
    155. slots: (0 slots) slave
    156. replicates c2436c65625e1d74d8ea5bde328df04699d494e9
    157. [OK] All nodes agree about slots configuration.
    158. >>> Check for open slots...
    159. >>> Check slots coverage...
    160. [OK] All 16384 slots covered.
    161. >>> Send CLUSTER MEET to node 192.168.1.31:6388 to make it join the cluster.
    162. Waiting for the cluster to join
    163. >>> Configure node as replica of 192.168.1.31:6387.
    164. [OK] New node added correctly.
    165. root@localhost:/data# redis-cli --cluster check 192.168.1.31:6381
    166. 192.168.1.31:6381 (cd9a9149...) -> 1 keys | 4096 slots | 1 slaves.
    167. 192.168.1.31:6387 (f32e0d73...) -> 1 keys | 4096 slots | 1 slaves.
    168. 192.168.1.31:6383 (c2436c65...) -> 1 keys | 4096 slots | 1 slaves.
    169. 192.168.1.31:6382 (89228357...) -> 1 keys | 4096 slots | 1 slaves.
    170. [OK] 4 keys in 4 masters.
    171. 0.00 keys per slot on average.
    172. >>> Performing Cluster Check (using node 192.168.1.31:6381)
    173. M: cd9a9149593770a920258bf75e1235ca4b904cd5 192.168.1.31:6381
    174. slots:[1365-5460] (4096 slots) master
    175. 1 additional replica(s)
    176. M: f32e0d7320635a5873beb3594927ed6eea318976 192.168.1.31:6387
    177. slots:[0-1364],[5461-6826],[10923-12287] (4096 slots) master
    178. 1 additional replica(s)
    179. S: eac210d52a6c6ddeb9556ffa1820d13a89828264 192.168.1.31:6384
    180. slots: (0 slots) slave
    181. replicates 89228357317c6b7d6850fffa2f0819085def1a2f
    182. S: d8f0436ada2c423bc07d8cba38461eb3bb00ca3a 192.168.1.31:6385
    183. slots: (0 slots) slave
    184. replicates c2436c65625e1d74d8ea5bde328df04699d494e9
    185. S: 5b40728c470dac59556f7b51866e590e9038bbd9 192.168.1.31:6386
    186. slots: (0 slots) slave
    187. replicates cd9a9149593770a920258bf75e1235ca4b904cd5
    188. M: c2436c65625e1d74d8ea5bde328df04699d494e9 192.168.1.31:6383
    189. slots:[12288-16383] (4096 slots) master
    190. 1 additional replica(s)
    191. S: a8fd323608979efd31be1222d281db20b250820b 192.168.1.31:6388
    192. slots: (0 slots) slave
    193. replicates f32e0d7320635a5873beb3594927ed6eea318976
    194. M: 89228357317c6b7d6850fffa2f0819085def1a2f 192.168.1.31:6382
    195. slots:[6827-10922] (4096 slots) master
    196. 1 additional replica(s)
    197. [OK] All nodes agree about slots configuration.
    198. >>> Check for open slots...
    199. >>> Check slots coverage...
    200. [OK] All 16384 slots covered.

    8:主从缩容,将6387、6388踢出集群,恢复3主3从

    1. 1:先清除从节点6388
    2. root@localhost:/data# redis-cli --cluster del-node 192.168.1.31:6388 a8fd323608979efd31be1222d281db20b250820b
    3. >>> Removing node a8fd323608979efd31be1222d281db20b250820b from cluster 192.168.1.31:6388
    4. >>> Sending CLUSTER FORGET messages to the cluster...
    5. >>> Sending CLUSTER RESET SOFT to the deleted node.
    6. root@localhost:/data#
    7. root@localhost:/data# redis-cli --cluster check 192.168.1.31:6381
    8. 192.168.1.31:6381 (cd9a9149...) -> 1 keys | 4096 slots | 1 slaves.
    9. 192.168.1.31:6387 (f32e0d73...) -> 1 keys | 4096 slots | 0 slaves.
    10. 192.168.1.31:6383 (c2436c65...) -> 1 keys | 4096 slots | 1 slaves.
    11. 192.168.1.31:6382 (89228357...) -> 1 keys | 4096 slots | 1 slaves.
    12. [OK] 4 keys in 4 masters.
    13. 0.00 keys per slot on average.
    14. >>> Performing Cluster Check (using node 192.168.1.31:6381)
    15. M: cd9a9149593770a920258bf75e1235ca4b904cd5 192.168.1.31:6381
    16. slots:[1365-5460] (4096 slots) master
    17. 1 additional replica(s)
    18. M: f32e0d7320635a5873beb3594927ed6eea318976 192.168.1.31:6387
    19. slots:[0-1364],[5461-6826],[10923-12287] (4096 slots) master
    20. S: eac210d52a6c6ddeb9556ffa1820d13a89828264 192.168.1.31:6384
    21. slots: (0 slots) slave
    22. replicates 89228357317c6b7d6850fffa2f0819085def1a2f
    23. S: d8f0436ada2c423bc07d8cba38461eb3bb00ca3a 192.168.1.31:6385
    24. slots: (0 slots) slave
    25. replicates c2436c65625e1d74d8ea5bde328df04699d494e9
    26. S: 5b40728c470dac59556f7b51866e590e9038bbd9 192.168.1.31:6386
    27. slots: (0 slots) slave
    28. replicates cd9a9149593770a920258bf75e1235ca4b904cd5
    29. M: c2436c65625e1d74d8ea5bde328df04699d494e9 192.168.1.31:6383
    30. slots:[12288-16383] (4096 slots) master
    31. 1 additional replica(s)
    32. M: 89228357317c6b7d6850fffa2f0819085def1a2f 192.168.1.31:6382
    33. slots:[6827-10922] (4096 slots) master
    34. 1 additional replica(s)
    35. [OK] All nodes agree about slots configuration.
    36. >>> Check for open slots...
    37. >>> Check slots coverage...
    38. [OK] All 16384 slots covered.
    39. 检查发现6388被删除了,只剩下7台redis
    40. 2:清理出来的槽号重新分配
    41. 6387的槽号清空,重新分配,本例将清出来的槽号都给6381
    42. root@localhost:/data# redis-cli --cluster reshard 192.168.1.31:6381
    43. >>> Performing Cluster Check (using node 192.168.1.31:6381)
    44. M: cd9a9149593770a920258bf75e1235ca4b904cd5 192.168.1.31:6381
    45. slots:[1365-5460] (4096 slots) master
    46. 1 additional replica(s)
    47. M: f32e0d7320635a5873beb3594927ed6eea318976 192.168.1.31:6387
    48. slots:[0-1364],[5461-6826],[10923-12287] (4096 slots) master
    49. S: eac210d52a6c6ddeb9556ffa1820d13a89828264 192.168.1.31:6384
    50. slots: (0 slots) slave
    51. replicates 89228357317c6b7d6850fffa2f0819085def1a2f
    52. S: d8f0436ada2c423bc07d8cba38461eb3bb00ca3a 192.168.1.31:6385
    53. slots: (0 slots) slave
    54. replicates c2436c65625e1d74d8ea5bde328df04699d494e9
    55. S: 5b40728c470dac59556f7b51866e590e9038bbd9 192.168.1.31:6386
    56. slots: (0 slots) slave
    57. replicates cd9a9149593770a920258bf75e1235ca4b904cd5
    58. M: c2436c65625e1d74d8ea5bde328df04699d494e9 192.168.1.31:6383
    59. slots:[12288-16383] (4096 slots) master
    60. 1 additional replica(s)
    61. M: 89228357317c6b7d6850fffa2f0819085def1a2f 192.168.1.31:6382
    62. slots:[6827-10922] (4096 slots) master
    63. 1 additional replica(s)
    64. [OK] All nodes agree about slots configuration.
    65. >>> Check for open slots...
    66. >>> Check slots coverage...
    67. [OK] All 16384 slots covered.
    68. How many slots do you want to move (from 1 to 16384)? 4096
    69. What is the receiving node ID? cd9a9149593770a920258bf75e1235ca4b904cd5 #6381节点id,用来接收空出来的槽号
    70. Source node #1: f32e0d7320635a5873beb3594927ed6eea318976 #6387节点id,被删除的那个
    71. Source node #2: done
    72. Moving slot 12284 from f32e0d7320635a5873beb3594927ed6eea318976
    73. Moving slot 12285 from f32e0d7320635a5873beb3594927ed6eea318976
    74. Moving slot 12286 from f32e0d7320635a5873beb3594927ed6eea318976
    75. Moving slot 12287 from f32e0d7320635a5873beb3594927ed6eea318976
    76. Do you want to proceed with the proposed reshard plan (yes/no)? yes
    77. Moving slot 12284 from 192.168.1.31:6387 to 192.168.1.31:6381:
    78. Moving slot 12285 from 192.168.1.31:6387 to 192.168.1.31:6381:
    79. Moving slot 12286 from 192.168.1.31:6387 to 192.168.1.31:6381:
    80. Moving slot 12287 from 192.168.1.31:6387 to 192.168.1.31:6381:
    81. root@localhost:/data# redis-cli --cluster check 192.168.1.31:6381
    82. 192.168.1.31:6381 (cd9a9149...) -> 2 keys | 8192 slots | 1 slaves.
    83. 192.168.1.31:6387 (f32e0d73...) -> 0 keys | 0 slots | 0 slaves.
    84. 192.168.1.31:6383 (c2436c65...) -> 1 keys | 4096 slots | 1 slaves.
    85. 192.168.1.31:6382 (89228357...) -> 1 keys | 4096 slots | 1 slaves.
    86. [OK] 4 keys in 4 masters.
    87. 0.00 keys per slot on average.
    88. >>> Performing Cluster Check (using node 192.168.1.31:6381)
    89. M: cd9a9149593770a920258bf75e1235ca4b904cd5 192.168.1.31:6381
    90. slots:[0-6826],[10923-12287] (8192 slots) master
    91. 1 additional replica(s)
    92. M: f32e0d7320635a5873beb3594927ed6eea318976 192.168.1.31:6387
    93. slots: (0 slots) master
    94. S: eac210d52a6c6ddeb9556ffa1820d13a89828264 192.168.1.31:6384
    95. slots: (0 slots) slave
    96. replicates 89228357317c6b7d6850fffa2f0819085def1a2f
    97. S: d8f0436ada2c423bc07d8cba38461eb3bb00ca3a 192.168.1.31:6385
    98. slots: (0 slots) slave
    99. replicates c2436c65625e1d74d8ea5bde328df04699d494e9
    100. S: 5b40728c470dac59556f7b51866e590e9038bbd9 192.168.1.31:6386
    101. slots: (0 slots) slave
    102. replicates cd9a9149593770a920258bf75e1235ca4b904cd5
    103. M: c2436c65625e1d74d8ea5bde328df04699d494e9 192.168.1.31:6383
    104. slots:[12288-16383] (4096 slots) master
    105. 1 additional replica(s)
    106. M: 89228357317c6b7d6850fffa2f0819085def1a2f 192.168.1.31:6382
    107. slots:[6827-10922] (4096 slots) master
    108. 1 additional replica(s)
    109. [OK] All nodes agree about slots configuration.
    110. >>> Check for open slots...
    111. >>> Check slots coverage...
    112. [OK] All 16384 slots covered.
    113. 63874096个槽位都给6381了,63818192个槽位了
    114. 3:再删除6387
    115. root@localhost:/data# redis-cli --cluster del-node 192.168.1.31:6387 f32e0d7320635a5873beb3594927ed6eea318976
    116. >>> Removing node f32e0d7320635a5873beb3594927ed6eea318976 from cluster 192.168.1.31:6387
    117. >>> Sending CLUSTER FORGET messages to the cluster...
    118. >>> Sending CLUSTER RESET SOFT to the deleted node.
    119. 4:恢复成33
    120. root@localhost:/data# redis-cli --cluster check 192.168.1.31:6381
    121. 192.168.1.31:6381 (cd9a9149...) -> 2 keys | 8192 slots | 1 slaves.
    122. 192.168.1.31:6383 (c2436c65...) -> 1 keys | 4096 slots | 1 slaves.
    123. 192.168.1.31:6382 (89228357...) -> 1 keys | 4096 slots | 1 slaves.
    124. [OK] 4 keys in 3 masters.
    125. 0.00 keys per slot on average.
    126. >>> Performing Cluster Check (using node 192.168.1.31:6381)
    127. M: cd9a9149593770a920258bf75e1235ca4b904cd5 192.168.1.31:6381
    128. slots:[0-6826],[10923-12287] (8192 slots) master
    129. 1 additional replica(s)
    130. S: eac210d52a6c6ddeb9556ffa1820d13a89828264 192.168.1.31:6384
    131. slots: (0 slots) slave
    132. replicates 89228357317c6b7d6850fffa2f0819085def1a2f
    133. S: d8f0436ada2c423bc07d8cba38461eb3bb00ca3a 192.168.1.31:6385
    134. slots: (0 slots) slave
    135. replicates c2436c65625e1d74d8ea5bde328df04699d494e9
    136. S: 5b40728c470dac59556f7b51866e590e9038bbd9 192.168.1.31:6386
    137. slots: (0 slots) slave
    138. replicates cd9a9149593770a920258bf75e1235ca4b904cd5
    139. M: c2436c65625e1d74d8ea5bde328df04699d494e9 192.168.1.31:6383
    140. slots:[12288-16383] (4096 slots) master
    141. 1 additional replica(s)
    142. M: 89228357317c6b7d6850fffa2f0819085def1a2f 192.168.1.31:6382
    143. slots:[6827-10922] (4096 slots) master
    144. 1 additional replica(s)
    145. [OK] All nodes agree about slots configuration.
    146. >>> Check for open slots...
    147. >>> Check slots coverage...
    148. [OK] All 16384 slots covered.

  • 相关阅读:
    nginx端口映射后,跳转带的是内网端口而不是内网端口
    flink 处理IOT数据
    2023汕头大学计算机考研信息汇总
    plt 画图不显示label
    HTML期末学生大作业-节日网页作业html+css+javascript
    makefile & dockerfile
    轮转数组问题:如何实现数组“整体逆序,内部有序”?“三步转换法”妙转数组
    8月汽车销量出炉:问界破万,智己破千,理想腰斩!埃安近创新高
    机器学习中参数优化调试方法
    .NET开源功能强大的串口调试工具
  • 原文地址:https://blog.csdn.net/zhanglei_16/article/details/134450914