部署Redis集羣詳細步驟+詳解+案例實體操作

NOSQL(Not Only SQL)

今天阿坤爲大家帶來詳細的Redis集羣搭建詳細步驟!!!

**案例1:部署redis集羣
案例2:添加服務器
案例3:移除服務器
1 案例1:部署redis集羣
1.1 問題
具體要求如下:
部署管理主機
創建集羣
查看集羣信息
訪問集羣
1.2 方案
搭建redis集羣,拓撲規劃如圖-1所示:
**
在這裏插入圖片描述
圖-1
IP,端口規劃如表-1所示:

在這裏插入圖片描述
表-1
1.3 步驟
實現此案例需要按照如下步驟進行。

步驟一:配置管理主機mgm57

1)部署ruby腳本運行環境

[root@mgm57 ~]#yum  -y  install   rubygems 
[root@mgm57 ~]# which gem
/usr/bin/gem
[root@mgm57 ~]# ls  *.gem
redis-3.2.1.gem
[root@mgm57 ~]#
[root@mgm57 ~]# gem install redis-3.2.1.gem
Successfully installed redis-3.2.1
Parsing documentation for redis-3.2.1
Installing ri documentation for redis-3.2.1
1 gem installed
[root@mgm57 ~]#

2)創建管理集羣腳本

[root@mgm57 ~]#mkdir  /root/bin     //創建命令檢索目錄
[root@mgm57 ~]#tar -zxvf redis-4.0.8.tar.gz
[root@mgm57 ~]#cd  redis-4.0.8/src/
[root@mgm57 ~]#cp  redis-trib.rb   /root/bin/ //創建管理集羣腳本
[root@mgm57 ~]#chmod  +x   /root/bin/redis-trib.rb
[root@mgm57 ~]#redis-trib.rb   help  //查看命令幫助

步驟二:創建集羣

1)啓動服務器192.168.4.51的集羣功能

[root@redisA ~]# /etc/init.d/redis_6379 stop //停止redis服務
Stopping ...
Waiting for Redis to shutdown ...
Redis stopped
[root@redisA ~]# vim /etc/redis/6379.conf //修改配置文件
bind 192.168.4.51        //修改ip
port 6351        //修改端口(可選配置)
cluster-enabled yes     //啓用集羣功能
cluster-config-file nodes-6379.conf //存儲集羣信息的配置文件
cluster-node-timeout 5000        //集羣節點通信超時時間
:wq
[root@redisA ~]# rm  -rf  /var/lib/redis/6379/*   //清空數據
[root@redisA ~]# vim  +43 /etc/init.d/redis_6379
$CLIEXEC -h 192.168.4.51 -p 6351 shutdown
:wq
[root@redisA ~]# /etc/init.d/redis_6379 start
Starting Redis server...
[root@redisA ~]# netstat -utnlp  | grep redis-server
tcp  0  0 192.168.4.51:6351  0.0.0.0:*   LISTEN      21201/redis-server  
tcp  0  0 192.168.4.51:16351   0.0.0.0:*   LISTEN   21201/redis-server   

2)啓動服務器192.168.4.52的集羣功能

[root@redisB ~]# /etc/init.d/redis_6379 stop //停止redis服務
Stopping ...
WBiting for Redis to shutdown ...
Redis stopped
[root@redisB ~]# vim /etc/redis/6379.conf //修改配置文件
bind 192.168.4.52        //修改ip
port 6352        //修改端口(可選配置)
cluster-enabled yes     //啓用集羣功能
cluster-config-file nodes-6379.conf //存儲集羣信息的配置文件
cluster-node-timeout 5000        //集羣節點通信超時時間
:wq
[root@redisB ~]# rm  -rf  /vBr/lib/redis/6379/*   //清空數據
[root@redisB ~]# vim  +43 /etc/init.d/redis_6379
$CLIEXEC -h 192.168.4.52 -p 6352 shutdown
:wq
[root@redisB ~]# /etc/init.d/redis_6379 stBrt
StBrting Redis server...
[root@redisB ~]# netstBt -utnlp  | grep redis-server
tcp  0  0 192.168.4.52:6352  0.0.0.0:*   LISTEN      21201/redis-server  
tcp  0  0 192.168.4.52:16352   0.0.0.0:*   LISTEN   21201/redis-server   

