天天看點

14.6、redis叢集

1、環境配置:

伺服器名稱 ip位址 執行個體6379 執行個體6380 執行個體6381 執行個體6381 執行個體6381 執行個體6381
controller-node1 172.16.1.90

2、reids叢集介紹:

(1)redis叢集是一個可以在多個reid節點之間進行資料共享的設定;

(2)redis叢集不支援那些需要同時處理多個鍵的redis指令,因為執行這些指令需要在多個redis節點之間移動

資料,并且在高負載的情況下,這些指令将會降低redis叢集的性能,并導緻不可預測的行為;

(3)redis叢集通過分區來提供一定程度的可用性,即使叢集中有一部分節點失效或者無法進行通訊,叢集也可以

繼續處理指令請求;

(4)redis叢集有将資料自動切分到多個節點的能力;

(5)當叢集中的一部分節點失效或者無法進行通訊時,仍然有可以繼續處理指令請求的能力;

(6)redis叢集使用分片而非一緻性哈希來實作,一個redis叢集包含16384個哈希槽,資料庫中的每個鍵都屬于這

16384個哈希槽的其中一個,叢集使用公式crc16(key)%16384來計算鍵key屬于哪個槽,其中crc16(key)語句用于

計算鍵key的crc16效驗和;

(7)節點所占槽舉例說明:

1)節點A負責處理0号至5500号哈希槽;

2)節點B負責處理5501号到11000号哈希槽;

3)節點C負責處理11001号至16384号哈希槽;

(8)叢集的複制:

1)為了是得叢集在一部分節點下線或者無法與集權的大多數節點進行通訊的情況下,仍然可以正常運作,redis叢集對

節點使用了主從複制功能,叢集中國的每個節點都有一個值n個複制品,其中一個複制品為主節點,而其餘的n-1個複制

品為從節點;

2)在之前列舉的節點A、B、C、的例子中,如果節點B下線了,name集權将無法正常運作,因為叢集找不到節點來處

理5501号至11000号的哈希槽;

3)假如在建立叢集的時候(或者至少在節點B下線之前),我們為主節點B添加了從節點B1,那麼當主節點B下線的時候,

叢集就會将B1設定為新的主節點,并讓它代替下線的主節點B,繼續處理5501号至11000号的哈希槽,這樣叢集就不會

因為主節點B的下線而無法正常工作了;

4)如果節點B和B1都下線的話,redis叢集還是會停止運作;

(9)叢集示例圖:

14.6、redis叢集
14.6、redis叢集

(10)運作機制:

1)所有的redis節點彼此互聯(PING-PONG機制),内部使用二級制協定優化傳輸速度和帶寬;

2)節點的fail是通過叢集中超過半數的master節點檢測失效時才生效;

3)用戶端與redis節點直連,不需要中間proxy層,用戶端不需要連接配接叢集所有節點,連接配接叢集

中任何一個可用的節點即可;

4)把所有的實體節點映射到[0-16383]slot上,叢集負責維護node<->slot<->key;

(11)redis叢集所能使用

單執行個體每秒110000請求;工作中控制在50000需要擴容,70000是極限;30000最佳;

3、安裝叢集所需要的依賴包:

(1)yum install ruby rubygems -y

(2)gem install redis

1)如果gem卡住不動,使用國内鏡像:

gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/

#更換源;

gem sources -l

#檢視源是否更新成功;

2)如果報"redis requires Ruby version >= 2.2.2."錯誤:

gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

\curl -sSL https://get.rvm.io | bash -s stable

source /etc/profile.d/rvm.sh

#配置rvm環境;

rvm list known

#檢視可用的ruby版本清單;

rvm install 2.5

#安裝ruby 2.5版本;

ruby -v

#檢視ruby更新是否成功;

4、配置參數:

(1)分别修改redis 6379—6384執行個體的"redis.conf"檔案參數如下:

requirepass root

masterauth root

appendonly yes

cluster-enabled yes

cluster-config-file nodes.conf

cluster-node-timeout 5000

(2)啟動redis 6379—6384執行個體:

for nu in 79 80 81 82 83 84;do /data/63$nu/redis.sh start;done

[root@controller-node1 ~]# netstat -tunlp | grep 63

tcp 0 0 172.16.1.90:16380 0.0.0.0:* LISTEN 1941/redis-server 1

