Linux Redis集群安裝手冊(cè)

提示:搭建redis集群最少6個(gè)redis服務(wù)器

第一節(jié)工具原料

網(wǎng)址:
rubby
redis
edis-3.3.5.gem
版本:
ruby-2.6.5
redis-4.0.14
redis-3.3.5.gem
系統(tǒng)環(huán)境:

主機(jī)名 操作系統(tǒng) ip地址 安裝軟件 redis端口 備注
nsql140 CentOS 7.4 192.168.122.140 ruby-2.6.5 redis-4.0.14 redis-3.3.5.gem 6379 6380 redis集群管理節(jié)點(diǎn)
nsql141 CentOS 7.4 192.168.122.141 redis-4.0.14 6379 6380
nsql142 CentOS 7.4 192.168.122.142 redis-4.0.14 6379 6380

實(shí)驗(yàn)前提(所有主機(jī)都要操作)

[root@nosql140 ~]# systemctl stop firewalld
[root@nosql140 ~]# systemctl disable firewalld
[root@nosql140 ~]# yum -y install iptables-services
[root@nosql140 ~]# service iptables -F
[root@nosql140 ~]# service iptables save
[root@nosql140 ~]# setenforce 0
[root@nosql140 ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

redis安裝與初始化

1.安裝

[root@nosql140 iso]# yum -y install gcc-c++ make
[root@nosql140 iso]# tar -xvf redis-4.0.14.tar.gz 
[root@nosql140 iso]# cd redis-4.0.14
[root@nosql140 redis-4.0.14]# make 
[root@nosql140 redis-4.0.14]# mmake install

2.初始化
一臺(tái)主機(jī)安裝2個(gè)redis

#執(zhí)行腳本命令,一路默認(rèn)
[root@nosql140 redis-4.0.14]# ./utils/install_server.sh
....
Starting Redis server...
Installation successful!
[root@nosql140 ~]# vim /etc/redis/6379.conf
....
bind 192.168.122.140
cluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-node-timeout 15000
....
[root@nosql140 ~]# /etc/init.d/redis_6379 restart
[root@nosql140 ~]# ss -tunlp | grep 6379
tcp    LISTEN     0      128    192.168.122.140:6379                  *:*                   users:(("redis-server",pid=819,fd=6))
tcp    LISTEN     0      128    192.168.122.140:16379                 *:*                   users:(("redis-server",pid=819,fd=8))
#寫(xiě)入6380就一路默認(rèn)
[root@nosql140 redis-4.0.14]# ./utils/install_server.sh 
Welcome to the redis service installer
This script will help you easily set up a running redis server

Please select the redis port for this instance: [6379] 6380
Please select the redis config file name [/etc/redis/6380.conf]
....
[root@nosql140 ~]# vim /etc/redis/6380.conf
....
bind 192.168.122.140
cluster-enabled yes
cluster-config-file nodes-6380.conf
cluster-node-timeout 15000
....
[root@nosql140 ~]# /etc/init.d/redis_6380 restart
[root@nosql140 ~]# ss -tunlp | grep 6380
tcp    LISTEN     0      128    192.168.122.140:6380                  *:*                   users:(("redis-server",pid=822,fd=6))
tcp    LISTEN     0      128    192.168.122.140:16380                 *:*                   users:(("redis-server",pid=822,fd=8))

3.管理命令

#啟動(dòng) | 停止 | 查看狀態(tài) | 重啟
/etc/init.d/redis_6379 start | stop | status | restart

第三節(jié)安裝rubby

[root@nosql140 iso]# yum -y install openssl-devel
[root@nosql140 iso]# mkdir -p /usr/local/ruby2.6
[root@nosql140 iso]# tar -xvf ruby-2.6.5.tar.gz 
[root@nosql140 iso]# cd ruby-2.6.5
[root@nosql140 ruby-2.6.5]# ./configure -prefix=/usr/local/ruby2.6
[root@nosql140 ruby-2.6.5]# make && make install
[root@nosql140 ~]# vim /etc/profile
....
export RUBBY_HOME=/usr/local/ruby2.6/
export PATH=$RUBBY_HOME/bin:$PATH
[root@nosql140 ~]# source /etc/profile
[root@nosql140 ~]# ruby -v
ruby 2.6.5p114 (2019-10-01 revision 67812) [x86_64-linux]
[root@nosql140 ~]# gem -v
3.0.3

第四節(jié)使用gem安裝redis的接口

[root@nosql140 iso]# gem install ./redis-3.3.5.gem
Successfully installed redis-3.3.5
Parsing documentation for redis-3.3.5
Installing ri documentation for redis-3.3.5
Done installing documentation for redis after 0 seconds
1 gem installed

第五節(jié)redis-trib.rb創(chuàng)建集群

[root@nosql140 iso]# cd  redis-4.0.14
[root@nosql140 redis-4.0.14]# cp src/redis-trib.rb /usr/local/bin/
[root@nosql140 redis-4.0.14]# redis-trib.rb create --replicas 1 192.168.122.140:6379 192.168.122.141:6379 192.168.122.142:6379 192.168.122.140:6380 192.168.122.141:6380 192.168.122.142:6380
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.168.122.140:6379
192.168.122.141:6379
192.168.122.142:6379
Adding replica 192.168.122.141:6380 to 192.168.122.140:6379
Adding replica 192.168.122.142:6380 to 192.168.122.141:6379
Adding replica 192.168.122.140:6380 to 192.168.122.142:6379
M: 457ad182d1f12a65cf0c0903ed129542d74d1034 192.168.122.140:6379
   slots:0-5460 (5461 slots) master
M: 1503ad1b97e6891b612146c48a1ad16dc626331e 192.168.122.141:6379
   slots:5461-10922 (5462 slots) master
M: 2536392d9bdbe7b01a5a409d7fb680cb23e2cc1b 192.168.122.142:6379
   slots:10923-16383 (5461 slots) master
S: 829204c1049823bcaf3a55c6892bae18931cf918 192.168.122.140:6380
   replicates 2536392d9bdbe7b01a5a409d7fb680cb23e2cc1b
S: d306596bfd3f8263f37230abcb265aa65e6867ae 192.168.122.141:6380
   replicates 457ad182d1f12a65cf0c0903ed129542d74d1034
S: ecf4bcfb6175f7e75dfe3693f3107b585bd86c4e 192.168.122.142:6380
   replicates 1503ad1b97e6891b612146c48a1ad16dc626331e
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.122.140:6379)
M: 457ad182d1f12a65cf0c0903ed129542d74d1034 192.168.122.140:6379
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
S: 829204c1049823bcaf3a55c6892bae18931cf918 192.168.122.140:6380
   slots: (0 slots) slave
   replicates 2536392d9bdbe7b01a5a409d7fb680cb23e2cc1b
