最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Redis Cluster集群增加和刪除節(jié)點方式

 更新時間:2026年06月04日 15:38:50   作者:一線大碼  
本文詳細介紹了如何在Redis集群中添加和刪除節(jié)點,包括啟動新節(jié)點、分配槽位、設置從節(jié)點等操作步驟,通過這些步驟,確保Redis集群的穩(wěn)定性和高效性

1. 添加節(jié)點

目前集群由三臺服務器 11、12、13,共六個 redis 實例構成,每臺服務器上兩個 redis 實例(6379 和 6380)。 現(xiàn)在需要新增一臺服務器 10,再安裝兩個 redis 實例,一主一備。

默認新服務器上兩個 redis 都配置完畢了,不明白的可以參考:Redis Cluster 集群搭建。

1.1. 啟動新節(jié)點

登錄新服務器10,分別啟動 6379 和 6380 兩個 redis 服務:

[test@node-10 6379]$ /usr/local/redis/bin/redis-server redis.conf 
[test@node-10 6380]$ /usr/local/redis/bin/redis-server redis.conf

查看 redis 進程:

[test@node-10 6379]$ ps -ef|grep redis
test     137409      1  0 15:18 ?        00:00:00 /usr/local/redis/bin/redis-server 0.0.0.0:6380 [cluster]
test     137510      1  0 15:19 ?        00:00:00 /usr/local/redis/bin/redis-server 0.0.0.0:6379 [cluster]
test     137524 130159  0 15:19 pts/0    00:00:00 grep --color=auto redis

登錄 6379 服務,查看集群節(jié)點信息,可以發(fā)現(xiàn)該集群只有 6379 一個 master。6380 也是一樣的。

[test@node-10 bin]$ redis-cli -p 6379 -c -a test
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6379> cluster nodes
36efcd23eecc5c4238711c4e680026fea1a71e6d :6379@16379 myself,master - 0 0 0 connected
127.0.0.1:6379> 

接下來需要將這兩個節(jié)點加入到集群中。

1.2. 添加主節(jié)點

任意連接一臺集群中的節(jié)點,比如我們連接 11 的 6379,然后使用cluster meet將 10 上的 6379 和 6380 添加到集群中。

[test@node-11 bin]$ redis-cli -p 6379 -c -a test
127.0.0.1:6379> cluster meet 192.168.50.10 6379
OK
127.0.0.1:6379> cluster meet 192.168.50.10 6380
OK
127.0.0.1:6379> cluster nodes
#這里信息沒記錄下來,省略了。。。

使用cluster nodes查看集群節(jié)點節(jié)點,可以發(fā)現(xiàn),10 上的 6379 和 6380 已經添加到集群中了,此時這兩個新添加的都是 master 節(jié)點,并且槽位數(shù)都是 0。

分配槽位

接下來我們使用cluster reshard給 10 上的 6379 節(jié)點分配槽位。

[test@node-10 bin]$ redis-cli --cluster reshard 192.168.50.10:6379 -a test

接下來需要輸入的內容:

  1. 算出來每個 master 的槽數(shù):4096(原本三個 master,加一個變四個 maste,16384/4=4096)。
  2. 填寫接收槽位的節(jié)點 ID:36efcd23eecc5c4238711c4e680026fea1a71e6d。
  3. 填寫槽位來源節(jié)點 Source node 為 all,表示從其他所有 master 節(jié)點遷移槽位。

到這里就成功添加了一個 master 節(jié)點(10 上的 6379),并分配了相應的槽位。此時 10 上的 6380 還是一個沒有槽位的 master 節(jié)點。

1.3. 設置從節(jié)點

將 10 上的 6380 設置為 10 上 6379 的從節(jié)點,登錄 6380:

[test@node-10 bin]$ redis-cli -p 6380 -c -a test
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6380> 

接下來使用cluster replicate + 主節(jié)點ID(指定主節(jié)點,10 上的 6379)就能指定當前節(jié)點為目標節(jié)點的從節(jié)點:

127.0.0.1:6380> cluster replicate 36efcd23eecc5c4238711c4e680026fea1a71e6d
OK
127.0.0.1:6380> cluster nodes
ec6307189da48a8af1c0b168f7500a59f747289e 192.168.50.10:6380@16380 myself,slave 36efcd23eecc5c4238711c4e680026fea1a71e6d 0 1626768925000 8 connected
0d5151b0d0e118e61e66d70e703c84a2d7916840 192.168.50.12:6379@16379 slave 0d8423b0f03adcd631ca40f9d0cda8ec55c7b1bd 0 1626768926000 7 connected
f899962300bb50d262d99503940ee1e5c41834d9 192.168.50.12:6380@16380 slave 511307ead0b85f35358d29b67b63d6967a77c7f5 0 1626768925898 1 connected
5252c7984ddd554d95cb909eb76f769d17ad289f 192.168.50.13:6379@16379 master - 0 1626768925000 5 connected 12288-16383
0d8423b0f03adcd631ca40f9d0cda8ec55c7b1bd 192.168.50.13:6380@16380 master - 0 1626768926600 7 connected 6827-10922
36efcd23eecc5c4238711c4e680026fea1a71e6d 192.168.50.10:6379@16379 master - 0 1626768925000 8 connected 0-1364 5461-6826 10923-12287
66a4721bb8da139a9e8881a6681e47aeca3bfea0 192.168.50.11:6380@16380 slave 5252c7984ddd554d95cb909eb76f769d17ad289f 0 1626768926000 5 connected
511307ead0b85f35358d29b67b63d6967a77c7f5 192.168.58.11:6379@16379 master - 0 1626768925000 1 connected 1365-5460
127.0.0.1:6380> 

到此就將新服務器 10 上的兩個新增 redis 服務 6379 和 6380 成功添加到了已有的 redis cluster 中了。目前集群共有四臺服務器,共八個 redis 服務,四主四從。

2. 刪除節(jié)點

目前集群由四臺服務器 10、11、12、13,共八個 redis 實例構成,每臺服務器上兩個 redis 實例。 需要刪除一臺服務器 13,也就是要從集群中刪除一主一從兩個 redis 服務。

2.1. 刪除從節(jié)點

現(xiàn)在發(fā)現(xiàn)是 13 機器上兩個 redis 服務都是 master 節(jié)點,然后發(fā)現(xiàn) 11 上兩個都是 slave 節(jié)點,那么我們就要先將 11 的一個 slave 提升為 master,13 的一個 master 降級為 slave。

發(fā)現(xiàn)恰好 11 的一個 slave 服務的 master 就是 13 的一個 redis 服務。這里就比較簡單了,可以直接 kill 掉 13 上的那個 master 服務,這樣 11 上的那個 slave 就會自動提升為 master 了。然后再啟動 13 上的 那個 master ,會發(fā)現(xiàn)它已經變?yōu)?slave 了。

[test@node-13 bin]$ ps -ef|grep redis
test     148079      1  4 Jun04 ?        2-03:22:25 ../bin/redis-server 0.0.0.0:6379 [cluster]
test     148555      1  3 Jun04 ?        1-10:35:36 ../bin/redis-server 0.0.0.0:6380 [cluster]
test     226206  63593  0 16:39 pts/3    00:00:00 grep --color=auto redis
[test@node-13 bin]$ kill -9 148555
[test@node-13 bin]$ ps -ef|grep redis
test     148079      1  4 Jun04 ?        2-03:22:26 ../bin/redis-server 0.0.0.0:6379 [cluster]
test     226335  63593  0 16:42 pts/3    00:00:00 grep --color=auto redis
[test@node-13 6380]$ ../bin/redis-server redis.conf
[test@node-13 6380]$ ps -ef|grep redis
test     148079      1  4 Jun04 ?        2-03:22:29 ../bin/redis-server 0.0.0.0:6379 [cluster]
test     226582      1 95 16:47 ?        00:00:35 ../bin/redis-server 0.0.0.0:6380 [cluster]
test     226618  63593  0 16:47 pts/3    00:00:00 grep --color=auto redis