tcp 0 0 172.16.1.90:16381 0.0.0.0:* LISTEN 1954/redis-server 1

tcp 0 0 172.16.1.90:16382 0.0.0.0:* LISTEN 1967/redis-server 1

tcp 0 0 172.16.1.90:16383 0.0.0.0:* LISTEN 1980/redis-server 1

tcp 0 0 172.16.1.90:16384 0.0.0.0:* LISTEN 1993/redis-server 1

tcp 0 0 172.16.1.90:6379 0.0.0.0:* LISTEN 1928/redis-server 1

tcp 0 0 172.16.1.90:6380 0.0.0.0:* LISTEN 1941/redis-server 1

tcp 0 0 172.16.1.90:6381 0.0.0.0:* LISTEN 1954/redis-server 1

tcp 0 0 172.16.1.90:6382 0.0.0.0:* LISTEN 1967/redis-server 1

tcp 0 0 172.16.1.90:6383 0.0.0.0:* LISTEN 1980/redis-server 1

tcp 0 0 172.16.1.90:6384 0.0.0.0:* LISTEN 1993/redis-server 1

tcp 0 0 172.16.1.90:16379 0.0.0.0:* LISTEN 1928/redis-server 1

5、建立叢集:

(1)建立:

redis-cli -a root --cluster create \

172.16.1.90:6379 172.16.1.90:6380 \

172.16.1.90:6381 172.16.1.90:6382 \

172.16.1.90:6383 172.16.1.90:6384 \

--cluster-replicas 1

…………………………………………………………

[OK] All nodes agree about slots configuration.

>>> Check for open slots...

>>> Check slots coverage...

[OK] All 16384 slots covered.

(2)參數說明:

redis-cli --cluster cretae:表示建立一個新的叢集;

-a root:表示叢集的密碼;

172.16.90:6379~6384:表示reids執行個體清單,用這些執行個體來建立新的叢集;

--cluster-replicas=1:表示為叢集中的每個主節點建立一個從節點;

6、登入叢集:

(1)資料存取驗證:

[root@controller-node1 ~]# redis-cli -h 172.16.1.90 -a root -c -p 6380

Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.

172.16.1.90:6380> keys *

(empty list or set)

172.16.1.90:6380> set lc1 1

OK

172.16.1.90:6380> set lc2 2

OK

172.16.1.90:6380> set lc3 3

-> Redirected to slot [13891] located at 172.16.1.90:6381

OK

172.16.1.90:6381> set lc4 4

-> Redirected to slot [1700] located at 172.16.1.90:6383

OK

172.16.1.90:6383> set lc5 5

-> Redirected to slot [5765] located at 172.16.1.90:6380

OK

172.16.1.90:6380> get lc2

"2"

172.16.1.90:6380> get lc3

-> Redirected to slot [13891] located at 172.16.1.90:6381

"3"

172.16.1.90:6381> get lc4

-> Redirected to slot [1700] located at 172.16.1.90:6383

"4"

172.16.1.90:6383> get lc5

-> Redirected to slot [5765] located at 172.16.1.90:6380

"5"

(2)從上面的例子可以看出,資料在redis叢集中是共享的,資料被分片存放在不同的redis執行個體上的,取資料的

時候從不同的redis執行個體上再取出資料;

7、redis叢集常用的指令:

(1)叢集:

1)cluster info:列印叢集的資訊

2)cluster nodes:列出叢集目前已知的所有節點,以及這些節點的相關資訊;

(2)節點:

1)cluster meet <ip> <port>:将ip和port所指定的節點添加到叢集當中,讓它成為叢集的一份子;

2)cluster forget <node_id>:從叢集中移除node_id指定的節點;

3)cluster replicate <node_id>:将目前節點設定為node_id指定的節點的從節點;

4)cluster saveconfig:将節點的配置檔案儲存到硬碟裡面;

(3)slot(槽):

1)cluster addslots <slot> [slot ...]:将一個或多個槽(slot)指派(assign)給目前節點;

2)cluster delslots <slot> [slot ...]:移除一個或多個槽對目前節點的指派;

3)cluster flushslots:移除指派給目前節點的所有槽,讓目前節點變成一個沒有指派任何槽的節點;

4)cluster setslot <slot> node <node_id>:将槽slot指派給node_id指定的節點,如果槽已經指派給另一個節點,那麼先在另一個節點删除該槽,然後再進行指派;