S: d306596bfd3f8263f37230abcb265aa65e6867ae 192.168.122.141:6380
   slots: (0 slots) slave
   replicates 457ad182d1f12a65cf0c0903ed129542d74d1034
M: 2536392d9bdbe7b01a5a409d7fb680cb23e2cc1b 192.168.122.142:6379
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
M: 1503ad1b97e6891b612146c48a1ad16dc626331e 192.168.122.141:6379
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
S: ecf4bcfb6175f7e75dfe3693f3107b585bd86c4e 192.168.122.142:6380
   slots: (0 slots) slave
   replicates 1503ad1b97e6891b612146c48a1ad16dc626331e
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

簡(jiǎn)單解釋一下這個(gè)命令:調(diào)用 ruby 命令來(lái)進(jìn)行創(chuàng)建集群:

--replicas 1 表示主從復(fù)制比例為 1:1菇晃,即一個(gè)主節(jié)點(diǎn)對(duì)應(yīng)一個(gè)從節(jié)點(diǎn);然后莫瞬,默認(rèn)給我們分配好了每個(gè)主節(jié)點(diǎn)和對(duì)應(yīng)從節(jié)點(diǎn)服務(wù)帅韧,以及 solt 的大小,因?yàn)樵?Redis 集群中有且僅有 16383 個(gè) solt ,默認(rèn)情況會(huì)給我們平均分配挖诸,當(dāng)然你可以指定智末,后續(xù)的增減節(jié)點(diǎn)也可以重新分配谅摄。

第六節(jié)集群驗(yàn)證

