1. 程式人生 > >Redis-5.0.0叢集配置

Redis-5.0.0叢集配置

版本:redis-5.0.0

參考:http://redis.io/topics/cluster-tutorial

叢集部署互動式命令列工具:https://github.com/eyjian/redis-tools/tree/master/deploy

叢集運維命令列工具:https://github.com/eyjian/redis-tools/tree/master

批量操作工具:https://github.com/eyjian/libmooon/releases

 

目錄

目錄 1

1. 前言 2

2. 名詞解釋 2

3. 部署計劃 2

4. 修改系統引數 3

4.1. 修改最大可開啟檔案數 3

4.2. TCP監聽佇列大小 4

4.3. OOM相關:vm.overcommit_memory 4

4.4. /sys/kernel/mm/transparent_hugepage/enabled 4

5. 目錄結構 4

6. 編譯安裝 5

7. 配置redis 5

8. 啟動redis例項 9

9. 建立和啟動redis叢集 10

9.1. 建立redis cluster 10

9.2. ps aux|grep redis 12

10. redis cluster client 12

10.1. 命令列工具redis-cli 12

10.2. 從slaves讀資料 13

10.3. jedis(java cluster client) 13

10.4. r3c(C++ cluster client) 13

11. 新增節點 13

11.1. 新增一個新主(master)節點 13

11.2. 新增一個新從(slave)節點 15

12. 刪除節點 16

13. master機器硬體故障 16

14. 檢查節點狀態 16

15. 變更主從關係 17

16. slots相關命令 17

17. 遷移slosts 17

18. 人工主備切換 18

19. 檢視叢集資訊 19

20. 禁止指定命令 19

21. 資料遷移 20

22. 各版本配置檔案 20

23. 大壓力下Redis引數調整要點 20

24. 問題排查 22

 

1. 前言

本文件基於以前寫的《Redis-3.0.5叢集配置》和《Redis-4.0.11叢集配置》。

redis-3.0.0開始支援叢集,redis-4.0.0開始支援module,redis-5.0.0開始支援類似於kafka那樣的訊息佇列。

本文參考官方文件而成:http://redis.io/topics/cluster-tutorial,不適用redis-5.0.0以下版本,原因是從redis-5.0.0版本開始,redis-trib.rb的功能被redis-cli替代了。

redis-5.0.0以下版本的安裝和部署,可參考:https://blog.csdn.net/Aquester/article/details/50150163

redis運維工具和部署工具:https://github.com/eyjian/redis-tools

2. 名詞解釋

名詞

解釋

ASAP

As Soon As Possible,儘可能

RESP

Redis Serialization Protocol,redis的序列化協議

3. 部署計劃

redis要求至少三主三從共6個節點才能組成redis叢集,測試環境可一臺物理上啟動6個redis節點,但生產環境至少要準備3臺物理機。

服務埠

IP地址

配置檔名

6381

192.168.0.251

redis-6381.conf

6382

192.168.0.251

redis-6382.conf

6383

192.168.0.251

redis-6383.conf

6384

192.168.0.251

redis-6384.conf

6385

192.168.0.251

redis-6385.conf

6386

192.168.0.251

redis-6386.conf

 

疑問:如果是3臺物理機,會不會主和從節點分佈在同一個物理機上?

4. 修改系統引數

4.1. 修改最大可開啟檔案數

修改檔案/etc/security/limits.conf,加入以下兩行:

* soft nofile 102400

* hard nofile 102400

 

# End of file

 

其中102400為一個程序最大可以開啟的檔案個數,當與RedisServer的連線數多時,需要設定為合適的值。

有些環境修改後,root使用者需要重啟機器才生效,而普通使用者重新登入後即生效。如果是crontab,則需要重啟crontab,如:service crond restart,有些平臺可能是service cron restart。

有些環境下列設定即可讓root重新登入即生效,而不用重啟機器:

root soft nofile 102400