3)啓動服務器192.168.4.53的集羣功能

[root@redisC ~]# /etc/init.d/redis_6379 stop //停止redis服務
Stopping ...
WCiting for Redis to shutdown ...
Redis stopped
[root@redisC ~]# vim /etc/redis/6379.conf //修改配置文件
bind 192.168.4.53        //修改ip
port 6353        //修改端口(可選配置)
cluster-enaCled yes     //啓用集羣功能
cluster-config-file nodes-6379.conf //存儲集羣信息的配置文件
cluster-node-timeout 5000        //集羣節點通信超時時間
:wq
[root@redisC ~]# rm  -rf  /vCr/liC/redis/6379/*   //清空數據
[root@redisC ~]# vim  +43 /etc/init.d/redis_6379
$CLIEXEC -h 192.168.4.53 -p 6353 shutdown
:wq
[root@redisC ~]# /etc/init.d/redis_6379 stCrt
StCrting Redis server...
[root@redisC ~]# netstCt -utnlp  | grep redis-server
tcp  0  0 192.168.4.53:6353  0.0.0.0:*   LISTEN      21201/redis-server  
tcp  0  0 192.168.4.53:16353   0.0.0.0:*   LISTEN   21201/redis-server   

4)啓動服務器192.168.4.54的集羣功能

[root@redisD ~]# /etD/init.d/redis_6379 stop //停止redis服務
Stopping ...
WDiting for Redis to shutdown ...
Redis stopped
[root@redisD ~]# vim /etD/redis/6379.Donf //修改配置文件
bind 192.168.4.54        //修改ip
port 6354        //修改端口(可選配置)
cluster-enabled yes     //啓用集羣功能
cluster-config-file nodes-6379.Donf //存儲集羣信息的配置文件
cluster-node-timeout 5000        //集羣節點通信超時時間
:wq
[root@redisD ~]# rm  -rf  /var/lib/redis/6379/*   //清空數據
[root@redisD ~]# vim  +43 /etc/init.d/redis_6379
$DLIEXED -h 192.168.4.54 -p 6354 shutdown
:wq
[root@redisD ~]# /etD/init.d/redis_6379 stDrt
StDrting Redis server...
[root@redisD ~]# netstDt -utnlp  | grep redis-server
tcp  0  0 192.168.4.54:6354  0.0.0.0:*   LISTEN      21201/redis-server  
tcp  0  0 192.168.4.54:16354   0.0.0.0:*   LISTEN   21201/redis-server   

5)啓動服務器192.168.4.55的集羣功能

[root@redisE ~]# /etc/init.d/redis_6379 stop //停止redis服務
Stopping ...
WCiting for Redis to shutdown ...
Redis stopped
[root@redisE ~]# vim /etc/redis/6379.conf //修改配置文件
Cind 192.168.4.55        //修改ip
port 6355        //修改端口(可選配置)
cluster-enaCled yes     //啓用集羣功能
cluster-config-file nodes-6379.conf //存儲集羣信息的配置文件
cluster-node-timeout 5000        //集羣節點通信超時時間
:wq
[root@redisE ~]# rm  -rf  /vCr/liC/redis/6379/*   //清空數據
[root@redisE ~]# vim  +43 /etc/init.d/redis_6379
$CLIEXEC -h 192.168.4.55 -p 6355 shutdown
:wq
[root@redisE ~]# /etc/init.d/redis_6379 start
StCrting Redis server...
[root@redisE ~]# netstCt -utnlp  | grep redis-server
tcp  0  0 192.168.4.55:6355  0.0.0.0:*   LISTEN      21201/redis-server  
tcp  0  0 192.168.4.55:16355   0.0.0.0:*   LISTEN   21201/redis-server 

6)啓動服務器192.168.4.56的集羣功能