查看集群節(jié)點信息:

127.0.0.1:6380> cluster nodes
ec6307189da48a8af1c0b168f7500a59f747289e 192.168.50.10:6380@16380 myself,slave 36efcd23eecc5c4238711c4e680026fea1a71e6d 0 1626770883000 8 connected
0d5151b0d0e118e61e66d70e703c84a2d7916840 192.168.50.12:6379@16379 master - 0 1626770882000 9 connected 6827-10922
f899962300bb50d262d99503940ee1e5c41834d9 192.168.50.12:6380@16380 slave 511307ead0b85f35358d29b67b63d6967a77c7f5 0 1626770882504 1 connected
5252c7984ddd554d95cb909eb76f769d17ad289f 192.168.50.13:6379@16379 master - 0 1626770882000 5 connected 12288-16383
0d8423b0f03adcd631ca40f9d0cda8ec55c7b1bd 192.168.50.13:6380@16380 slave 0d5151b0d0e118e61e66d70e703c84a2d7916840 0 1626770881000 9 connected
36efcd23eecc5c4238711c4e680026fea1a71e6d 192.168.50.10:6379@16379 master - 0 1626770882000 8 connected 0-1364 5461-6826 10923-12287
66a4721bb8da139a9e8881a6681e47aeca3bfea0 192.168.50.11:6380@16380 slave 5252c7984ddd554d95cb909eb76f769d17ad289f 0 1626770882002 5 connected
511307ead0b85f35358d29b67b63d6967a77c7f5 192.168.50.11:6379@16379 master - 0 1626770883005 1 connected 1365-5460

現(xiàn)在可以刪除從節(jié)點了(直接刪除從節(jié)點其實也就這一步即可),0d8423b0f03adcd631ca40f9d0cda8ec55c7b1bd為要刪除的從節(jié)點的 ID。

[test@node-10 bin]$ redis-cli --cluster del-node 192.168.50.10:6379 0d8423b0f03adcd631ca40f9d0cda8ec55c7b1bd -a test
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
>>> Removing node 0d8423b0f03adcd631ca40f9d0cda8ec55c7b1bd from cluster 192.168.50.10:6379
>>> Sending CLUSTER FORGET messages to the cluster...
>>> Sending CLUSTER RESET SOFT to the deleted node.
[test@node-10 bin]$ 

2.2. 刪除主節(jié)點

13 上的剩余的這個主節(jié)點的從節(jié)點為 11 上的一個 slave?,F(xiàn)在需要將 11 上這個 slave 指定為 11 上 master 的 slave(11 上這個 master 目前還沒有 slave)。

所以我們登錄服務器 11 上的 6380(slave),重新指定其 master:

[test@node-11 bin]$ redis-cli -p 6380 -c -a test
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6380> cluster nodes
ec6307189da48a8af1c0b168f7500a59f747289e 192.168.50.10:6380@16380 slave 36efcd23eecc5c4238711c4e680026fea1a71e6d 0 1626771404000 8 connected
0d5151b0d0e118e61e66d70e703c84a2d7916840 192.168.50.12:6379@16379 master - 0 1626771404530 9 connected 6827-10922
66a4721bb8da139a9e8881a6681e47aeca3bfea0 192.168.50.11:6380@16380 myself,slave 5252c7984ddd554d95cb909eb76f769d17ad289f 0 1626771403000 5 connected
511307ead0b85f35358d29b67b63d6967a77c7f5 192.168.50.11:6379@16379 master - 0 1626771405000 1 connected 1365-5460
36efcd23eecc5c4238711c4e680026fea1a71e6d 192.168.50.10:6379@16379 master - 0 1626771405132 8 connected 0-1364 5461-6826 10923-12287
f899962300bb50d262d99503940ee1e5c41834d9 192.168.50.12:6380@16380 slave 511307ead0b85f35358d29b67b63d6967a77c7f5 0 1626771404000 1 connected
5252c7984ddd554d95cb909eb76f769d17ad289f 192.168.50.13:6379@16379 master - 0 1626771404530 5 connected 12288-16383
127.0.0.1:6380> cluster replicate 0d5151b0d0e118e61e66d70e703c84a2d7916840
OK
127.0.0.1:6380> cluster nodes
ec6307189da48a8af1c0b168f7500a59f747289e 192.168.50.10:6380@16380 slave 36efcd23eecc5c4238711c4e680026fea1a71e6d 0 1626771451000 8 connected
0d5151b0d0e118e61e66d70e703c84a2d7916840 192.168.50.12:6379@16379 master - 0 1626771451000 9 connected 6827-10922
66a4721bb8da139a9e8881a6681e47aeca3bfea0 192.168.50.11:6380@16380 myself,slave 0d5151b0d0e118e61e66d70e703c84a2d7916840 0 1626771448000 9 connected
511307ead0b85f35358d29b67b63d6967a77c7f5 192.168.50.11:6379@16379 master - 0 1626771451000 1 connected 1365-5460
36efcd23eecc5c4238711c4e680026fea1a71e6d 192.168.50.10:6379@16379 master - 0 1626771450988 8 connected 0-1364 5461-6826 10923-12287
f899962300bb50d262d99503940ee1e5c41834d9 192.168.50.12:6380@16380 slave 511307ead0b85f35358d29b67b63d6967a77c7f5 0 1626771451489 1 connected
5252c7984ddd554d95cb909eb76f769d17ad289f 192.168.50.13:6379@16379 master - 0 1626771451000 5 connected 12288-16383

接下來我們需要重新分配要刪除的 13 上 master 的槽位 12288-16383。其實就是使用cluster reshard將該 master 上的槽位數(shù)分配給其他的 master,這里我們直接分配到 10 上的一個master 上,操作方法可以參考上面,這里可以看到操作結果:

127.0.0.1:6380> cluster nodes
ec6307189da48a8af1c0b168f7500a59f747289e 192.168.50.10:6380@16380 myself,slave 36efcd23eecc5c4238711c4e680026fea1a71e6d 0 1626772034000 10 connected
0d5151b0d0e118e61e66d70e703c84a2d7916840 192.168.50.12:6379@16379 master - 0 1626772035000 9 connected 6827-10922
f899962300bb50d262d99503940ee1e5c41834d9 192.168.50.12:6380@16380 slave 511307ead0b85f35358d29b67b63d6967a77c7f5 0 1626772034867 1 connected
5252c7984ddd554d95cb909eb76f769d17ad289f 192.168.50.13:6379@16379 master - 0 1626772034567 5 connected
36efcd23eecc5c4238711c4e680026fea1a71e6d 192.168.50.10:6379@16379 master - 0 1626772033865 10 connected 0-1364 5461-6826 10923-16383
66a4721bb8da139a9e8881a6681e47aeca3bfea0 192.168.50.11:6380@16380 slave 0d5151b0d0e118e61e66d70e703c84a2d7916840 0 1626772035000 9 connected
511307ead0b85f35358d29b67b63d6967a77c7f5 192.168.50.11:6379@16379 master - 0 1626772034000 1 connected 1365-5460

可以發(fā)現(xiàn) 13 的 master 節(jié)點上已經沒有槽位了,而 10 上的 master 槽位數(shù)增加了。

接下來直接刪除 13 上這個主節(jié)點就可以了:

[test@node-13 bin]$ redis-cli --cluster del-node 127.0.0.1:6379 5252c7984ddd554d95cb909eb76f769d17ad289f -a test
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
>>> Removing node 5252c7984ddd554d95cb909eb76f769d17ad289f from cluster 127.0.0.1:6379
>>> Sending CLUSTER FORGET messages to the cluster...
>>> Sending CLUSTER RESET SOFT to the deleted node.
[test@node-13 bin]$ 

3. 最終結果

將 192.168.50.13 上的 6379 和 6380 從集群中移除了,然后新增了 192.168.50.10 上的 6379 和 6380 到集群中。

[test@node-11 bin]$ redis-cli --cluster info 192.168.58.11:6379 -a test
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.50.11:6379 (511307ea...) -> 206141 keys | 4096 slots | 1 slaves.
192.168.50.10:6379 (36efcd23...) -> 411127 keys | 8192 slots | 1 slaves.
192.168.50.12:6379 (0d5151b0...) -> 205536 keys | 4096 slots | 1 slaves.
[OK] 822804 keys in 3 masters.
50.22 keys per slot on average.
[test@node-11 bin]$ 

發(fā)現(xiàn)槽位數(shù)不均勻,我們需要重新均勻分配下槽位數(shù):

[test@node-10 bin]$ redis-cli --cluster reshard 192.168.50.10:6379 -a test
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
>>> Performing Cluster Check (using node 192.168.50.10:6379)
M: 36efcd23eecc5c4238711c4e680026fea1a71e6d 192.168.50.10:6379
   slots:[5461-6826],[10923-16383] (6827 slots) master
   1 additional replica(s)
S: f899962300bb50d262d99503940ee1e5c41834d9 192.168.50.12:6380
   slots: (0 slots) slave
   replicates 511307ead0b85f35358d29b67b63d6967a77c7f5
M: 0d5151b0d0e118e61e66d70e703c84a2d7916840 192.168.50.12:6379
   slots:[0-1364],[6827-10922] (5461 slots) master
   1 additional replica(s)
S: 66a4721bb8da139a9e8881a6681e47aeca3bfea0 192.168.50.11:6380
   slots: (0 slots) slave
   replicates 0d5151b0d0e118e61e66d70e703c84a2d7916840
S: ec6307189da48a8af1c0b168f7500a59f747289e 192.168.50.10:6380
   slots: (0 slots) slave
   replicates 36efcd23eecc5c4238711c4e680026fea1a71e6d
M: 511307ead0b85f35358d29b67b63d6967a77c7f5 192.168.50.11:6379
   slots:[1365-5460] (4096 slots) master
   1 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
How many slots do you want to move (from 1 to 16384)? 1365
What is the receiving node ID? 511307ead0b85f35358d29b67b63d6967a77c7f5
Please enter all the source node IDs.
  Type 'all' to use all the nodes as source nodes for the hash slots.
  Type 'done' once you entered all the source nodes IDs.
Source node #1: 36efcd23eecc5c4238711c4e680026fea1a71e6d
Source node #2: done

需要輸入:需要遷移的槽位數(shù),接收槽位的節(jié)點 ID,提供槽位的節(jié)點 ID,done。

執(zhí)行兩次,分別將 1356 個槽位從 10 的 master 遷移到 11 的 master 和 12 的 master。均勻后的結果:

[test@node-10 bin]$ redis-cli --cluster info 192.168.50.10:6379 -a test
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.50.10:6379 (36efcd23...) -> 261787 keys | 5462 slots | 1 slaves.
192.168.50.12:6379 (0d5151b0...) -> 261514 keys | 5461 slots | 1 slaves.
192.168.50.11:6379 (511307ea...) -> 262509 keys | 5461 slots | 1 slaves.
[OK] 785810 keys in 3 masters.
47.96 keys per slot on average.
[test@node-10 bin]$ 

可以看出已經很均勻了。