root hard nofile 102400

 

# End of file

 

但是要小心,有些環境上面這樣做,可能導致無法ssh登入,所以在修改時最好開啟兩個視窗,萬一登入不了還可自救。

如何確認更改對一個程序生效?按下列方法(其中$PID為被查的程序ID):

$ cat /proc/$PID/limits

 

系統關於/etc/security/limits.conf檔案的說明:

#This file sets the resource limits for the users logged in via PAM.

#It does not affect resource limits of the system services.

 

PAM:全稱“Pluggable Authentication Modules”,中文名“插入式認證模組”。/etc/security/limits.conf實際為pam_limits.so(位置:/lib/security/pam_limits.so)的配置檔案,只針對單個會話。要使用limits.conf生效,必須保證pam_limits.so被加入到了啟動檔案中。

註釋說明只對通過PAM登入的使用者生效,與PAM相關的檔案(均位於/etc/pam.d目錄下):

/etc/pam.d/login

/etc/pam.d/sshd

/etc/pam.d/crond

 

如果需要設定Linux使用者的密碼策略,可以修改檔案/etc/login.defs,但這個只對新增的使用者有效,如果要影響已有使用者,可使用命令chage。

4.2. TCP監聽佇列大小

即TCP listen的backlog大小,“/proc/sys/net/core/somaxconn”的預設值一般較小如128,需要修改大一點,比如改成32767。立即生效還可以使用命令:sysctl -w net.core.somaxconn=32767。

要想永久生效,需要在檔案/etc/sysctl.conf中增加一行:net.core.somaxconn = 32767,然後執行命令“sysctl -p”以生效。

Redis配置項tcp-backlog的值不能超過somaxconn的大小。

4.3. OOM相關:vm.overcommit_memory

如果“/proc/sys/vm/overcommit_memory”的值為0,則會表示開啟了OOM。可以設定為1關閉OOM,設定方法請參照net.core.somaxconn完成。

4.4. /sys/kernel/mm/transparent_hugepage/enabled

預設值為“[always] madvise never”,建議設定為never,以開啟核心的“Transparent Huge Pages (THP)”特性,設定後redis程序需要重啟。為了永久生效,請將“echo never > /sys/kernel/mm/transparent_hugepage/enabled”加入到檔案/etc/rc.local中。

什麼是Transparent Huge Pages?為提升效能,通過大記憶體頁來替代傳統的4K頁,使用得管理虛擬地址數變少,加快從虛擬地址到實體地址的對映,以及摒棄記憶體頁面的換入換出以提高記憶體的整體效能。核心Kernel將程式快取記憶體中,每頁記憶體以2M為單位。相應的系統程序為khugepaged。

在Linux中,有兩種方式使用Huge Pages,一種是2.6核心引入的HugeTLBFS,另一種是2.6.36核心引入的THP。HugeTLBFS主要用於資料庫,THP廣泛應用於應用程式。

一般可以在rc.local或/etc/default/grub中對Huge Pages進行設定。

5. 目錄結構

redis.conf為從https://raw.githubusercontent.com/antirez/redis/5.0/redis.conf下載的配置檔案,帶埠號的配置檔案基於redis.conf修改。實際只需要完成公共的redis.conf和一個埠號的,如redis-6381.conf,其它埠號的配置檔案基於一個修改後的埠號配置檔案即可。

本文將redis安裝在/data/redis,建議將bin目錄加入到環境變數PATH中,以簡化後續的使用。

如果拿到的是redis原始碼,在make成功後,推薦按下列目錄結構部署各程式檔案:

/data/redis

|-- bin

|   |-- redis-benchmark

|   |-- redis-check-aof

|   |-- redis-check-rdb

|   |-- mkreleasehdr.sh

|   |-- redis-cli

|   |-- redis-sentinel -> redis-server