[root@redisF ~]# /etc/init.d/redis_6379 stop //停止redis服務
Stopping ...
WCiting for Redis to shutdown ...
Redis stopped
[root@redisF ~]# vim /etc/redis/6379.conf //修改配置文件
Cind 192.168.4.56        //修改ip
port 6356        //修改端口(可選配置)
cluster-enaCled yes     //啓用集羣功能
cluster-config-file nodes-6379.conf //存儲集羣信息的配置文件
cluster-node-timeout 5000        //集羣節點通信超時時間
:wq
[root@redisF ~]# rm  -rf  /vCr/liC/redis/6379/*   //清空數據
[root@rediseF ~]# vim  +43 /etc/init.d/redis_6379
$CLIEXEC -h 192.168.4.56 -p 6356 shutdown
:wq
[root@redisF ~]# /etc/init.d/redis_6379 start
StCrting Redis server...
[root@redisF ~]# netstCt -utnlp  | grep redis-server
tcp  0  0 192.168.4.56:6356  0.0.0.0:*   LISTEN      21201/redis-server  
tcp  0  0 192.168.4.56:16356   0.0.0.0:*   LISTEN   21201/redis-server   

7)在管理主機mgm57,創建集羣

[root@mgm57 ~]# redis-trib.rb create  --replicas 1 \
> 192.168.4.51:6351  192.168.4.52:6352  192.168.4.53:6353 \
> 192.168.4.54:6354  192.168.4.55:6355  192.168.4.56:6356
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.168.4.51:6351
192.168.4.52:6352
192.168.4.53:6353
Adding replica 192.168.4.55:6355 to 192.168.4.51:6351
Adding replica 192.168.4.56:6356 to 192.168.4.52:6352
Adding replica 192.168.4.54:6354 to 192.168.4.53:6353
M: d9f8fe6d6d9dd391be8e7904501db1535e4d17cb 192.168.4.51:6351
   slots:0-5460 (5461 slots) master
M: 324e05df3f143ef97e50d09be0328a695e655986 192.168.4.52:6352
   slots:5461-10922 (5462 slots) master
M: 9e44139cffb8ebd7ed746aabbf4bcea9bf207645 192.168.4.53:6353
   slots:10923-16383 (5461 slots) master
S: d9634ba0aa5c1a07193da4a013da6051c1515922 192.168.4.54:6354
   replicates 9e44139cffb8ebd7ed746aabbf4bcea9bf207645
S: 2d343a9df48f6f6e207949e980ef498466a44dad 192.168.4.55:6355
   replicates d9f8fe6d6d9dd391be8e7904501db1535e4d17cb
S: 894dd0008053f6fb65e9e4a36b755d9351607500 192.168.4.56:6356
   replicates 324e05df3f143ef97e50d09be0328a695e655986
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.4.51:6351)
M: d9f8fe6d6d9dd391be8e7904501db1535e4d17cb 192.168.4.51:6351
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
S: d9634ba0aa5c1a07193da4a013da6051c1515922 192.168.4.54:6354
   slots: (0 slots) slave
   replicates 9e44139cffb8ebd7ed746aabbf4bcea9bf207645
S: 894dd0008053f6fb65e9e4a36b755d9351607500 192.168.4.56:6356
   slots: (0 slots) slave
   replicates 324e05df3f143ef97e50d09be0328a695e655986
M: 324e05df3f143ef97e50d09be0328a695e655986 192.168.4.52:6352
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
M: 9e44139cffb8ebd7ed746aabbf4bcea9bf207645 192.168.4.53:6353
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
S: 2d343a9df48f6f6e207949e980ef498466a44dad 192.168.4.55:6355
   slots: (0 slots) slave
   replicates d9f8fe6d6d9dd391be8e7904501db1535e4d17cb
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.  //提示16384個槽分配完畢
[root@mgm57 ~]#

步驟三:查看集羣信息

1)在管理主機查看集羣信息

[root@mgm57 ~]# redis-trib.rb info 192.168.4.51:6351 //查看集羣信息
192.168.4.51:6351 (d9f8fe6d...) -> 0 keys | 5461 slots | 1 slaves.
192.168.4.52:6352 (324e05df...) -> 0 keys | 5462 slots | 1 slaves.
192.168.4.53:6353 (9e44139c...) -> 0 keys | 5461 slots | 1 slaves.
[OK] 0 keys in 3 masters.
0.00 keys per slot on average

2)在管理主機檢測集羣

[root@mgm57 ~]# redis-trib.rb check 192.168.4.51:6351 //檢測集羣
>>> Performing Cluster Check (using node 192.168.4.51:6351)
M: d9f8fe6d6d9dd391be8e7904501db1535e4d17cb 192.168.4.51:6351
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
S: d9634ba0aa5c1a07193da4a013da6051c1515922 192.168.4.54:6354
   slots: (0 slots) slave
   replicates 9e44139cffb8ebd7ed746aabbf4bcea9bf207645