隨便登陸一臺(tái)驗(yàn)證,這里以140的6379為例

#加參數(shù) -c 可連接到集群系馆,因?yàn)?redis.conf 將 bind 改為了ip地址送漠,所以 -h 參數(shù)不可以省略,-p 參數(shù)為端口號(hào) 
[root@nosql140 ~]# redis-cli -c -h 192.168.122.140 -p 6379
#查看集群狀態(tài)
192.168.122.140:6379> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:1
cluster_stats_messages_ping_sent:66
cluster_stats_messages_pong_sent:67
cluster_stats_messages_sent:133
cluster_stats_messages_ping_received:62
cluster_stats_messages_pong_received:66
cluster_stats_messages_meet_received:5
cluster_stats_messages_received:133
#查看集群節(jié)點(diǎn)信息
192.168.122.140:6379> cluster nodes
829204c1049823bcaf3a55c6892bae18931cf918 192.168.122.140:6380@16380 slave 2536392d9bdbe7b01a5a409d7fb680cb23e2cc1b 0 1570704238536 4 connected
d306596bfd3f8263f37230abcb265aa65e6867ae 192.168.122.141:6380@16380 slave 457ad182d1f12a65cf0c0903ed129542d74d1034 0 1570704239000 5 connected
2536392d9bdbe7b01a5a409d7fb680cb23e2cc1b 192.168.122.142:6379@16379 master - 0 1570704237000 3 connected 10923-16383
457ad182d1f12a65cf0c0903ed129542d74d1034 192.168.122.140:6379@16379 myself,master - 0 1570704237000 1 connected 0-5460
1503ad1b97e6891b612146c48a1ad16dc626331e 192.168.122.141:6379@16379 master - 0 1570704237534 2 connected 5461-10922
ecf4bcfb6175f7e75dfe3693f3107b585bd86c4e 192.168.122.142:6380@16380 slave 1503ad1b97e6891b612146c48a1ad16dc626331e 0 1570704239538 6 connected

第七節(jié)管理集群

語(yǔ)法格式:

redis-trib.rb  選項(xiàng)  參數(shù)

選項(xiàng):

  • add-node 添加master主機(jī)
  • check 檢測(cè)集群
  • reshard 重新分片
  • add-node --slave 添加slave主機(jī)
  • del-node 刪除主機(jī)

添加新節(jié)點(diǎn)

1.添加master節(jié)點(diǎn)
安裝新redis節(jié)點(diǎn)(在140主機(jī)上)

[root@nosql140 ~]# cd /iso/redis-4.0.14/
[root@nosql140 redis-4.0.14]# ./utils/install_server.sh 
Welcome to the redis service installer
This script will help you easily set up a running redis server

Please select the redis port for this instance: [6379] 6378
...
[root@nosql140 redis-4.0.14]# vim /etc/redis/6378.conf
bind 192.168.122.140
cluster-enabled yes
cluster-config-file nodes-6378.conf
cluster-node-timeout 15000
[root@nosql140 redis-4.0.14]# /etc/init.d/redis_6378 restart
[root@nosql140 redis-4.0.14]# ss -tunpl | grep 6378
tcp    LISTEN     0      128    192.168.122.140:16378                 *:*                   users:(("redis-server",pid=1193,fd=8))
tcp    LISTEN     0      128    192.168.122.140:6378                  *:*                   users:(("redis-server",pid=1193,fd=6))

2.添加節(jié)點(diǎn)到集群中

[root@nosql140 ~]# redis-trib.rb add-node 192.168.122.140:6378 192.168.122.140:6379
>>> Adding node 192.168.122.140:6378 to cluster 192.168.122.140:6379
....
>>> Send CLUSTER MEET to node 192.168.122.140:6378 to make it join the cluster.
[OK] New node added correctly.

3.查看狀態(tài)

[root@nosql140 ~]# redis-trib.rb check 192.168.122.140:6378
>>> Performing Cluster Check (using node 192.168.122.140:6378)
M: cd989d61fad9ff2f0596b051f6a566fd2d541e3c 192.168.122.140:6378
   slots: (0 slots) master    #6378發(fā)現(xiàn)沒(méi)有hash槽
   0 additional replica(s)