5)cluster setslot <slot> migrating <node_id>:将本節點的槽slot遷移到node_id指定的節點中;

6)cluster setslot <slot> importing <node_id>:從node_id指定的節點中導入槽slot到本節點;

7)cluster setslot <slot> stable:取消對槽slot的導入(import)或者遷移(migrate);

(4)鍵:

1)cluster keyslot <key>:計算鍵key應該被放置在哪個槽上;

2)cluster countkeysinslot <slot>:傳回槽slot目前包含的鍵值對數量;

3)cluster getkeysinslot <slot> <count>:傳回count個slot槽中的鍵;

8、叢集說明:

(1)叢集節點清單:

1)檢視叢集節點清單:

[root@controller-node1 ~]# redis-cli -h 172.16.1.90 -a root -c -p 6380 cluster nodes

Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe

90fab512096937945b2b46ad5aaaf7fba591cc15myself,master

#redis 6380執行個體是主節點;

d3f14910b95f2773ba3bd3172bfe841e9cf0a7a7master

#redis 6383執行個體是主節點;

34efa7e312cf6d9dde66b7216d3566e7436a0255 172.16.1.90:6379@16379 slave d3f14910b95f2773ba3bd3172bfe841e9cf0a7a7

#redis 6379執行個體是redis 6383的從節點;

6aee047cf63ffbc6d787a807f4f956db0f1a3184 172.16.1.90:6384@16384 slave 90fab512096937945b2b46ad5aaaf7fba591cc15 0

#redis 6384執行個體是redis 6380的從節點;

6c5373b5181e022b7859b9e699bc15873258be61master

#redis 6381執行個體是主節點;

0be8419ac713cb92dd206297db9b85ca052c6a1c 172.16.1.90:6382@16382 slave 6c5373b5181e022b7859b9e699bc15873258be61

#redis 6382執行個體是redis 6381的從節點;

2)每個redis執行個體都在其執行個體目錄都存放着一個nodes.conf叢集清單檔案,由叢集自己生成和維護,是以當叢集全部當機啟動後也能恢複;

(2)當redis叢集中主節點當機,對應的從節點會自動頂替主節點:

1)停止redis 6380執行個體:

/data/6380/redis.sh stop

STOP REDIS_6380 [ 确定 ]

2)檢視叢集清單變化:

[root@controller-node1 ~]# redis-cli -h 172.16.1.90 -a root -c -p 6381 cluster nodes

Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.

d3f14910b95f2773ba3bd3172bfe841e9cf0a7a7 172.16.1.90:6383@16383 master - 0 1558242602208 7 connected 0-5460

6c5373b5181e022b7859b9e699bc15873258be61 172.16.1.90:6381@16381 myself,master - 0 1558242602000 3 connected 10923-16383

0be8419ac713cb92dd206297db9b85ca052c6a1c 172.16.1.90:6382@16382 slave 6c5373b5181e022b7859b9e699bc15873258be61 0 1558242601098 4 connected

6aee047cf63ffbc6d787a807f4f956db0f1a3184 172.16.1.90:6384@16384 master - 0 1558242602000 8 connected 5461-10922

34efa7e312cf6d9dde66b7216d3566e7436a0255 172.16.1.90:6379@16379 slave d3f14910b95f2773ba3bd3172bfe841e9cf0a7a7 0 1558242603223 7 connected

90fab512096937945b2b46ad5aaaf7fba591cc15 172.16.1.90:6380@16380 master,fail - 1558242496586 1558242494471 2 disconnected

從上面redis叢集清單可以看出,master節點redis 6380執行個體處于下線的狀态,而作為它的從節點的redis 6384執行個體處于master狀态;

(3)修複當機的主節點後:

1)啟動redis 6380執行個體:

/data/6380/redis.sh start

START REDIS_6380 [ 确定 ]

2)檢視叢集清單變化:

[root@controller-node1 ~]# redis-cli -h 172.16.1.90 -a root -c -p 6381 cluster nodes

Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.

6c5373b5181e022b7859b9e699bc15873258be61 172.16.1.90:6381@16381 master - 0 1558243489166 3 connected 10923-16383

34efa7e312cf6d9dde66b7216d3566e7436a0255 172.16.1.90:6379@16379 myself,slave d3f14910b95f2773ba3bd3172bfe841e9cf0a7a7 0 1558243488000 1 connected