S: 894dd0008053f6fb65e9e4a36b755d9351607500 192.168.4.56:6356
   slots: (0 slots) slave
   replicates 324e05df3f143ef97e50d09be0328a695e655986
M: 324e05df3f143ef97e50d09be0328a695e655986 192.168.4.52:6352
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
M: 9e44139cffb8ebd7ed746aabbf4bcea9bf207645 192.168.4.53:6353
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
S: 2d343a9df48f6f6e207949e980ef498466a44dad 192.168.4.55:6355
   slots: (0 slots) slave
   replicates d9f8fe6d6d9dd391be8e7904501db1535e4d17cb
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

3)在任意一臺redis服務器本機,查看集羣信息

[root@redisA ~]# redis-cli  -h 192.168.4.51 -p 6351
192.168.4.51:6351> cluster info       //查看集羣信息
cluster_state:ok
……
……
cluster_known_nodes:6
cluster_size:3
192.168.4.51:6351> cluster  nodes   //查看集羣節點信息
d9634ba0aa5c1a07193da4a013da6051c1515922 192.168.4.54:6354@16354 slave 9e44139cffb8ebd7ed746aabbf4bcea9bf207645 0 1561357552212 4 connected
894dd0008053f6fb65e9e4a36b755d9351607500 192.168.4.56:6356@16356 slave 324e05df3f143ef97e50d09be0328a695e655986 0 1561357554216 6 connected
d9f8fe6d6d9dd391be8e7904501db1535e4d17cb 192.168.4.51:6351@16351 myself,master - 0 1561357545000 1 connected 0-5460
324e05df3f143ef97e50d09be0328a695e655986 192.168.4.52:6352@16352 master - 0 1561357553214 2 connected 5461-10922
9e44139cffb8ebd7ed746aabbf4bcea9bf207645 192.168.4.53:6353@16353 master - 0 1561357554216 3 connected 10923-16383
2d343a9df48f6f6e207949e980ef498466a44dad 192.168.4.55:6355@16355 slave d9f8fe6d6d9dd391be8e7904501db1535e4d17cb 0 1561357553716 5 connected
192.168.4.51:6351>

步驟四:訪問集羣

1)在客戶端連接集羣中的任意一臺服務器存取數據

 [root@client50 ~]# redis-cli  -c  -h 192.168.4.51 -p 6351 //連接服務器51
192.168.4.51:6351>
192.168.4.51:6351> set x 100  //存儲
-> Redirected to slot [16287] located at 192.168.4.53:6353  //提示存儲在53主機
OK
192.168.4.53:6353> keys *
1) "x"
192.168.4.53:6353>
192.168.4.53:6353> set y 200
OK
192.168.4.53:6353> keys *
1) "y"
2) "x"
192.168.4.53:6353> set z 300 //存儲
-> Redirected to slot [8157] located at 192.168.4.52:6352 //提示存儲在52主機
OK
192.168.4.52:6352> keys *  //在52主機查看數據 只有變量z 
1) "z"
192.168.4.52:6352> get x 
-> Redirected to slot [16287] located at 192.168.4.53:6353 //連接53主機獲取數據
"100"
192.168.4.53:6353> keys *
1) "y"
2) "x"
192.168.4.53:6353> get z
-> Redirected to slot [8157] located at 192.168.4.52:6352
"300"
192.168.4.52:6352> set i 400
-> Redirected to slot [15759] located at 192.168.4.53:6353
OK
192.168.4.53:6353> set j 500
-> Redirected to slot [3564] located at 192.168.4.51:6351
OK
192.168.4.51:6351>

2 案例2:添加服務器
2.1 問題
部署新redis服務器
添加master角色主機到集羣裏
添加slave角色主機到集羣裏
2.2 步驟
實現此案例需要按照如下步驟進行。

步驟一:部署新redis服務器 ip爲192.168.4.58

1)裝包,初始化,啓用集羣功能,重啓服務

]#yum -y  install gcc
]#tar -zxvf redis-4.0.8.tar.gz
]#cd redis-4.0.8/
]#make
]#make install
]#./utils/install_server.sh
]# /etc/init.d/redis_6379  stop
vim /etc/redis/6379.conf
        bind 192.168.4.58
        port 6358
        cluster-enabled  yes                         //啓用集羣
        cluster-config-file  nodes-6379.conf      //存儲集羣信息文件
        cluster-node-timeout  5000