M: 1503ad1b97e6891b612146c48a1ad16dc626331e 192.168.122.141:6379
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
S: ecf4bcfb6175f7e75dfe3693f3107b585bd86c4e 192.168.122.142:6380
   slots: (0 slots) slave
   replicates 1503ad1b97e6891b612146c48a1ad16dc626331e
M: 457ad182d1f12a65cf0c0903ed129542d74d1034 192.168.122.140:6379
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
S: d306596bfd3f8263f37230abcb265aa65e6867ae 192.168.122.141:6380
   slots: (0 slots) slave
   replicates 457ad182d1f12a65cf0c0903ed129542d74d1034
M: 2536392d9bdbe7b01a5a409d7fb680cb23e2cc1b 192.168.122.142:6379
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
S: 829204c1049823bcaf3a55c6892bae18931cf918 192.168.122.140:6380
   slots: (0 slots) slave
   replicates 2536392d9bdbe7b01a5a409d7fb680cb23e2cc1b
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

4手動(dòng)對(duì)集群進(jìn)行分片遷移
提示:總共16384由蘑,總共有4個(gè)master闽寡,即每個(gè)master=16384/4=4096

[root@nosql140 ~]# redis-trib.rb reshard 192.168.122.140:6378
>>> Performing Cluster Check (using node 192.168.122.140:6378)
M: cd989d61fad9ff2f0596b051f6a566fd2d541e3c 192.168.122.140:6378
   slots: (0 slots) master
   0 additional replica(s)
M: 1503ad1b97e6891b612146c48a1ad16dc626331e 192.168.122.141:6379
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
S: ecf4bcfb6175f7e75dfe3693f3107b585bd86c4e 192.168.122.142:6380
   slots: (0 slots) slave
   replicates 1503ad1b97e6891b612146c48a1ad16dc626331e
M: 457ad182d1f12a65cf0c0903ed129542d74d1034 192.168.122.140:6379
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
S: d306596bfd3f8263f37230abcb265aa65e6867ae 192.168.122.141:6380
   slots: (0 slots) slave
   replicates 457ad182d1f12a65cf0c0903ed129542d74d1034
M: 2536392d9bdbe7b01a5a409d7fb680cb23e2cc1b 192.168.122.142:6379
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
S: 829204c1049823bcaf3a55c6892bae18931cf918 192.168.122.140:6380
   slots: (0 slots) slave
   replicates 2536392d9bdbe7b01a5a409d7fb680cb23e2cc1b
[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)? 4096
What is the receiving node ID? cd989d61fad9ff2f0596b051f6a566fd2d541e3c
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
....
Do you want to proceed with the proposed reshard plan (yes/no)? yes
#查看狀態(tài)代兵,全均分hash槽
[root@nosql140 iso]# redis-trib.rb check 192.168.122.140:6378
>>> Performing Cluster Check (using node 192.168.122.140:6378)
M: cd989d61fad9ff2f0596b051f6a566fd2d541e3c 192.168.122.140:6378
   slots:0-1364,5461-6826,10923-12287 (4096 slots) master
   0 additional replica(s)
M: 1503ad1b97e6891b612146c48a1ad16dc626331e 192.168.122.141:6379
   slots:6827-10922 (4096 slots) master
   1 additional replica(s)
S: ecf4bcfb6175f7e75dfe3693f3107b585bd86c4e 192.168.122.142:6380
   slots: (0 slots) slave
   replicates 1503ad1b97e6891b612146c48a1ad16dc626331e
M: 457ad182d1f12a65cf0c0903ed129542d74d1034 192.168.122.140:6379
   slots:1365-5460 (4096 slots) master
   1 additional replica(s)
S: d306596bfd3f8263f37230abcb265aa65e6867ae 192.168.122.141:6380
   slots: (0 slots) slave
   replicates 457ad182d1f12a65cf0c0903ed129542d74d1034
M: 2536392d9bdbe7b01a5a409d7fb680cb23e2cc1b 192.168.122.142:6379
   slots:12288-16383 (4096 slots) master
   1 additional replica(s)
S: 829204c1049823bcaf3a55c6892bae18931cf918 192.168.122.140:6380
   slots: (0 slots) slave
   replicates 2536392d9bdbe7b01a5a409d7fb680cb23e2cc1b
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