6aee047cf63ffbc6d787a807f4f956db0f1a3184 172.16.1.90:6384@16384 master - 0 1558243488660 8 connected 5461-10922

90fab512096937945b2b46ad5aaaf7fba591cc15 172.16.1.90:6380@16380 slave 6aee047cf63ffbc6d787a807f4f956db0f1a3184 0 1558243488000 8 connected

d3f14910b95f2773ba3bd3172bfe841e9cf0a7a7 172.16.1.90:6383@16383 master - 0 1558243488050 7 connected 0-5460

0be8419ac713cb92dd206297db9b85ca052c6a1c 172.16.1.90:6382@16382 slave 6c5373b5181e022b7859b9e699bc15873258be61 0 1558243488151 4 connected

從上面redis叢集清單可以看出,redis 6384執行個體成為了master節點,而redis 6380執行個體變為了它的從節點;

9、将叢集加入到開機自啟動:

chmod +x /etc/rc.d/rc.local

echo 'for nu in 79 80 81 82 83 84;do /data/63$nu/redis.sh start;done' >>/etc/rc.d/rc.local

10、redis叢集擴容:

(1)建立redis 6385 6386執行個體:

mkdir -p /data/{6385,6386}

for nu in 85 86;do cp -a /data/6379/redis.conf /data/63$nu/;done

for nu in 85 86;do cp -a /data/6379/redis.sh /data/63$nu/;done

(2)修改redis.conf、redis.sh檔案的參數為對應執行個體的端口号和路徑:

確定redis.conf如以下的參數:

requirepass root

masterauth root

appendonly yes

cluster-enabled yes

cluster-config-file nodes.conf

cluster-node-timeout 5000

(3)啟動執行個體:

[root@controller-node1 6385]# for nu in 85 86;do /data/63$nu/redis.sh start;done

[root@controller-node1 6385]# netstat -tunlp | grep 63

tcp 0 0 172.16.1.90:16380 0.0.0.0:* LISTEN 38431/redis-server

tcp 0 0 172.16.1.90:16381 0.0.0.0:* LISTEN 33971/redis-server

tcp 0 0 172.16.1.90:16382 0.0.0.0:* LISTEN 33985/redis-server

tcp 0 0 172.16.1.90:16383 0.0.0.0:* LISTEN 34003/redis-server

tcp 0 0 172.16.1.90:16384 0.0.0.0:* LISTEN 34019/redis-server

tcp 0 0 172.16.1.90:16385 0.0.0.0:* LISTEN 42092/redis-server

tcp 0 0 172.16.1.90:16386 0.0.0.0:* LISTEN 42105/redis-server

tcp 0 0 172.16.1.90:6379 0.0.0.0:* LISTEN 33944/redis-server

tcp 0 0 172.16.1.90:6380 0.0.0.0:* LISTEN 38431/redis-server

tcp 0 0 172.16.1.90:6381 0.0.0.0:* LISTEN 33971/redis-server

tcp 0 0 172.16.1.90:6382 0.0.0.0:* LISTEN 33985/redis-server

tcp 0 0 172.16.1.90:6383 0.0.0.0:* LISTEN 34003/redis-server

tcp 0 0 172.16.1.90:6384 0.0.0.0:* LISTEN 34019/redis-server

tcp 0 0 172.16.1.90:6385 0.0.0.0:* LISTEN 42092/redis-server

tcp 0 0 172.16.1.90:6386 0.0.0.0:* LISTEN 42105/redis-server

tcp 0 0 172.16.1.90:16379 0.0.0.0:* LISTEN 33944/redis-server

此時redis 6385和redis 6386執行個體并沒有加入到cluster叢集中;

(4)将redis 6385執行個體和redis 6386執行個體加入到叢集中:

[root@controller-node1 ~]# redis-cli -h 172.16.1.90 -a root -c -p 6380

Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.

172.16.1.90:6380> cluster meet 172.16.1.90 6385

OK

172.16.1.90:6380> cluster meet 172.16.1.90 6386

OK

172.16.1.90:6380> cluster nodes

18c95ad88e3d813aa3169b19753497f66eed271b 172.16.1.90:6385@16385 master - 0 1558247814971 9 connected

6aee047cf63ffbc6d787a807f4f956db0f1a3184 172.16.1.90:6384@16384 master - 0 1558247813962 8 connected 5461-10922