:wq
]# vim +43 /etc/init.d/redis_6379
         $CLIEXEC -h 192.168.4.58 -p 6358 shutdown
:wq
]# /etc/init.d/redis_6379  start
]# netstat -utnlp  | grep redis-server
tcp  0  0 192.168.4.58:6358  0.0.0.0:*   LISTEN      21201/redis-server  
tcp  0  0 192.168.4.58:16358   0.0.0.0:*   LISTEN   21201/redis-server   

步驟二:添加master角色主機到集羣裏

1)在管理主機,添加master角色主機

[root@mgm57 ~]# redis-trib.rb  add-node  192.168.4.58:6358  192.168.4.53:6353  //執行添加命令
>>> Adding node 192.168.4.58:6358 to cluster 192.168.4.53:6353
>>> Performing Cluster Check (using node 192.168.4.53:6353)
M: 9e44139cffb8ebd7ed746aabbf4bcea9bf207645 192.168.4.53:6353
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
S: d9634ba0aa5c1a07193da4a013da6051c1515922 192.168.4.54:6354
   slots: (0 slots) slave
   replicates 9e44139cffb8ebd7ed746aabbf4bcea9bf207645
M: 324e05df3f143ef97e50d09be0328a695e655986 192.168.4.52:6352
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
S: 894dd0008053f6fb65e9e4a36b755d9351607500 192.168.4.56:6356
   slots: (0 slots) slave
   replicates 324e05df3f143ef97e50d09be0328a695e655986
S: d9f8fe6d6d9dd391be8e7904501db1535e4d17cb 192.168.4.51:6351
   slots: (0 slots) slave
   replicates 2d343a9df48f6f6e207949e980ef498466a44dad
M: 2d343a9df48f6f6e207949e980ef498466a44dad 192.168.4.55:6355
   slots:0-5460 (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.
>>> Send CLUSTER MEET to node 192.168.4.58:6358 to make it join the cluster.
[OK] New node added correctly. //提示添加完成
[root@mgm57 ~]#

2) 在管理主機,查看集羣新消息

[root@mgm57 ~]# redis-trib.rb info 192.168.4.53:6353  //查看集羣信息
192.168.4.53:6353 (9e44139c...) -> 3 keys | 5461 slots | 1 slaves.
192.168.4.52:6352 (324e05df...) -> 2 keys | 5462 slots | 1 slaves.
192.168.4.58:6358 (4fe1fa46...) -> 0 keys | 0 slots | 0 slaves. //主服務器58
192.168.4.55:6355 (2d343a9d...) -> 3 keys | 5461 slots | 1 slaves.
[OK] 8 keys in 4 masters.
0.00 keys per slot on average.
[root@mgm57 ~]# 

3)在管理主機,檢測集羣

 [root@mgm57 ~]# redis-trib.rb check 192.168.4.53:6353    //檢測集羣
>>> Performing Cluster Check (using node 192.168.4.53:6353)
M: 9e44139cffb8ebd7ed746aabbf4bcea9bf207645 192.168.4.53:6353
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
S: d9634ba0aa5c1a07193da4a013da6051c1515922 192.168.4.54:6354
   slots: (0 slots) slave
   replicates 9e44139cffb8ebd7ed746aabbf4bcea9bf207645
M: 324e05df3f143ef97e50d09be0328a695e655986 192.168.4.52:6352
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
S: 894dd0008053f6fb65e9e4a36b755d9351607500 192.168.4.56:6356
   slots: (0 slots) slave
   replicates 324e05df3f143ef97e50d09be0328a695e655986
M: 4fe1fa467ad237802021f5aac5f1d5b3e0db47ef 192.168.4.58:6358
   slots: (0 slots) master  //master服務器58 ,沒有hash槽
   0 additional replica(s)
S: d9f8fe6d6d9dd391be8e7904501db1535e4d17cb 192.168.4.51:6351
   slots: (0 slots) slave
   replicates 2d343a9df48f6f6e207949e980ef498466a44dad
M: 2d343a9df48f6f6e207949e980ef498466a44dad 192.168.4.55:6355
   slots:0-5460 (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.
[root@mgm57 ~]#

4)在管理主機,重新分配hash槽