到此添加redis的master節(jié)點(diǎn)成功。

添加slave節(jié)點(diǎn)
1.安裝新redis6378(在141主機(jī)上)

[root@nosql141 ~]# /iso/redis-4.0.14/utils/install_server.sh 
Welcome to the redis service installer
This script will help you easily set up a running redis server

Please select the redis port for this instance: [6379] 6378
....
Installation successful!

bind 192.168.122.141
cluster-enabled yes
cluster-config-file nodes-6378.conf
cluster-node-timeout 15000
[root@nosql141 ~]# /etc/init.d/redis_6378 restart
[root@nosql141 ~]# ss -tunlp | grep 6378
tcp    LISTEN     0      128    192.168.122.141:16378                 *:*                   users:(("redis-server",pid=1238,fd=8))
tcp    LISTEN     0      128    192.168.122.141:6378                  *:*                   users:(("redis-server",pid=1238,fd=6))

2.添加從節(jié)點(diǎn)到集群中(隨機(jī)添加)

[root@nosql140 iso]# redis-trib.rb add-node --slave 192.168.122.141:6378 192.168.122.140:6379
....
>>> Configure node as replica of 192.168.122.140:6378.
[OK] New node added correctly
[root@nosql140 iso]# redis-cli -c -h 192.168.122.140 -p 6379
192.168.122.140:6379> cluster nodes
ecf4bcfb6175f7e75dfe3693f3107b585bd86c4e 192.168.122.142:6380@16380 slave 1503ad1b97e6891b612146c48a1ad16dc626331e 0 1570760432983 8 connected
829204c1049823bcaf3a55c6892bae18931cf918 192.168.122.140:6380@16380 slave 2536392d9bdbe7b01a5a409d7fb680cb23e2cc1b 0 1570760435000 4 connected
716ff9d5388d59b8e8e57f1f4b79642a2c8a2f78 192.168.122.141:6378@16378 slave cd989d61fad9ff2f0596b051f6a566fd2d541e3c 0 1570760437000 9 connected
457ad182d1f12a65cf0c0903ed129542d74d1034 192.168.122.140:6379@16379 myself,master - 0 1570760436000 1 connected 1365-5460
1503ad1b97e6891b612146c48a1ad16dc626331e 192.168.122.141:6379@16379 master - 0 1570760436992 8 connected 6827-10922
2536392d9bdbe7b01a5a409d7fb680cb23e2cc1b 192.168.122.142:6379@16379 master - 0 1570760437000 3 connected 12288-16383
cd989d61fad9ff2f0596b051f6a566fd2d541e3c 192.168.122.140:6378@16378 master - 0 1570760437995 9 connected 0-1364 5461-6826 10923-12287
d306596bfd3f8263f37230abcb265aa65e6867ae 192.168.122.141:6380@16380 slave 457ad182d1f12a65cf0c0903ed129542d74d1034 0 1570760438998 5 connected

刪除節(jié)點(diǎn)

1.刪除master節(jié)點(diǎn)
提示:刪除master節(jié)點(diǎn)爷狈,先刪除主機(jī)占用的hash槽
簡(jiǎn)單計(jì)算下
4096/3=1365
4096=1366+1365+1365
140:6379hash槽=4096+1366=5462
141:6379hash槽=4096+1365=5461
141:6379hash槽=4096+1365=5461
16384=5462+5461+5461
刪除主機(jī)占用的hash槽

#確定master節(jié)點(diǎn)
[root@nosql140 ~]# redis-trib.rb check 192.168.122.140:6379
>>> Performing Cluster Check (using node 192.168.122.140:6379)
M: 457ad182d1f12a65cf0c0903ed129542d74d1034 192.168.122.140:6379
   slots:1365-5460 (4096 slots) master
   1 additional replica(s)
S: ecf4bcfb6175f7e75dfe3693f3107b585bd86c4e 192.168.122.142:6380
   slots: (0 slots) slave
   replicates 1503ad1b97e6891b612146c48a1ad16dc626331e
S: 829204c1049823bcaf3a55c6892bae18931cf918 192.168.122.140:6380
   slots: (0 slots) slave
   replicates 2536392d9bdbe7b01a5a409d7fb680cb23e2cc1b