0be8419ac713cb92dd206297db9b85ca052c6a1c 172.16.1.90:6382@16382 slave 6c5373b5181e022b7859b9e699bc15873258be61 0 1558247814569 4 connected

90fab512096937945b2b46ad5aaaf7fba591cc15 172.16.1.90:6380@16380 myself,slave 6aee047cf63ffbc6d787a807f4f956db0f1a3184 0 1558247813000 2 connected

6c5373b5181e022b7859b9e699bc15873258be61 172.16.1.90:6381@16381 master - 0 1558247814000 3 connected 10923-16383

d3f14910b95f2773ba3bd3172bfe841e9cf0a7a7 172.16.1.90:6383@16383 master - 0 1558247813000 7 connected 0-5460

9c177d3495ffc74d47c4c3404f3c7e38b058eafd 172.16.1.90:6386@16386 master - 0 1558247813000 0 connected

34efa7e312cf6d9dde66b7216d3566e7436a0255 172.16.1.90:6379@16379 slave d3f14910b95f2773ba3bd3172bfe841e9cf0a7a7 0 1558247813000 7 connected

(5)将redis 6386執行個體作為redis 6385的從:

需要登入到叢集的redis 6386執行個體上進行操作;

[root@controller-node1 ~]# redis-cli -h 172.16.1.90 -a root -c -p 6386

Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.

172.16.1.90:6386> cluster replicate 18c95ad88e3d813aa3169b19753497f66eed271b

OK

172.16.1.90:6386> cluster nodes

90fab512096937945b2b46ad5aaaf7fba591cc15 172.16.1.90:6380@16380 slave 6aee047cf63ffbc6d787a807f4f956db0f1a3184 0 1558248849421 8 connected

6c5373b5181e022b7859b9e699bc15873258be61 172.16.1.90:6381@16381 master - 0 1558248848414 3 connected 10923-16383

9c177d3495ffc74d47c4c3404f3c7e38b058eafd 172.16.1.90:6386@16386 myself,slave 18c95ad88e3d813aa3169b19753497f66eed271b 0 1558248849000 0 connected

6aee047cf63ffbc6d787a807f4f956db0f1a3184 172.16.1.90:6384@16384 master - 0 1558248849000 8 connected 5461-10922

0be8419ac713cb92dd206297db9b85ca052c6a1c 172.16.1.90:6382@16382 slave 6c5373b5181e022b7859b9e699bc15873258be61 0 1558248849520 3 connected

18c95ad88e3d813aa3169b19753497f66eed271b 172.16.1.90:6385@16385 master - 0 1558248848000 9 connected

d3f14910b95f2773ba3bd3172bfe841e9cf0a7a7 172.16.1.90:6383@16383 master - 0 1558248849520 7 connected 0-5460

34efa7e312cf6d9dde66b7216d3566e7436a0255 172.16.1.90:6379@16379 slave d3f14910b95f2773ba3bd3172bfe841e9cf0a7a7 0 1558248848000 7 connected

(6)為redis 6385執行個體配置設定槽位:

[root@controller-node1 6385]# redis-cli -a root --cluster reshard 172.16.1.90:6379

Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.

>>> Performing Cluster Check (using node 172.16.1.90:6379)

S: 34efa7e312cf6d9dde66b7216d3566e7436a0255 172.16.1.90:6379

slots: (0 slots) slave

replicates d3f14910b95f2773ba3bd3172bfe841e9cf0a7a7

M: 6c5373b5181e022b7859b9e699bc15873258be61 172.16.1.90:6381

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

1 additional replica(s)

S: 9c177d3495ffc74d47c4c3404f3c7e38b058eafd 172.16.1.90:6386

slots: (0 slots) slave

replicates 18c95ad88e3d813aa3169b19753497f66eed271b

M: 6aee047cf63ffbc6d787a807f4f956db0f1a3184 172.16.1.90:6384

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

1 additional replica(s)

S: 90fab512096937945b2b46ad5aaaf7fba591cc15 172.16.1.90:6380

slots: (0 slots) slave

replicates 6aee047cf63ffbc6d787a807f4f956db0f1a3184

M: 18c95ad88e3d813aa3169b19753497f66eed271b

slots: (0 slots) master

1 additional replica(s)

M: d3f14910b95f2773ba3bd3172bfe841e9cf0a7a7 172.16.1.90:6383

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