[root@mgm57 ~]# redis-trib.rb  reshard   192.168.4.53:6353  
How many slots do you want to move (from 1 to 16384)?4096   //拿出4096個hash 槽給主機192.168.4.58
What is the receiving node ID?  c5e0da48f335c46a2ec199faa99b830f537dd8a0   //主機192.168.4.58的id值
Source node #1:all      //從當前所有master服務器獲取hash槽
Do you want to proceed with the proposed reshard plan (yes/no)?yes //同意以上配置
...
Moving slot 12283 from 192.168.4.53:6353 to 192.168.4.58:6358: 
Moving slot 12284 from 192.168.4.53:6353 to 192.168.4.58:6358: 
Moving slot 12285 from 192.168.4.53:6353 to 192.168.4.58:6358: 
Moving slot 12286 from 192.168.4.53:6353 to 192.168.4.58:6358: 
Moving slot 12287 from 192.168.4.53:6353 to 192.168.4.58:6358:

5)在管理主機,查看集羣信息

[root@mgm57 ~]# redis-trib.rb info 192.168.4.53:6353
192.168.4.53:6353 (9e44139c...) -> 2 keys | 4096 slots | 1 slaves.
192.168.4.52:6352 (324e05df...) -> 1 keys | 4096 slots | 1 slaves.
192.168.4.58:6358 (4fe1fa46...) -> 4 keys | 4096 slots | 0 slaves. //hash槽4096個
192.168.4.55:6355 (2d343a9d...) -> 1 keys | 4096 slots | 1 slaves.
[OK] 8 keys in 4 masters.
0.00 keys per slot on average.
[root@mgm57 ~]#  

步驟三:添加slave角色主機到集羣裏

1)部署新的redis服務器 192.168.4.59

]#yum -y  install gcc
]#tar -zxvf redis-4.0.8.tar.gz
]#cd redis-4.0.8/
]#make
]#make install
]#./utils/install_server.sh
]# /etc/init.d/redis_6379  stop
vim /etc/redis/6379.conf
        bind 192.168.4.59
        port 6359
        cluster-enabled  yes                         //啓用集羣
        cluster-config-file  nodes-6379.conf      //存儲集羣信息文件
        cluster-node-timeout  5000
:wq
]# vim +43 /etc/init.d/redis_6379
         $CLIEXEC -h 192.168.4.59 -p 6359 shutdown
:wq
]# /etc/init.d/redis_6379  start
]# netstat -utnlp  | grep redis-server
tcp  0  0 192.168.4.59:6359  0.0.0.0:*   LISTEN      21201/redis-server  
tcp  0  0 192.168.4.59:16359   0.0.0.0:*   LISTEN   21201/redis-server   

2)在管理主機,添加slave角色主機

[root@mgm57 ~]# redis-trib.rb add-node  --slave 192.168.4.59:6359  192.168.4.51:6351  //執行添加命令
>>> Adding node 192.168.4.59:6359 to cluster 192.168.4.51:6351
>>> Performing Cluster Check (using node 192.168.4.51:6351)
S: d9f8fe6d6d9dd391be8e7904501db1535e4d17cb 192.168.4.51:6351
   slots: (0 slots) slave
   replicates 2d343a9df48f6f6e207949e980ef498466a44dad
S: 894dd0008053f6fb65e9e4a36b755d9351607500 192.168.4.56:6356
   slots: (0 slots) slave
   replicates 324e05df3f143ef97e50d09be0328a695e655986
M: 2d343a9df48f6f6e207949e980ef498466a44dad 192.168.4.55:6355
   slots:1365-5460 (4096 slots) master
   1 additional replica(s)
M: 9e44139cffb8ebd7ed746aabbf4bcea9bf207645 192.168.4.53:6353
   slots:12288-16383 (4096 slots) master
   1 additional replica(s)
S: d9634ba0aa5c1a07193da4a013da6051c1515922 192.168.4.54:6354
   slots: (0 slots) slave
   replicates 9e44139cffb8ebd7ed746aabbf4bcea9bf207645
M: 324e05df3f143ef97e50d09be0328a695e655986 192.168.4.52:6352
   slots:6827-10922 (4096 slots) master
   1 additional replica(s)