S: 716ff9d5388d59b8e8e57f1f4b79642a2c8a2f78 192.168.122.141:6378
   slots: (0 slots) slave
   replicates cd989d61fad9ff2f0596b051f6a566fd2d541e3c
M: 1503ad1b97e6891b612146c48a1ad16dc626331e 192.168.122.141:6379
   slots:6827-10922 (4096 slots) master
   1 additional replica(s)
M: 2536392d9bdbe7b01a5a409d7fb680cb23e2cc1b 192.168.122.142:6379
   slots:12288-16383 (4096 slots) master
   1 additional replica(s)
M: cd989d61fad9ff2f0596b051f6a566fd2d541e3c 192.168.122.140:6378
   slots:0-1364,5461-6826,10923-12287 (4096 slots) master
   1 additional replica(s)
S: d306596bfd3f8263f37230abcb265aa65e6867ae 192.168.122.141:6380
   slots: (0 slots) slave
   replicates 457ad182d1f12a65cf0c0903ed129542d74d1034
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
[root@nosql140 ~]# redis-trib.rb reshard 192.168.122.140:6379
How many slots do you want to move (from 1 to 16384)? 1366
What is the receiving node ID? 457ad182d1f12a65cf0c0903ed129542d74d1034
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:cd989d61fad9ff2f0596b051f6a566fd2d541e3c
Source node #2:done
Do you want to proceed with the proposed reshard plan (yes/no)? yes
[root@nosql140 ~]# redis-trib.rb reshard 192.168.122.141:6379
....
How many slots do you want to move (from 1 to 16384)? 1365
What is the receiving node ID? 1503ad1b97e6891b612146c48a1ad16dc626331e
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:cd989d61fad9ff2f0596b051f6a566fd2d541e3c
Source node #2:done
Do you want to proceed with the proposed reshard plan (yes/no)? yes
[root@nosql140 ~]# redis-trib.rb reshard 192.168.122.142:6379
....
How many slots do you want to move (from 1 to 16384)? 1365
What is the receiving node ID? 2536392d9bdbe7b01a5a409d7fb680cb23e2cc1b
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:cd989d61fad9ff2f0596b051f6a566fd2d541e3c
Source node #2:done
Do you want to proceed with the proposed reshard plan (yes/no)? yes

2.查看狀態(tài)

[root@nosql140 ~]# redis-trib.rb check 192.168.122.140:6379
>>> Performing Cluster Check (using node 192.168.122.140:6379)
M: 457ad182d1f12a65cf0c0903ed129542d74d1034 192.168.122.140:6379
   slots:2730-6826,10923-12287 (5462 slots) master
   2 additional replica(s)
S: ecf4bcfb6175f7e75dfe3693f3107b585bd86c4e 192.168.122.142:6380
   slots: (0 slots) slave
   replicates 1503ad1b97e6891b612146c48a1ad16dc626331e
S: 829204c1049823bcaf3a55c6892bae18931cf918 192.168.122.140:6380
   slots: (0 slots) slave
   replicates 2536392d9bdbe7b01a5a409d7fb680cb23e2cc1b
S: 716ff9d5388d59b8e8e57f1f4b79642a2c8a2f78 192.168.122.141:6378
   slots: (0 slots) slave
   replicates 457ad182d1f12a65cf0c0903ed129542d74d1034
M: 1503ad1b97e6891b612146c48a1ad16dc626331e 192.168.122.141:6379
   slots:0-1364,6827-10922 (5461 slots) master
   1 additional replica(s)
M: 2536392d9bdbe7b01a5a409d7fb680cb23e2cc1b 192.168.122.142:6379
   slots:1365-2729,12288-16383 (5461 slots) master
   1 additional replica(s)
M: cd989d61fad9ff2f0596b051f6a566fd2d541e3c 192.168.122.140:6378
   slots: (0 slots) master    #無(wú)占用hash槽
   0 additional replica(s)
S: d306596bfd3f8263f37230abcb265aa65e6867ae 192.168.122.141:6380
   slots: (0 slots) slave
   replicates 457ad182d1f12a65cf0c0903ed129542d74d1034