1 additional replica(s)

S: 0be8419ac713cb92dd206297db9b85ca052c6a1c 172.16.1.90:6382

slots: (0 slots) slave

replicates 6c5373b5181e022b7859b9e699bc15873258be61

[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)? 4000 #表示在叢集總的16384個槽位中遷移出4000個槽位;

What is the receiving node ID? 18c95ad88e3d813aa3169b19753497f66eed271b

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: all

Ready to move 4000 slots.

Source nodes:

M: 6c5373b5181e022b7859b9e699bc15873258be61 172.16.1.90:6381

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

1 additional replica(s)

M: 6aee047cf63ffbc6d787a807f4f956db0f1a3184 172.16.1.90:6384

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

1 additional replica(s)

M: d3f14910b95f2773ba3bd3172bfe841e9cf0a7a7 172.16.1.90:6383

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

1 additional replica(s)

Destination node:

M: 18c95ad88e3d813aa3169b19753497f66eed271b 172.16.1.90:6385

slots: (0 slots) master

1 additional replica(s)

Resharding plan:

Moving slot 5461 from 6aee047cf63ffbc6d787a807f4f956db0f1a3184

……………略

Do you want to proceed with the proposed reshard plan (yes/no)? yes

Moving slot 5461 from 172.16.1.90:6384 to 172.16.1.90:6385:

……………略

(7)檢視redis叢集擴充情況:

[root@controller-node1 6385]# redis-cli -h 172.16.1.90 -a root -c -p 6379 cluster nodes

Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.

6c5373b5181e022b7859b9e699bc15873258be61 172.16.1.90:6381@16381 master - 0 1558252435000 3 connected 12256-16383

34efa7e312cf6d9dde66b7216d3566e7436a0255 172.16.1.90:6379@16379 myself,slave d3f14910b95f2773ba3bd3172bfe841e9cf0a7a7 0 1558252433000 1 connected

9c177d3495ffc74d47c4c3404f3c7e38b058eafd 172.16.1.90:6386@16386 slave 18c95ad88e3d813aa3169b19753497f66eed271b 0 1558252434585 9 connected

6aee047cf63ffbc6d787a807f4f956db0f1a3184 172.16.1.90:6384@16384 master - 0 1558252435090 8 connected 6795-10922

90fab512096937945b2b46ad5aaaf7fba591cc15 172.16.1.90:6380@16380 slave 6aee047cf63ffbc6d787a807f4f956db0f1a3184 0 1558252434081 8 connected

18c95ad88e3d813aa3169b19753497f66eed271b 172.16.1.90:6385@16385 master - 0 1558252435090 9 connected 0-1332 5461-6794 10923-12255

d3f14910b95f2773ba3bd3172bfe841e9cf0a7a7 172.16.1.90:6383@16383 master - 0 1558252434000 7 connected 1333-5460

0be8419ac713cb92dd206297db9b85ca052c6a1c 172.16.1.90:6382@16382 slave 6c5373b5181e022b7859b9e699bc15873258be61 0 1558252434081 4 connected

由上面可得redis叢集主節點6385執行個體的槽位數為:(0-1332)+(5461-6794)+(10923-12255)=1333+1334+1333=4000,說明叢集擴充成功;

(8)将擴充的redis 執行個體加入到開機自啟動中即可:

echo 'for nu in 85 86;do /data/63$nu/redis.sh start;done' >>/etc/rc.d/rc.local

11、小結:

(1)叢集有密碼驗證的情況下每個redis執行個體必須要有的參數:

requirepass root

#redis安全保護模式認證密碼設定為root;

masterauth root

#設定主從同步主庫的密碼;

(2)無論是redis主從同步sentinel叢集,還是redis共享叢集都是在維護着一張表:

1)sentinel主從同步叢集:redis.conf、sentinel.conf;

2)redis 共享叢集:nodes.conf

(3)無論是連上sentinel主從同步叢集還是連上redis共享叢集,連接配接到叢集中的任意一個執行個體都能管理叢集,但是預設隻能在

主節點上進行寫操作(也可以打開從節點的寫,但是不建議這麼做,可能會導緻主從資料的不一緻性);

(4)redis sentinel叢集和redis 共享叢集的高可用度都很高,可以放到開機自啟動中,如果是keeplived這種就不可,容易發生腦裂;

繼續閱讀