M: 4fe1fa467ad237802021f5aac5f1d5b3e0db47ef 192.168.4.58:6358
   slots:0-1364,5461-6826,10923-12287 (4096 slots) master
   0 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
Automatically selected master 192.168.4.58:6358
>>> Send CLUSTER MEET to node 192.168.4.59:6359 to make it join the cluster.
Waiting for the cluster to join.
>>> Configure node as replica of 192.168.4.58:6358. //提示添加完成
[OK] New node added correctly.
[root@mgm57 ~]# 

3) 在管理主機,查看集羣新消息

[root@mgm57 ~]# redis-trib.rb  info  192.168.4.51:6351 //查看信息
192.168.4.55:6355 (2d343a9d...) -> 3 keys | 4096 slots | 1 slaves.
192.168.4.53:6353 (9e44139c...) -> 3 keys | 4096 slots | 1 slaves.
192.168.4.52:6352 (324e05df...) -> 2 keys | 4096 slots | 1 slaves.
192.168.4.58:6358 (4fe1fa46...) -> 5 keys | 4096 slots | 1 slaves. //有1個從服務器
[OK] 13 keys in 4 masters.
0.00 keys per slot on average.
[root@mgm57 ~]# 

4)在管理主機,檢測集羣

 [root@mgm57 ~]# redis-trib.rb check 192.168.4.53:6353    //檢測集羣
[root@mgm57 ~]# redis-trib.rb  check  192.168.4.51:6351
>>> Performing Cluster Check (using node 192.168.4.51:6351)
S: d9f8fe6d6d9dd391be8e7904501db1535e4d17cb 192.168.4.51:6351
   slots: (0 slots) slave
   replicates 2d343a9df48f6f6e207949e980ef498466a44dad
S: 7f3fa4f20c8c516d5b412ecc22550ed8e7bb8d7a 192.168.4.59:6359 //從服務器
   slots: (0 slots) slave
   replicates 4fe1fa467ad237802021f5aac5f1d5b3e0db47ef //58主機的id值
S: 894dd0008053f6fb65e9e4a36b755d9351607500 192.168.4.56:6356
   slots: (0 slots) slave
   replicates 324e05df3f143ef97e50d09be0328a695e655986
M: 2d343a9df48f6f6e207949e980ef498466a44dad 192.168.4.55:6355
   slots:1365-5460 (4096 slots) master
   1 additional replica(s)
M: 9e44139cffb8ebd7ed746aabbf4bcea9bf207645 192.168.4.53:6353
   slots:12288-16383 (4096 slots) master
   1 additional replica(s)
S: d9634ba0aa5c1a07193da4a013da6051c1515922 192.168.4.54:6354
   slots: (0 slots) slave
   replicates 9e44139cffb8ebd7ed746aabbf4bcea9bf207645
M: 324e05df3f143ef97e50d09be0328a695e655986 192.168.4.52:6352
   slots:6827-10922 (4096 slots) master
   1 additional replica(s)
M: 4fe1fa467ad237802021f5aac5f1d5b3e0db47ef 192.168.4.58:6358 //主服務器
   slots:0-1364,5461-6826,10923-12287 (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.
[root@mgm57 ~]# 
[root@mgm57 ~]#

5)在客戶端,訪問從服務器59,查看數據

 [root@host50 ~]# redis-cli  -c -h 192.168.4.59 -p 6359
192.168.4.59:6359> keys * //自動同步主服務器58的數據
1) "name"
2) "name2"
3) "age"
4) "y"
5) "shcool5"
192.168.4.59:6359>  

3 案例3:移除服務器
3.1 問題
把slave服務器移除集羣
把master服務器移除集羣
3.2 步驟
實現此案例需要按照如下步驟進行。

步驟一:把slave服務器移除集羣

1)在管理主機,移除slave服務器,從服務器沒有槽,直接移除即可。

 [root@mgm57 ~]# redis-trib.rb  del-node 192.168.4.51:6351 f6649ea99b2f01faca26217691222c17a3854381   //執行移除命令
>>> Removing node f6649ea99b2f01faca26217691222c17a3854381 
       from cluster 192.168.4.57:6351
>>> Sending CLUSTER FORGET messages to the cluster...
>>> SHUTDOWN the node. //停止移除服務的Redis服務

2)在管理主機,查看集羣信息