|   `-- redis-server

|-- conf

|   |-- redis-6381.conf

|   |-- redis-6382.conf

|   |-- redis-6383.conf

|   |-- redis-6384.conf

|   |-- redis-6385.conf

|   |-- redis-6386.conf

|   `-- redis.conf

`-- log

 

3 directories, 14 files

 

注意,redis-check-dump和redis-check-rdb是同一個程式,在redis-3.0.0之前叫redis-check-dump,之後更名為redis-check-rdb。

6. 編譯安裝

開啟redis的Makefile檔案,可以看到如下內容:

PREFIX?=/usr/local

INSTALL_BIN=$(PREFIX)/bin

INSTALL=install

 

Makefile中的“?=”表示,如果該變數之前沒有定義過,則賦值為/usr/local,否則什麼也不做。

如果不設定環境變數PREFIX或不修改Makefile中的值,則預設安裝到/usr/local/bin目錄下。建議不要使用預設配置,而是指定安裝目錄,如/data/redis-5.0.0:

$ make

$ make install PREFIX=/data/redis-5.0.0

$ ln -s /data/redis-5.0.0 /data/redis

$ mkdir /data/redis/conf

$ mkdir /data/redis/log

$ mkdir /data/redis/data

7. 配置redis

推薦配置分成兩部分:一是公共配置,另一個與埠相關的配置。公共配置檔名可命令為redis.conf,而埠相關的配置檔名可命令為redis-PORT.conf或redis_PORT.conf。假設埠為6379,則埠相關的配置檔名為redis-6379.conf。redis-PORT.conf通過include的方式包含redis.conf,如:include /data/redis/conf/redis.conf。

https://raw.githubusercontent.com/antirez/redis/5.0/redis.conf下載配置檔案(也可直接複製原始碼包中的redis.conf,然後在它的基礎上進行修改),在這個基礎上,進行如下表所示的修改(配置檔名redis-PORT.conf中的PORT替換為實際使用的埠號,如6381等)。

高效完成多個埠配置的一個方法是先完成一個指定埠的配置檔案,然後替換埠方式生成另一個埠的配置檔案。如通過埠6381的配置檔案redis-6381.conf生成埠號6382的配置檔案redis-6382.conf,只需要這樣:sed 's/6381/6382/g' redis-6381.conf > redis-6382.conf。

 

下表配置項,加粗部分是必須和建議修改的,其它可根據實際需求修改:

配置項

加粗部分必須或建議修改

配置檔案

說明

include

redis.conf

指定埠的配置檔案

redis-PORT.conf

(該檔案定義所有與埠相關的配置項,PORT需要替換為具體的埠,如6381)

引用公共的配置檔案,建議為全路徑值

port

PORT

客戶端連線埠,並且總有一個剛好大於10000的埠,這個大的埠用於主從複製和叢集內部通訊。

cluster-config-file

nodes-PORT.conf

預設放在dir指定的目錄,注意不能包含目錄,純檔名,redis-server程序自動維護,不能手工修改

pidfile

/var/run/redis-PORT.pid

只有當daemonize值為yes時,才有意義;並且這個要求對目錄/var/run有寫許可權,否則可以考慮設定為/tmp/redis-PORT.pid,或者放在bin或log目錄下,如:/data/redis/log/redis-PORT.pid。只有當配置項daemonize的值為yes時,才會產生這個檔案。

dir

/data/redis/data/PORT

 

dbfilename

dump-PORT.rdb

純檔名,位於dir指定的目錄下,不能包含目錄,否則報錯“appendfilename can't be a path, just a filename

appendfilename

"appendonly-PORT.aof"

純檔名,位於dir指定的目錄下,不能包含目錄,否則報錯“appendfilename can't be a path, just a filename

logfile

/data/redis/log/redis-PORT.log

日誌檔案,包含目錄和檔名,注意redis不會自動滾動日誌檔案

cluster-enabled

yes

redis.conf

(公共配置檔案,定義所有與埠無關的配置項)

yes表示以叢集方式執行,為no表示以非叢集方式執行

loglevel

verbose

日誌級別,建議為notice,另外注意redis是不會滾動日誌檔案的,每次寫日誌都是先開啟日誌檔案再寫日誌再關閉方式

maxclients

10000

最大連線數

timeout

0

客戶端多長(秒)時間沒發包過來關閉它,0表示永不關閉

cluster-node-timeout

15000

單位為毫秒:

repl-ping-slave-period+

(cluster-node-timeout*

cluster-slave-validity-factor)

判斷節點失效(fail)之前,允許不可用的最大時長(毫秒),如果master不可用時長超過此值,則會被failover。不能太小,建議預設值15000

cluster-slave-validity-factor

0

如果要最大的可用性,值設定為0。定義slave和master失聯時長的倍數,如果值為0,則只要失聯slave總是嘗試failover,而不管與master失聯多久。失聯最大時長:(cluster-slave-validity-factor*cluster-node-timeout)

repl-timeout

10

該配置項的值要求大於repl-ping-slave-period的值

repl-ping-slave-period

1

定義slave多久(秒)ping一次master,如果超過repl-timeout指定的時長都沒有收到響應,則認為master掛了

slave-read-only

yes

slave是否只讀

slave-serve-stale-data

yes

當slave與master斷開連線,slave是否繼續提供服務

slave-priority

100

slave權重值,當master掛掉,只有權重最大的slave接替master

aof-use-rdb-preamble

 

4.0新增配置項,用於控制是否啟用RDB-AOF混用,值為no表示關閉

appendonly

yes

當同時寫AOF或RDB,則redis啟動時只會載入AOF,AOF包含了全量資料。如果當佇列使用,入隊壓力又很大,建議設定為no

appendfsync

no

可取值everysec,其中no表示由系統自動,當寫壓力很大時,建議設定為no,否則容易造成整個叢集不可用

daemonize

yes

相關配置項pidfile

protected-mode

no

3.2.0新增的配置項,預設值為yes,限制從其它機器登入Redis server,而只能從127.0.0.1登入。

tcp-backlog

32767

取值不能超過系統的/proc/sys/net/core/somaxconn

auto-aof-rewrite-percentage

100

設定自動rewite AOF檔案(手工rewrite只需要呼叫命令BGREWRITEAOF)

auto-aof-rewrite-min-size

64mb

觸發rewrite的AOF檔案大小,只有大於此大小時才會觸發rewrite

no-appendfsync-on-rewrite

yes

子程序在做rewrite時,主程序不呼叫fsync(由核心預設排程)

stop-writes-on-bgsave-error

yes

如果因為磁碟故障等導致儲存rdb失敗,停止寫操作,可設定為NO。

cluster-require-full-coverage

no

為no表示有slots不可服務時其它slots仍然繼續服務,建議值為no,以提供最高的可用性

maxmemory

26843545600

設定最大的記憶體,單位為位元組

maxmemory-policy

volatile-lru

設定達到最大記憶體時的淘汰策略

client-output-buffer-limit

 

設定master端的客戶端快取,三種:normal、slave和pubsub

cluster-migration-barrier

1

最少slave數,用來保證叢集中不會有裸奔的master。當某個master節點的slave節點掛掉裸奔後,會從其他富餘的master節點分配一個slave節點過來,確保每個master節點都有至少一個slave節點,不至於因為master節點掛掉而沒有相應slave節點替換為master節點導致叢集崩潰不可用。

repl-backlog-size

1mb

當slave失聯時的,環形複製緩區大小,值越大可容忍更長的slave失聯時長

repl-backlog-ttl

 

slave失聯的時長達到該值時,釋放backlog緩衝區

save

save 900 1

save 300 10

save 60 10000

重新整理快照(RDB)到磁碟的策略,根據實際調整值,“save 900 1”表示900秒後至少有1個key被修改才觸發save操作,其它類推。

注意執行flushall命令也會產生RDB檔案,不過是空檔案。

如果不想生成RDB檔案,可以將save全註釋掉。

8. 啟動redis例項

在啟動之前,需要建立好配置中的各目錄。然後啟動好所有的redis例項,如以本文中定義的6個節點為例(帶個目錄是個良好和規範的習慣):

/data/redis/bin/redis-server /data/redis/conf/redis-6381.conf

/data/redis/bin/redis-server /data/redis/conf/redis-6382.conf

/data/redis/bin/redis-server /data/redis/conf/redis-6383.conf

/data/redis/bin/redis-server /data/redis/conf/redis-6384.conf

/data/redis/bin/redis-server /data/redis/conf/redis-6385.conf

/data/redis/bin/redis-server /data/redis/conf/redis-6386.conf

 

可以寫一個啟動指令碼start-redis-cluster.sh:

#!/bin/sh

 

REDIS_HOME=/data/redis

$REDIS_HOME/bin/redis-server $REDIS_HOME/conf/redis-6379.conf

$REDIS_HOME/bin/redis-server $REDIS_HOME/conf/redis-6380.conf

 

一般需要加上程序監控,可直接使用process_monitor.sh,監控示例(放在crontab中,下載網址:https://github.com/eyjian/libmooon/blob/master/shell/process_monitor.sh):

REDIS_HOME=/data/redis

* * * * * /usr/local/bin/process_monitor.sh "$REDIS_HOME/bin/redis-server 6381" "$REDIS_HOME/bin/redis-server $REDIS_HOME/conf/redis_6381.conf"

* * * * * log=$REDIS_HOME/log/redis_6381.log;if test `ls -l $log|cut -d' ' -f5` -gt 104857600; then mv $log $log.old; fi

 

注意:redis的日誌檔案不會自動滾動,redis-server每次在寫日誌時,均會以追加方式呼叫fopen寫日誌,而不處理滾動。也可藉助linux自帶的logrotate來滾動redis日誌,命令logrotate一般位於目錄/usr/sbin下。

9. 建立和啟動redis叢集

如果只是想快速建立和啟動redis叢集,而不關心過程,可使用redis官方提供的指令碼create-cluster,兩步完成:

create-cluster start

create-cluster create

 

第二步“create-cluster create”是一個互動式過程,當提示時,請輸入“yes”再回車繼續,第一個節點的埠號為30001,一共會啟動六個redis節點。

create-cluster在哪兒?它位於redis原始碼的utils/create-cluster目錄下,是一個bash指令碼檔案。停止叢集:create-cluster stop

但如果是為學習和運營,建議按下列步驟操作,以加深對redis叢集的理解,提升掌控能力:

9.1. 建立redis cluster

建立redis叢集命令(三主三從,每個主一個從,注意redis-5.0.0版本開始才支援“--cluster”,之前的版本會報錯“Unrecognized option or bad number of args for: '--cluster'”):

redis-cli --cluster create 192.168.0.251:6381 192.168.0.251:6382 192.168.0.251:6383 192.168.0.251:6384 192.168.0.251:6385 192.168.0.251:6386 --cluster-replicas 1

 

如果配置項cluster-enabled的值不為yes,則執行時會報錯“[ERR] Node 192.168.0.251:6381 is not configured as a cluster node.”。這個時候需要先將cluster-enabled的值改為yes,然後重啟redis-server程序,之後才可以重新執行redis-cli建立叢集。

 

Ø redis-cli的引數說明:

1) create

表示建立一個redis叢集。

2) --cluster-replicas 1

表示為叢集中的每一個主節點指定一個從節點,即一比一的複製。\

 

執行過程中,會有個提示,輸入yes回車即可。從螢幕輸出,可以很容易地看出哪些是主(master)節點,哪些是從(slave)節點:

./redis-cli --cluster create 192.168.0.251:6381 192.168.0.251:6382 192.168.0.251:6383 192.168.0.251:6384 192.168.0.251:6385 192.168.0.251:6386 --cluster-replicas 1

>>> Performing hash slots allocation on 6 nodes...

Master[0] -> Slots 0 - 5460

Master[1] -> Slots 5461 - 10922

Master[2] -> Slots 10923 - 16383

Adding replica 192.168.0.251:6384 to 192.168.0.251:6381

Adding replica 192.168.0.251:6385 to 192.168.0.251:6382

Adding replica 192.168.0.251:6386 to 192.168.0.251:6383

>>> Trying to optimize slaves allocation for anti-affinity

[WARNING] Some slaves are in the same host as their master

M: f805e652ff8abe151393430cb3bcbf514b8a7399 192.168.0.251:6381

   slots:[0-5460] (5461 slots) master

M: bfad383775421b1090eaa7e0b2dcfb3b38455079 192.168.0.251:6382

   slots:[5461-10922] (5462 slots) master

M: 44eb43e50c101c5f44f48295c42dda878b6cb3e9 192.168.0.251:6383

   slots:[10923-16383] (5461 slots) master

S: 29fcce29837d3e5266b6178a15aecfa938ff241a 192.168.0.251:6384

   replicates bfad383775421b1090eaa7e0b2dcfb3b38455079

S: 0ae8b5400d566907a3d8b425d983ac3b7cbd8412 192.168.0.251:6385

   replicates 44eb43e50c101c5f44f48295c42dda878b6cb3e9

S: c67dc9e02e25f2e6321df8ac2eb4d99789917783 192.168.0.251:6386

   replicates f805e652ff8abe151393430cb3bcbf514b8a7399

Can I set the above configuration? (type 'yes' to accept): yes

>>> Nodes configuration updated

>>> Assign a different config epoch to each node

>>> Sending CLUSTER MEET messages to join the cluster

Waiting for the cluster to join

...

>>> Performing Cluster Check (using node 192.168.0.251:6381)

M: f805e652ff8abe151393430cb3bcbf514b8a7399 192.168.0.251:6381

   slots:[0-5460] (5461 slots) master

   1 additional replica(s)

S: c67dc9e02e25f2e6321df8ac2eb4d99789917783 192.168.0.251:6386

   slots: (0 slots) slave

   replicates f805e652ff8abe151393430cb3bcbf514b8a7399

S: 29fcce29837d3e5266b6178a15aecfa938ff241a 192.168.0.251:6384

   slots: (0 slots) slave

   replicates bfad383775421b1090eaa7e0b2dcfb3b38455079

M: bfad383775421b1090eaa7e0b2dcfb3b38455079 192.168.0.251:6382

   slots:[5461-10922] (5462 slots) master

   1 additional replica(s)

S: 0ae8b5400d566907a3d8b425d983ac3b7cbd8412 192.168.0.251:6385

   slots: (0 slots) slave

   replicates 44eb43e50c101c5f44f48295c42dda878b6cb3e9

M: 44eb43e50c101c5f44f48295c42dda878b6cb3e9 192.168.0.251:6383

   slots:[10923-16383] (5461 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.

9.2. ps aux|grep redis

檢視redis程序是否已切換為叢集狀態(cluster):

[[email protected] ~]$ ps aux|grep redis-server

redis   3824  0.7  5.9 6742404 3885144 ?    Ssl   2018 1639:13 /data/redis/bin/redis-server *:6381 [cluster]

redis   3825  0.5  3.9 6709636 2618536 ?    Ssl   2018 1235:43 /data/redis/bin/redis-server *:6382 [cluster]

redis   3826  0.5  3.9 6709636 2618536 ?    Ssl   2018 1235:43 /data/redis/bin/redis-server *:6383 [cluster]

redis   3827  0.5  3.9 6709636 2618536 ?    Ssl   2018 1235:43 /data/redis/bin/redis-server *:6384 [cluster]

redis   3828  0.5  3.9 6709636 2618536 ?    Ssl   2018 1235:43 /data/redis/bin/redis-server *:6385 [cluster]

redis   3829  0.5  3.9 6709636 2618536 ?    Ssl   2018 1235:43 /data/redis/bin/redis-server *:6386 [cluster]

 

停止redis例項,直接使用kill命令即可,如:kill 3825,重啟和單機版相同。

10. redis cluster client

10.1. 命令列工具redis-cli

官方提供的命令列客戶端工具,在單機版redis基礎上指定引數“-c”即可。以下是在192.168.0.251上執行redis-cli的記錄:

$ ./redis-cli -c -p 6379

127.0.0.1:6379> set foo bar

-> Redirected to slot [12182] located at 192.168.0.251:6379

OK

192.168.0.251:6379> set hello world

-> Redirected to slot [866] located at 192.168.0.251:6379

OK

192.168.0.251:6379> get foo

-> Redirected to slot [12182] located at 192.168.0.251:6379

"bar"

192.168.0.251:6379> get hello

-> Redirected to slot [866] located at 192.168.0.251:6379

"world"

 

檢視叢集中的節點:

192.168.0.251:6379> cluster nodes

10.2. 從slaves讀資料

預設不能從slaves讀取資料,但建立連線後,執行一次命令READONLY ,即可從slaves讀取資料。如果想再次恢復不能從slaves讀取資料,可以執行下命令READWRITE。

10.3. jedis(java cluster client)

官網:https://github.com/xetorthio/jedis,程式設計示例:

Set<HostAndPort> jedisClusterNodes = new HashSet<HostAndPort>();

//Jedis Cluster will attempt to discover cluster nodes automatically

jedisClusterNodes.add(new HostAndPort("127.0.0.1", 7379));

JedisCluster jc = new JedisCluster(jedisClusterNodes);

jc.set("foo", "bar");

String value = jc.get("foo");

10.4. r3c(C++ cluster client)

官網:https://github.com/eyjian/r3c

11. 新增節點

11.1. 新增一個新主(master)節點

假設要新增新的節點“192.168.0.251:6390”,先以單機版配置和啟動好6387,然後執行命令(“192.168.0.251:6381”為叢集中任一可用的節點):

redis-cli --cluster add-node 192.168.0.251:6390 192.168.0.251:6381

 

如果執行順利,看到的輸出如下:

$ ./redis-cli --cluster add-node 192.168.0.251:6390 192.168.0.251:6381

>>> Adding node 192.168.0.251:6390 to cluster 192.168.0.251:6381

>>> Performing Cluster Check (using node 192.168.0.251:6381)

M: f805e652ff8abe151393430cb3bcbf514b8a7399 192.168.0.251:6381

   slots:[0-5460] (5461 slots) master

   1 additional replica(s)

S: c67dc9e02e25f2e6321df8ac2eb4d99789917783 192.168.0.251:6386

   slots: (0 slots) slave

   replicates f805e652ff8abe151393430cb3bcbf514b8a7399

S: 29fcce29837d3e5266b6178a15aecfa938ff241a 192.168.0.251:6384

   slots: (0 slots) slave

   replicates bfad383775421b1090eaa7e0b2dcfb3b38455079

M: bfad383775421b1090eaa7e0b2dcfb3b38455079 192.168.0.251:6382

   slots:[5461-10922] (5462 slots) master

   1 additional replica(s)

S: 0ae8b5400d566907a3d8b425d983ac3b7cbd8412 192.168.0.251:6385

   slots: (0 slots) slave

   replicates 44eb43e50c101c5f44f48295c42dda878b6cb3e9

M: 44eb43e50c101c5f44f48295c42dda878b6cb3e9 192.168.0.251:6383

   slots:[10923-16383] (5461 slots)&nb