[OK] All nodes agree about slots configuration.

3.刪除節(jié)點(diǎn)(刪除之后redis服務(wù)自動(dòng)關(guān)閉)

[root@nosql140 ~]# redis-trib.rb del-node 192.168.122.140:6378 cd989d61fad9ff2f0596b051f6a566fd2d541e3c
>>> Removing node cd989d61fad9ff2f0596b051f6a566fd2d541e3c from cluster 192.168.122.140:6378
>>> Sending CLUSTER FORGET messages to the cluster...
>>> SHUTDOWN the node.
[root@nosql140 ~]# redis-trib.rb check 192.168.122.140:6379
>>> Performing Cluster Check (using node 192.168.122.140:6379)
M: 457ad182d1f12a65cf0c0903ed129542d74d1034 192.168.122.140:6379
   slots:2730-6826,10923-12287 (5462 slots) master
   2 additional replica(s)
S: ecf4bcfb6175f7e75dfe3693f3107b585bd86c4e 192.168.122.142:6380
   slots: (0 slots) slave
   replicates 1503ad1b97e6891b612146c48a1ad16dc626331e
S: 829204c1049823bcaf3a55c6892bae18931cf918 192.168.122.140:6380
   slots: (0 slots) slave
   replicates 2536392d9bdbe7b01a5a409d7fb680cb23e2cc1b
S: 716ff9d5388d59b8e8e57f1f4b79642a2c8a2f78 192.168.122.141:6378
   slots: (0 slots) slave
   replicates 457ad182d1f12a65cf0c0903ed129542d74d1034
M: 1503ad1b97e6891b612146c48a1ad16dc626331e 192.168.122.141:6379
   slots:0-1364,6827-10922 (5461 slots) master
   1 additional replica(s)
M: 2536392d9bdbe7b01a5a409d7fb680cb23e2cc1b 192.168.122.142:6379
   slots:1365-2729,12288-16383 (5461 slots) master
   1 additional replica(s)
S: d306596bfd3f8263f37230abcb265aa65e6867ae 192.168.122.141:6380
   slots: (0 slots) slave
   replicates 457ad182d1f12a65cf0c0903ed129542d74d1034
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

查看狀態(tài)3臺(tái)master植影,到此刪除master節(jié)點(diǎn)就成功了。

刪除slave節(jié)點(diǎn)
提示:移除從節(jié)點(diǎn)淆院,從節(jié)點(diǎn)主機(jī)沒(méi)有槽位范圍何乎,直接移除即可

[root@nosql140 ~]# redis-trib.rb del-node 192.168.122.141:6378 716ff9d5388d59b8e8e57f1f4b79642a2c8a2f78
>>> Removing node 716ff9d5388d59b8e8e57f1f4b79642a2c8a2f78 from cluster 192.168.122.141:6378
>>> Sending CLUSTER FORGET messages to the cluster...
>>> SHUTDOWN the node.
[root@nosql140 ~]# redis-trib.rb check 192.168.122.140:6379
>>> Performing Cluster Check (using node 192.168.122.140:6379)
M: 457ad182d1f12a65cf0c0903ed129542d74d1034 192.168.122.140:6379
   slots:2730-6826,10923-12287 (5462 slots) master
   1 additional replica(s)
S: ecf4bcfb6175f7e75dfe3693f3107b585bd86c4e 192.168.122.142:6380
   slots: (0 slots) slave
   replicates 1503ad1b97e6891b612146c48a1ad16dc626331e
S: 829204c1049823bcaf3a55c6892bae18931cf918 192.168.122.140:6380
   slots: (0 slots) slave
   replicates 2536392d9bdbe7b01a5a409d7fb680cb23e2cc1b
M: 1503ad1b97e6891b612146c48a1ad16dc626331e 192.168.122.141:6379
   slots:0-1364,6827-10922 (5461 slots) master
   1 additional replica(s)
M: 2536392d9bdbe7b01a5a409d7fb680cb23e2cc1b 192.168.122.142:6379
   slots:1365-2729,12288-16383 (5461 slots) master
   1 additional replica(s)