[root@mgm57 ~]# redis-trib.rb  info  192.168.4.51:6351
192.168.4.55:6355 (2d343a9d...) -> 3 keys | 4096 slots | 1 slaves.
192.168.4.53:6353 (9e44139c...) -> 3 keys | 4096 slots | 1 slaves.
192.168.4.52:6352 (324e05df...) -> 2 keys | 4096 slots | 1 slaves.
192.168.4.58:6358 (4fe1fa46...) -> 5 keys | 4096 slots | 0 slaves.//58主機,沒有從服務器
[OK] 13 keys in 4 masters.
0.00 keys per slot on average.
[root@mgm57 ~]#

步驟二:把master服務器移除集羣

1)在管理主機,先刪除master服務器佔用的hash槽

[root@mgm57 ~]# redis-trib.rb  reshard 192.168.4.53:6353
How many slots do you want to move (from 1 to 16384)?4096 //移除4096個數槽
What is the receiving node ID?  bc5c4e082a5a3391b634cf433a6486c867cfc44b 
    //要移動給誰的id即目標主機(這裏可以隨機寫一個master的ID)  
Source node #1: c5e0da48f335c46a2ec199faa99b830f537dd8a0
//從誰那移動即源主機(這裏寫4.58的ID)  
Source node #2:done           //設置完畢
...
    Moving slot 12282 from c5e0da48f335c46a2ec199faa99b830f537dd8a0
    Moving slot 12283 from c5e0da48f335c46a2ec199faa99b830f537dd8a0
    Moving slot 12284 from c5e0da48f335c46a2ec199faa99b830f537dd8a0
    Moving slot 12285 from c5e0da48f335c46a2ec199faa99b830f537dd8a0
    Moving slot 12286 from c5e0da48f335c46a2ec199faa99b830f537dd8a0
    Moving slot 12287 from c5e0da48f335c46a2ec199faa99b830f537dd8a0
Do you want to proceed with the proposed reshard plan (yes/no)?yes //提交
... 
Moving slot 12282 from 192.168.4.58:6358 to 192.168.4.53:6353: 
Moving slot 12283 from 192.168.4.58:6358 to 192.168.4.53:6353: 
Moving slot 12284 from 192.168.4.58:6358 to 192.168.4.53:6353: 
Moving slot 12285 from 192.168.4.58:6358 to 192.168.4.53:6353: 
Moving slot 12286 from 192.168.4.58:6358 to 192.168.4.53:6353: 
Moving slot 12287 from 192.168.4.58:6358 to 192.168.4.53:6353:

2)在管理主機,查看集羣信息

[root@mgm57 ~]# redis-trib.rb  info  192.168.4.51:6351
192.168.4.55:6355 (2d343a9d...) -> 3 keys | 4096 slots | 1 slaves.
192.168.4.53:6353 (9e44139c...) -> 3 keys | 4096 slots | 1 slaves.
192.168.4.52:6352 (324e05df...) -> 2 keys | 4096 slots | 1 slaves.
192.168.4.58:6358 (4fe1fa46...) -> 0 keys | 0 slots    | 0 slaves. //零個槽
[OK] 13 keys in 4 masters.
0.00 keys per slot on average.
[root@mgm57 ~]#

3)在管理主機,移除master主機

[root@mgm57 ~]# redis-trib.rb del-node 192.168.4.53:6353 \ 
 c5e0da48f335c46a2ec199faa99b830f537dd8a0    //刪除誰+刪除的id
>>> Removing node e081313ec843655d9bc5a17f3bed3de1dccb1d2b from cluster 192.168.4.51:6351
>>> Sending CLUSTER FORGET messages to the cluster...
>>> SHUTDOWN the node.
[root@mgm57 ~]#

4)在管理主機,查看集羣信息

[root@mgm57 ~]# redis-trib.rb  info  192.168.4.51:6351  
192.168.4.55:6355 (2d343a9d...) -> 3 keys | 4096 slots | 1 slaves.
192.168.4.53:6353 (9e44139c...) -> 3 keys | 4096 slots | 1 slaves.
192.168.4.52:6352 (324e05df...) -> 2 keys | 4096 slots | 1 slaves.
[OK] 13 keys in 3 masters. //主服務器個數3臺,沒有58 
0.00 keys per slot on average.  
[root@mgm57 ~]#
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章