其實類似于這種要刪除一個節(jié)點,并新增一個節(jié)點的需求。完全可以直接在新節(jié)點分配槽位的時候直接將要刪除的節(jié)點的槽位遷移過來即可,沒必要這么復雜的。這次操作后才醒悟過來。下次遇到類似的需求可以試試。

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • redis中hiredis-API函數(shù)的調用方法

    redis中hiredis-API函數(shù)的調用方法

    這篇文章主要介紹了redis中hiredis-API函數(shù)的調用,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-09-09
  • 詳解如何清理redis集群的所有數(shù)據

    詳解如何清理redis集群的所有數(shù)據

    這篇文章主要介紹了詳解如何清理redis集群的所有數(shù)據,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • SpringBoot 集成Redis 過程

    SpringBoot 集成Redis 過程

    redis是一個開源的、使用C語言編寫的、支持網絡交互的、可基于內存也可持久化的Key-Value數(shù)據庫。本文給大家介紹SpringBoot 集成Redis 過程,感興趣的朋友一起看看吧
    2021-06-06
  • Redis簡易延時隊列的實現(xiàn)示例

    Redis簡易延時隊列的實現(xiàn)示例

    在實際的業(yè)務場景中,經常會遇到需要延時處理的業(yè)務,本文就來介紹有下Redis簡易延時隊列的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下
    2023-12-12
  • windows下通過批處理腳本啟動redis的操作

    windows下通過批處理腳本啟動redis的操作

    本文主要給大家介紹了windows下通過批處理腳本啟動redis的操作,windows下redis啟動,需要進入redis安裝目錄,然后shift+右鍵,選擇“在此處打開命令窗口”,然后輸入redis-server.exe redis.conf,就可以啟動redis了,文中有詳細的圖文參考,感興趣的朋友可以參考下
    2023-12-12
  • WINDOWS中REDIS主從配置實現(xiàn)代碼解析

    WINDOWS中REDIS主從配置實現(xiàn)代碼解析

    這篇文章主要介紹了WINDOWS中REDIS主從配置實現(xiàn)代碼解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • 基于Redis延遲隊列的實現(xiàn)代碼

    基于Redis延遲隊列的實現(xiàn)代碼

    在生活中很多時候都會用到延遲隊列,本文基于Redis延遲隊列的實現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • 詳解Redis緩存穿透/擊穿/雪崩原理及其解決方案

    詳解Redis緩存穿透/擊穿/雪崩原理及其解決方案

    緩存可以比喻為防彈衣,但如果沒有使用好這個防彈衣效果就會適得其反,所以要更好的使用緩存才能發(fā)揮出它的作用。本文詳細講解了緩存穿透/擊穿/雪崩以及其解決方法,感興趣的小伙伴可以學習一下這篇文章
    2021-09-09
  • Redis模糊查詢的幾種實現(xiàn)方法

    Redis模糊查詢的幾種實現(xiàn)方法

    本文主要介紹了Redis模糊查詢的幾種實現(xiàn)方法,包括兩種方法KEYS , SCAN,具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • Redis?搭建主從集群的操作指南

    Redis?搭建主從集群的操作指南

    單節(jié)點的?Redis?并發(fā)能力有限,要進一步提高?Redis?的并發(fā)能力,就需要搭建主從集群,實現(xiàn)讀寫分離,這篇文章主要給大家介紹了Redis搭建主從集群的操作指南,需要的朋友可以參考下
    2023-08-08

最新評論

同仁县| 怀来县| 泰顺县| 宣恩县| 桂东县| 安阳县| 黄平县| 宝坻区| 郯城县| 涿鹿县| 十堰市| 巧家县| 吐鲁番市| 衡阳市| 昭通市| 贵港市| 即墨市| 郴州市| 沙坪坝区| 枣庄市| 南城县| 牟定县| 咸丰县| 西藏| 沾益县| 章丘市| 上林县| 乌拉特中旗| 衡阳市| 东方市| 湖南省| 徐州市| 都匀市| 三门峡市| 三明市| 榆社县| 衡阳县| 邹平县| 湖州市| 仙游县| 红河县|