S: d306596bfd3f8263f37230abcb265aa65e6867ae 192.168.122.141:6380
   slots: (0 slots) slave
   replicates 457ad182d1f12a65cf0c0903ed129542d74d1034
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

查看狀態(tài),3臺(tái)slave無(wú)發(fā)現(xiàn)140:6378redis土辩,刪除slave節(jié)點(diǎn)成功支救。

常見(jiàn)錯(cuò)誤

錯(cuò)誤1

現(xiàn)象:

[root@nosql140 iso]# redis-trib.rb reshard 192.168.122.141:6379
>>> Check for open slots...
[WARNING] Node 192.168.122.141:6379 has slots in migrating state (5798).
[WARNING] Node 192.168.122.140:6378 has slots in importing state (5798).
[WARNING] The following slots are open: 5798
>>> Check slots coverage...
[OK] All 16384 slots covered.
*** Please fix your cluster problems before resharding

原因:

    錯(cuò)誤背景描述
    redis版本:4.0.14
    ruby gem reids 版本:4.0.0

    ruby gem安裝的redis庫(kù),版本不能使用最新的4.0拷淘,否則redis-trib.rb reshard 192.168.122.140:6378 重新分片時(shí)會(huì)報(bào)錯(cuò)誤

解決辦法:
a. 卸載最新redis庫(kù)各墨,gem uninstall redis
b. 安裝3.x版本,gem install redis -v 3.3.5 測(cè)試3.2.1到3.3.5都可以启涯,4.x以上的分片報(bào)錯(cuò)
c. 登入兩個(gè)提示錯(cuò)誤的節(jié)點(diǎn)贬堵,執(zhí)行清除命令即可

[root@nosql140 iso]# redis-cli -h 192.168.122.141 -p 6379
192.168.122.141:6379> cluster setslot 5798 stable
OK
[root@nosql140 iso]# redis-cli -h 192.168.122.140 -p 6378
192.168.122.140:6378> cluster setslot 5798 stable
OK

錯(cuò)誤2:安裝錯(cuò)誤

現(xiàn)象:
zmalloc.h:50:31: 致命錯(cuò)誤:jemalloc/jemalloc.h:沒(méi)有那個(gè)文件或目錄
解決辦法:辦法解決

參考文章

結(jié)束語(yǔ):
更多精彩內(nèi)容持續(xù)更新中,關(guān)注微信公眾號(hào)结洼,有你更精彩黎做。

微信公眾號(hào).jpg

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市松忍,隨后出現(xiàn)的幾起案子蒸殿,更是在濱河造成了極大的恐慌,老刑警劉巖鸣峭,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宏所,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡摊溶,警方通過(guò)查閱死者的電腦和手機(jī)爬骤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)莫换,“玉大人霞玄,你說(shuō)我怎么就攤上這事±辏” “怎么了溃列?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)膛薛。 經(jīng)常有香客問(wèn)我,道長(zhǎng)补鼻,這世上最難降的妖魔是什么哄啄? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任雅任,我火速辦了婚禮,結(jié)果婚禮上咨跌,老公的妹妹穿的比我還像新娘沪么。我一直安慰自己,他們只是感情好锌半,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布禽车。 她就那樣靜靜地躺著,像睡著了一般刊殉。 火紅的嫁衣襯著肌膚如雪殉摔。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,443評(píng)論 1 302
  • 那天记焊,我揣著相機(jī)與錄音逸月,去河邊找鬼。 笑死遍膜,一個(gè)胖子當(dāng)著我的面吹牛碗硬,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播瓢颅,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼恩尾,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了挽懦?” 一聲冷哼從身側(cè)響起翰意,我...
    開(kāi)封第一講書(shū)人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎巾兆,沒(méi)想到半個(gè)月后猎物,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡角塑,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年蔫磨,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片圃伶。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡堤如,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出窒朋,到底是詐尸還是另有隱情搀罢,我是刑警寧澤,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布侥猩,位于F島的核電站榔至,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏欺劳。R本人自食惡果不足惜唧取,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一铅鲤、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧枫弟,春花似錦邢享、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至韩容,卻和暖如春款违,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背宙攻。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工奠货, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人座掘。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓递惋,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親溢陪。 傳聞我的和親對(duì)象是個(gè)殘疾皇子萍虽,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容