# Redis Clutser #html
## 1、Redis Cluster集羣 ##node
參考資料:redis
http://www.cnblogs.com/lykxqhh/p/5690923.html算法
Redis集羣搭建的方式有多種,例如使用zookper等,但從redis3.0以後版本支持redis cluster集羣,Redis Cluster採用無中心結構,每一個節點保存數據和整個集羣狀態,每一個節點都和其餘全部節點鏈接。其redis cluster架構圖以下:mongodb
其結構特色:ruby
一、全部的redis節點彼此互聯(PING-PONG機制),內部使用二進制協議優化傳輸速度和帶寬。服務器
二、節點的fail機制是經過集羣中超過半數的節點檢測失效時才生效。架構
三、客戶端與redis節點直連,不須要中間件proxy層。客戶端不須要鏈接集羣全部節點,鏈接集羣中其中一和可用節點便可。app
四、redis cluster把全部的物理節點映射到[0-16384]slot上(不必定平均分配),cluster負責維護node<->slot<->value。less
五、Redis集羣預分配好16384個桶,當須要在Redis集羣中放置一個key-value時,根據CRC16(key)mod 16384的值,決定一個key放到哪一個桶中。
一、redis cluster節點分配
----------
如今咱們是三個主節點分別是A、B、C三個節點,他們能夠是一臺機器上的三個端口,也能夠是三臺不一樣的服務器。那麼,採用哈希槽(hash slot)的方式來分配16384個slot的話,它們三個節點分別承擔的slot區間是:
節點A覆蓋0-5460;
節點B覆蓋5461-10922;
節點C覆蓋10923-16384.
獲取數據:
若是存入一個值,按照redis clsuter哈希槽的算法:CRC16('key')%16384=6782。那麼就會把這個key分配存儲在B上了。一樣,當我鏈接(A、B、C)任何一個節點想獲取'key'這個key時,也會這樣的算法,而後內部跳轉到B節點上獲取數據。
新增一個主節點:
新增一個主節點D,redis cluster的這種作法是從各個節點的前面各拿取一部分slot到D上,我會在接下來的實踐中實驗。大體就會變成這樣:
A節點覆蓋1365-5460;
B節點覆蓋6827-10922;
C節點覆蓋12888-16384;
D節點覆蓋0-1364,5461-6826,10923-12287
一樣刪除一個節點也是相似,移動完成後就能夠刪除這個節點了。
二、Redis Cluster主從模式
----------
redis cluster爲了保證數據的高可用性,加入了主從模式,一個主節點對應一個或多個從節點,主節點提取數據存儲,從節點則是從主節點拉去數據備份,當這個主節點掛掉後,就會有這個從節點選取一個來充當主節點,從而保證集羣不會掛掉。
上面那個例子裏,集羣有ABC三個主節點,若是這三個節點都沒有加入從節點,若是B掛掉了,咱們就沒法訪問整個集羣了。A和B的slot也沒法訪問了。
因此咱們在集羣創建的時候,必定要爲每一個主節點都添加了從節點,好比像這樣,集羣包含主節點A、B、C以及從節點A一、B一、C1,那麼即便B掛掉系統也能夠繼續正確工做。
B1節點替代了B節點,因此Redis集羣將會選擇B1節點做爲新的主節點,集羣將會繼續正確地提供服務。當B從新開啓後,它就會變成B1的從節點。
不過須要注意,若是節點B和B1同時掛掉了,Redis集羣就沒法正確地提供服務了。
## 2、redis集羣的搭建 ##
集羣中至少應該有奇數個節點,因此至少有三個節點,每一個節點至少有一個備份節點,因此下面使用6節點(主節點、備份節點由redis-cluster集羣肯定)。
下面使用redis-3.2.5.tar.gz
一、安裝redis節點指定端口
----------
實驗環境:
10.69.213.127 bj05-ops-mongodb04.test.gomeplus.com
cd /opt
wget http://download.redis.io/releases/redis-3.2.5.tar.gz
tar -zxf redis-3.2.5.tar.gz
cd redis-3.2.5
make PREFIX=/usr/local/redis install
mkdir -p /gomeo2o/data/redis/9000/db
mkdir -p /gomeo2o/logs/redis/9000
mkdir -p /usr/local/redis/etc
rm -rf /usr/sbin/redis-*
cat > /usr/local/redis/etc/redis_9000.conf <<EOF
daemonize yes
pidfile "/gomeo2o/logs/redis/9000/redis_9000.pid"
tcp-backlog 511
timeout 0
tcp-keepalive 0
loglevel debug
logfile "/gomeo2o/logs/redis/9000/redis_9000.log"
databases 16
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir /gomeo2o/data/redis/9000/db
slave-serve-stale-data yes
slave-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
slave-priority 100
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes
maxclients 10000
maxmemory 1073741824
# 密碼認證
#requirepass "KaIJgcSVDv67GePw"
#masterauth "KaIJgcSVDv67GePw"
#loglevel debug
# 最簡集羣配置
bind 0.0.0.0
port 9000
cluster-enabled yes
# 這個文件會自動生成在db目錄下
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-require-full-coverage no
EOF
#複製六份,並修改端口和對應的路徑
cd /usr/local/redis/etc/
cp redis_9000.conf redis_9001.conf
cp redis_9000.conf redis_9002.conf
cp redis_9000.conf redis_9003.conf
cp redis_9000.conf redis_9004.conf
cp redis_9000.conf redis_9005.conf
cp redis_9000.conf redis_9006.conf
cd /usr/local/redis/etc/
cp redis_9000.conf redis_9001.conf
cp redis_9000.conf redis_9002.conf
cp redis_9000.conf redis_9003.conf
cp redis_9000.conf redis_9004.conf
cp redis_9000.conf redis_9005.conf
cp redis_9000.conf redis_9006.conf
sed -i 's/9000/9001/g' redis_9001.conf
sed -i 's/9000/9002/g' redis_9002.conf
sed -i 's/9000/9003/g' redis_9003.conf
sed -i 's/9000/9004/g' redis_9004.conf
sed -i 's/9000/9005/g' redis_9005.conf
sed -i 's/9000/9006/g' redis_9006.conf
#建立所須要的目錄:
mkdir -p /gomeo2o/data/redis/9000/db
mkdir -p /gomeo2o/logs/redis/9000
mkdir -p /gomeo2o/data/redis/9001/db
mkdir -p /gomeo2o/logs/redis/9001
mkdir -p /gomeo2o/data/redis/9002/db
mkdir -p /gomeo2o/logs/redis/9002
mkdir -p /gomeo2o/data/redis/9003/db
mkdir -p /gomeo2o/logs/redis/9003
mkdir -p /gomeo2o/data/redis/9004/db
mkdir -p /gomeo2o/logs/redis/9004
mkdir -p /gomeo2o/data/redis/9005/db
mkdir -p /gomeo2o/logs/redis/9005
mkdir -p /gomeo2o/data/redis/9006/db
mkdir -p /gomeo2o/logs/redis/9006
# 檢查配置
cd /usr/local/redis/etc/
grep '/900' *
[root@bj02-ops-mgotest01 redis-3.2.5]# cd /usr/local/redis/etc/
[root@bj02-ops-mgotest01 etc]# ll
total 4
-rw-r--r-- 1 root root 1449 Dec 1 18:47 redis_9000.conf
[root@bj02-ops-mgotest01 etc]# cp redis_9000.conf redis_9001.conf
[root@bj02-ops-mgotest01 etc]# cp redis_9000.conf redis_9002.conf
[root@bj02-ops-mgotest01 etc]# cp redis_9000.conf redis_9003.conf
[root@bj02-ops-mgotest01 etc]# cp redis_9000.conf redis_9004.conf
[root@bj02-ops-mgotest01 etc]# cp redis_9000.conf redis_9005.conf
[root@bj02-ops-mgotest01 etc]# cp redis_9000.conf redis_9006.conf
[root@bj02-ops-mgotest01 etc]# sed -i 's/9000/9001/g' redis_9001.conf
[root@bj02-ops-mgotest01 etc]# sed -i 's/9000/9001/g' redis_9001.conf
[root@bj02-ops-mgotest01 etc]# sed -i 's/9000/9002/g' redis_9002.conf
[root@bj02-ops-mgotest01 etc]# sed -i 's/9000/9003/g' redis_9003.conf
[root@bj02-ops-mgotest01 etc]# sed -i 's/9000/9004/g' redis_9004.conf
[root@bj02-ops-mgotest01 etc]# sed -i 's/9000/9005/g' redis_9005.conf
[root@bj02-ops-mgotest01 etc]# sed -i 's/9000/9006/g' redis_9006.conf
[root@bj02-ops-mgotest01 etc]# cd /usr/local/redis/etc/
[root@bj02-ops-mgotest01 etc]# grep '/900' *
redis_9000.conf:pidfile "/gomeo2o/logs/redis/9000/redis_9000.pid"
redis_9000.conf:logfile "/gomeo2o/logs/redis/9000/redis_9000.log"
redis_9000.conf:dir /gomeo2o/data/redis/9000/db
redis_9001.conf:pidfile "/gomeo2o/logs/redis/9001/redis_9001.pid"
redis_9001.conf:logfile "/gomeo2o/logs/redis/9001/redis_9001.log"
redis_9001.conf:dir /gomeo2o/data/redis/9001/db
redis_9002.conf:pidfile "/gomeo2o/logs/redis/9002/redis_9002.pid"
redis_9002.conf:logfile "/gomeo2o/logs/redis/9002/redis_9002.log"
redis_9002.conf:dir /gomeo2o/data/redis/9002/db
redis_9003.conf:pidfile "/gomeo2o/logs/redis/9003/redis_9003.pid"
redis_9003.conf:logfile "/gomeo2o/logs/redis/9003/redis_9003.log"
redis_9003.conf:dir /gomeo2o/data/redis/9003/db
redis_9004.conf:pidfile "/gomeo2o/logs/redis/9004/redis_9004.pid"
redis_9004.conf:logfile "/gomeo2o/logs/redis/9004/redis_9004.log"
redis_9004.conf:dir /gomeo2o/data/redis/9004/db
redis_9005.conf:pidfile "/gomeo2o/logs/redis/9005/redis_9005.pid"
redis_9005.conf:logfile "/gomeo2o/logs/redis/9005/redis_9005.log"
redis_9005.conf:dir /gomeo2o/data/redis/9005/db
redis_9006.conf:pidfile "/gomeo2o/logs/redis/9006/redis_9006.pid"
redis_9006.conf:logfile "/gomeo2o/logs/redis/9006/redis_9006.log"
redis_9006.conf:dir /gomeo2o/data/redis/9006/db
[root@bj02-ops-mgotest01 etc]# mkdir -p /gomeo2o/data/redis/9001/db
[root@bj02-ops-mgotest01 etc]# mkdir -p /gomeo2o/logs/redis/9001
[root@bj02-ops-mgotest01 etc]#
[root@bj02-ops-mgotest01 etc]# mkdir -p /gomeo2o/data/redis/9002/db
[root@bj02-ops-mgotest01 etc]# mkdir -p /gomeo2o/logs/redis/9002
[root@bj02-ops-mgotest01 etc]#
[root@bj02-ops-mgotest01 etc]# mkdir -p /gomeo2o/data/redis/9003/db
[root@bj02-ops-mgotest01 etc]# mkdir -p /gomeo2o/logs/redis/9003
[root@bj02-ops-mgotest01 etc]#
[root@bj02-ops-mgotest01 etc]# mkdir -p /gomeo2o/data/redis/9004/db
[root@bj02-ops-mgotest01 etc]# mkdir -p /gomeo2o/logs/redis/9004
[root@bj02-ops-mgotest01 etc]#
[root@bj02-ops-mgotest01 etc]# mkdir -p /gomeo2o/data/redis/9005/db
[root@bj02-ops-mgotest01 etc]# mkdir -p /gomeo2o/logs/redis/9005
[root@bj02-ops-mgotest01 etc]#
[root@bj02-ops-mgotest01 etc]# mkdir -p /gomeo2o/data/redis/9006/db
[root@bj02-ops-mgotest01 etc]# mkdir -p /gomeo2o/logs/redis/9006
[root@bj02-ops-mgotest01 etc]#
# 系統內核配置
echo "vm.overcommit_memory=1" >> /etc/sysctl.conf
echo never > /sys/kernel/mm/transparent_hugepage/enabled
sysctl -p
cat >>/etc/rc.local <<EOF
echo never > /sys/kernel/mm/transparent_hugepage/enabled
EOF
#啓動實例
/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis_9000.conf
/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis_9001.conf
/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis_9002.conf
/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis_9003.conf
/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis_9004.conf
/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis_9005.conf
/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis_9006.conf
ps -ef|grep -v 'grep' |grep 'redis'
[root@bj02-ops-mgotest01 etc]# ps -ef|grep -v 'grep' |grep 'redis'
root 31100 1 0 19:12 ? 00:00:00 /usr/local/redis/bin/redis-server 0.0.0.0:9000 [cluster]
root 31104 1 0 19:12 ? 00:00:00 /usr/local/redis/bin/redis-server 0.0.0.0:9001 [cluster]
root 31108 1 0 19:12 ? 00:00:00 /usr/local/redis/bin/redis-server 0.0.0.0:9002 [cluster]
root 31112 1 0 19:12 ? 00:00:00 /usr/local/redis/bin/redis-server 0.0.0.0:9003 [cluster]
root 31116 1 0 19:12 ? 00:00:00 /usr/local/redis/bin/redis-server 0.0.0.0:9004 [cluster]
root 31120 1 0 19:12 ? 00:00:00 /usr/local/redis/bin/redis-server 0.0.0.0:9005 [cluster]
root 31124 1 0 19:12 ? 00:00:00 /usr/local/redis/bin/redis-server 0.0.0.0:9006 [cluster]
#查看日誌
cat /gomeo2o/logs/redis/9000/redis_9000.log
cat /gomeo2o/logs/redis/9001/redis_9001.log
cat /gomeo2o/logs/redis/9002/redis_9002.log
cat /gomeo2o/logs/redis/9003/redis_9003.log
cat /gomeo2o/logs/redis/9004/redis_9004.log
cat /gomeo2o/logs/redis/9005/redis_9005.log
cat /gomeo2o/logs/redis/9006/redis_9006.log
#以9005端口爲例
[root@bj02-ops-mgotest01 etc]# cat /gomeo2o/logs/redis/9006/redis_9006.log
31124:M 01 Dec 19:12:04.920 * No cluster configuration found, I'm d4395d6492bbd56956a4e3a8cf073107afe4f38a
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 3.2.5 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in cluster mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 9006
| `-._ `._ / _.-' | PID: 31124
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
31124:M 01 Dec 19:12:04.922 # Server started, Redis version 3.2.5
31124:M 01 Dec 19:12:04.922 * The server is now ready to accept connections on port 9006
31124:M 01 Dec 19:12:04.922 - 0 clients connected (0 slaves), 1221904 bytes in use
31124:M 01 Dec 19:12:09.936 - 0 clients connected (0 slaves), 1221904 bytes in use
31124:M 01 Dec 19:12:14.949 - 0 clients connected (0 slaves), 1221904 bytes in use
......
......
......
[root@bj02-ops-mgotest01 etc]#
# 關閉實例
/usr/local/redis/bin/redis-cli -c -p 9000 shutdown
/usr/local/redis/bin/redis-cli -c -p 9001 shutdown
/usr/local/redis/bin/redis-cli -c -p 9002 shutdown
/usr/local/redis/bin/redis-cli -c -p 9003 shutdown
/usr/local/redis/bin/redis-cli -c -p 9004 shutdown
/usr/local/redis/bin/redis-cli -c -p 9005 shutdown
/usr/local/redis/bin/redis-cli -c -p 9006 shutdown
ps -ef|grep redis |grep -v 'grep'
# 須要聯網,安裝支持語言和庫
yum -y install ruby ruby-rdoc
yum -y install rubygems
gem sources --add https://ruby.taobao.org/ --remove http://rubygems.org/
gem sources -l
gem install redis
# 建立進羣成員
cd /opt/redis-3.2.5/src/
./redis-trib.rb create --replicas 1 10.125.141.137:9000 10.125.141.137:9001 10.125.141.137:9002 10.125.141.137:9003 10.125.141.137:9004 10.125.141.137:9005
#使用create命令 --replicas 1 參數表示爲每一個主節點建立一個從節點,其餘參數是實例的地址集合。
[root@bj02-ops-mgotest01 redis-3.2.5]# cd /opt/redis-3.2.5/src/
[root@bj02-ops-mgotest01 src]# ./redis-trib.rb create --replicas 1 10.125.141.137:9000 10.125.141.137:9001 10.125.141.137:9002 10.125.141.137:9003 10.125.141.137:9004 10.125.141.137:9005
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
10.125.141.137:9000
10.125.141.137:9001
10.125.141.137:9002
Adding replica 10.125.141.137:9003 to 10.125.141.137:9000
Adding replica 10.125.141.137:9004 to 10.125.141.137:9001
Adding replica 10.125.141.137:9005 to 10.125.141.137:9002
M: adb0a771e41b8284adbed417f89eb8c8ce943835 10.125.141.137:9000
slots:0-5460 (5461 slots) master
M: 09c4cec212b76ff325b92ea6c62526c4104ae8cd 10.125.141.137:9001
slots:5461-10922 (5462 slots) master
M: c311d5160a2f4f1df8fea93e49c97fdbad5da920 10.125.141.137:9002
slots:10923-16383 (5461 slots) master
S: bec729e8b454b190db07997661f003b869391b9b 10.125.141.137:9003
replicates adb0a771e41b8284adbed417f89eb8c8ce943835
S: 67f093514bf6499f701f11f40b18937098b983c0 10.125.141.137:9004
replicates 09c4cec212b76ff325b92ea6c62526c4104ae8cd
S: c03a00b628b4c65b68f24f249e4694db937b0c5c 10.125.141.137:9005
replicates c311d5160a2f4f1df8fea93e49c97fdbad5da920
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 10.125.141.137:9000)
M: adb0a771e41b8284adbed417f89eb8c8ce943835 10.125.141.137:9000
slots:0-5460 (5461 slots) master
1 additional replica(s)
M: 09c4cec212b76ff325b92ea6c62526c4104ae8cd 10.125.141.137:9001
slots:5461-10922 (5462 slots) master
1 additional replica(s)
S: c03a00b628b4c65b68f24f249e4694db937b0c5c 10.125.141.137:9005
slots: (0 slots) slave
replicates c311d5160a2f4f1df8fea93e49c97fdbad5da920
S: 67f093514bf6499f701f11f40b18937098b983c0 10.125.141.137:9004
slots: (0 slots) slave
replicates 09c4cec212b76ff325b92ea6c62526c4104ae8cd
S: bec729e8b454b190db07997661f003b869391b9b 10.125.141.137:9003
slots: (0 slots) slave
replicates adb0a771e41b8284adbed417f89eb8c8ce943835
M: c311d5160a2f4f1df8fea93e49c97fdbad5da920 10.125.141.137:9002
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.
[root@bj02-ops-mgotest01 src]#
上面顯示建立成功,有3個主節點,3個從節點,每一個節點都是成功鏈接狀態。
3個主節點[M]以及分配的哈希卡槽以下:
M: adb0a771e41b8284adbed417f89eb8c8ce943835 10.125.141.137:9000
slots:0-5460 (5461 slots) master
1 additional replica(s)
M: 09c4cec212b76ff325b92ea6c62526c4104ae8cd 10.125.141.137:9001
slots:5461-10922 (5462 slots) master
1 additional replica(s)
M: c311d5160a2f4f1df8fea93e49c97fdbad5da920 10.125.141.137:9002
slots:10923-16383 (5461 slots) master
1 additional replica(s)
3個從節點[S]以及附屬的主節點以下:
S: c03a00b628b4c65b68f24f249e4694db937b0c5c 10.125.141.137:9005
slots: (0 slots) slave
replicates c311d5160a2f4f1df8fea93e49c97fdbad5da920
S: 67f093514bf6499f701f11f40b18937098b983c0 10.125.141.137:9004
slots: (0 slots) slave
replicates 09c4cec212b76ff325b92ea6c62526c4104ae8cd
S: bec729e8b454b190db07997661f003b869391b9b 10.125.141.137:9003
slots: (0 slots) slave
replicates adb0a771e41b8284adbed417f89eb8c8ce943835
## 3、redis集羣的測試 ##
一、測試存取值
客戶端鏈接集羣redis-cli須要帶上 -c ,redis-cli -c -p 端口號
[root@bj02-ops-mgotest01 local]# /usr/local/redis/bin/redis-cli -c -p 9000
127.0.0.1:9000> set names andy
-> Redirected to slot [6659] located at 10.125.141.137:9001
OK
10.125.141.137:9001> get names
"andy"
10.125.141.137:9001>
根據redis-cluster的key值分配,name應該分配到節點10.125.141.137:9001[5461-10922]上,上面顯示redis cluster自動從9000跳轉到了9001節點。
咱們能夠測試一下9005從節點獲取name值
[root@bj02-ops-mgotest01 local]# /usr/local/redis/bin/redis-cli -c -p 9005
127.0.0.1:9005> get names
-> Redirected to slot [6659] located at 10.125.141.137:9001
"andy"
10.125.141.137:9001>
9005是9002的從節點,從上面看也是自動跳轉至9001獲取值,這也是redis cluster的特色,它是去中心化,每一個節點都是對等的,鏈接哪一個節點均可以獲取和設置數據。
## 4、集羣節點選舉 ##
如今模擬將9001節點掛掉,按照redis-cluster原理會選舉會將9001的從節點9004選舉爲主節點。
[root@bj02-ops-mgotest01 local]# ps -ef | grep redis |grep -v 'grep'
root 31100 1 0 19:12 ? 00:00:03 /usr/local/redis/bin/redis-server 0.0.0.0:9000 [cluster]
root 31104 1 0 19:12 ? 00:00:03 /usr/local/redis/bin/redis-server 0.0.0.0:9001 [cluster]
root 31108 1 0 19:12 ? 00:00:03 /usr/local/redis/bin/redis-server 0.0.0.0:9002 [cluster]
root 31112 1 0 19:12 ? 00:00:03 /usr/local/redis/bin/redis-server 0.0.0.0:9003 [cluster]
root 31116 1 0 19:12 ? 00:00:03 /usr/local/redis/bin/redis-server 0.0.0.0:9004 [cluster]
root 31120 1 0 19:12 ? 00:00:03 /usr/local/redis/bin/redis-server 0.0.0.0:9005 [cluster]
root 31124 1 0 19:12 ? 00:00:01 /usr/local/redis/bin/redis-server 0.0.0.0:9006 [cluster]
[root@bj02-ops-mgotest01 local]#
[root@bj02-ops-mgotest01 local]# kill 31104
再查看集羣中的9001節點
[root@bj02-ops-mgotest01 local]# /usr/local/redis/bin/redis-cli -c -p 9001
Could not connect to Redis at 127.0.0.1:9001: Connection refused
Could not connect to Redis at 127.0.0.1:9001: Connection refused
not connected> exit
[root@bj02-ops-mgotest01 local]# /opt/redis-3.2.5/src/redis-trib.rb check 10.125.141.137:9000
>>> Performing Cluster Check (using node 10.125.141.137:9000)
M: adb0a771e41b8284adbed417f89eb8c8ce943835 10.125.141.137:9000
slots:0-5460 (5461 slots) master
1 additional replica(s)
S: c03a00b628b4c65b68f24f249e4694db937b0c5c 10.125.141.137:9005
slots: (0 slots) slave
replicates c311d5160a2f4f1df8fea93e49c97fdbad5da920
M: 67f093514bf6499f701f11f40b18937098b983c0 10.125.141.137:9004
slots:5461-10922 (5462 slots) master
0 additional replica(s)
S: bec729e8b454b190db07997661f003b869391b9b 10.125.141.137:9003
slots: (0 slots) slave
replicates adb0a771e41b8284adbed417f89eb8c8ce943835
M: c311d5160a2f4f1df8fea93e49c97fdbad5da920 10.125.141.137:9002
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.
[root@bj02-ops-mgotest01 local]#
能夠看到集羣鏈接不了9001節點,而9004由原來的S轉換爲M節點,代替了原來的9001節點。咱們能夠獲取name值:
[root@bj02-ops-mgotest01 local]# /usr/local/redis/bin/redis-cli -c -p 9005
127.0.0.1:9005> get names
-> Redirected to slot [6659] located at 10.125.141.137:9004
"andy"
10.125.141.137:9004> exit
[root@bj02-ops-mgotest01 local]#
從9005節點連入,自動跳轉到9004節點,而且獲取name值。
如今咱們將7002節點恢復,看是否會自動加入集羣中以及充當的M仍是S節點。
[root@bj02-ops-mgotest01 local]# /usr/local/redis/bin/redis-server /usr/local/redis/etc/redis_9001.conf
[root@bj02-ops-mgotest01 local]# ps -ef|grep redis|grep -v 'grep'
root 31100 1 0 19:12 ? 00:00:06 /usr/local/redis/bin/redis-server 0.0.0.0:9000 [cluster]
root 31108 1 0 19:12 ? 00:00:06 /usr/local/redis/bin/redis-server 0.0.0.0:9002 [cluster]
root 31112 1 0 19:12 ? 00:00:06 /usr/local/redis/bin/redis-server 0.0.0.0:9003 [cluster]
root 31116 1 0 19:12 ? 00:00:06 /usr/local/redis/bin/redis-server 0.0.0.0:9004 [cluster]
root 31120 1 0 19:12 ? 00:00:06 /usr/local/redis/bin/redis-server 0.0.0.0:9005 [cluster]
root 31124 1 0 19:12 ? 00:00:02 /usr/local/redis/bin/redis-server 0.0.0.0:9006 [cluster]
root 31252 1 0 19:50 ? 00:00:00 /usr/local/redis/bin/redis-server 0.0.0.0:9001 [cluster]
[root@bj02-ops-mgotest01 local]#
查看集羣狀態
/usr/local/redis/bin/redis-cli -c -p 9000 cluster nodes
[root@bj02-ops-mgotest01 local]# /usr/local/redis/bin/redis-cli -c -p 9000 cluster nodes
09c4cec212b76ff325b92ea6c62526c4104ae8cd 10.125.141.137:9001 slave 67f093514bf6499f701f11f40b18937098b983c0 0 1480593304173 7 connected
c03a00b628b4c65b68f24f249e4694db937b0c5c 10.125.141.137:9005 slave c311d5160a2f4f1df8fea93e49c97fdbad5da920 0 1480593305175 6 connected
adb0a771e41b8284adbed417f89eb8c8ce943835 10.125.141.137:9000 myself,master - 0 0 1 connected 0-5460
67f093514bf6499f701f11f40b18937098b983c0 10.125.141.137:9004 master - 0 1480593303672 7 connected 5461-10922
bec729e8b454b190db07997661f003b869391b9b 10.125.141.137:9003 slave adb0a771e41b8284adbed417f89eb8c8ce943835 0 1480593305175 4 connected
c311d5160a2f4f1df8fea93e49c97fdbad5da920 10.125.141.137:9002 master - 0 1480593304673 3 connected 10923-16383
[root@bj02-ops-mgotest01 local]#
測試健康情況
./redis-trib.rb check 127.0.0.1:9000
[root@bj02-ops-mgotest01 local]# /opt/redis-3.2.5/src/redis-trib.rb check 127.0.0.1:9000
>>> Performing Cluster Check (using node 127.0.0.1:9000)
M: adb0a771e41b8284adbed417f89eb8c8ce943835 127.0.0.1:9000
slots:0-5460 (5461 slots) master
1 additional replica(s)
S: 09c4cec212b76ff325b92ea6c62526c4104ae8cd 10.125.141.137:9001
slots: (0 slots) slave
replicates 67f093514bf6499f701f11f40b18937098b983c0
S: c03a00b628b4c65b68f24f249e4694db937b0c5c 10.125.141.137:9005
slots: (0 slots) slave
replicates c311d5160a2f4f1df8fea93e49c97fdbad5da920
M: 67f093514bf6499f701f11f40b18937098b983c0 10.125.141.137:9004
slots:5461-10922 (5462 slots) master
1 additional replica(s)
S: bec729e8b454b190db07997661f003b869391b9b 10.125.141.137:9003
slots: (0 slots) slave
replicates adb0a771e41b8284adbed417f89eb8c8ce943835
M: c311d5160a2f4f1df8fea93e49c97fdbad5da920 10.125.141.137:9002
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.
[root@bj02-ops-mgotest01 local]#
能夠看到9001節點變成了67f093514bf6499f701f11f40b18937098b983c0 10.125.141.137:9004的從節點。
## 5、集羣節點添加 ##
節點新增包括新增主節點、從節點兩種狀況。如下分別作一下測試:
一、新增主節點
----------
新增一個節點9006做爲主節點修改配置文件(以前已經準備好了)
[root@bj02-ops-mgotest01 local]# ps -ef|grep 9006 |grep -v 'grep'
root 31124 1 0 19:12 ? 00:00:02 /usr/local/redis/bin/redis-server 0.0.0.0:9006 [cluster]
[root@bj02-ops-mgotest01 local]#
這裏的10.125.141.137:9006爲新增節點,10.125.141.137:9003這個是指集羣中的其中一個節點,用來表示是哪一個集羣。理論上那個集羣的任何一個節點均可以。
[root@bj02-ops-mgotest01 local]# /opt/redis-3.2.5/src/redis-trib.rb add-node 10.125.141.137:9006 10.125.141.137:9003
>>> Adding node 10.125.141.137:9006 to cluster 10.125.141.137:9003
>>> Performing Cluster Check (using node 10.125.141.137:9003)
S: bec729e8b454b190db07997661f003b869391b9b 10.125.141.137:9003
slots: (0 slots) slave
replicates adb0a771e41b8284adbed417f89eb8c8ce943835
M: adb0a771e41b8284adbed417f89eb8c8ce943835 10.125.141.137:9000
slots:0-5460 (5461 slots) master
1 additional replica(s)
M: 67f093514bf6499f701f11f40b18937098b983c0 10.125.141.137:9004
slots:5461-10922 (5462 slots) master
1 additional replica(s)
S: 09c4cec212b76ff325b92ea6c62526c4104ae8cd 10.125.141.137:9001
slots: (0 slots) slave
replicates 67f093514bf6499f701f11f40b18937098b983c0
M: c311d5160a2f4f1df8fea93e49c97fdbad5da920 10.125.141.137:9002
slots:10923-16383 (5461 slots) master
1 additional replica(s)
S: c03a00b628b4c65b68f24f249e4694db937b0c5c 10.125.141.137:9005
slots: (0 slots) slave
replicates c311d5160a2f4f1df8fea93e49c97fdbad5da920
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
>>> Send CLUSTER MEET to node 10.125.141.137:9006 to make it join the cluster.
[OK] New node added correctly.
[root@bj02-ops-mgotest01 local]#
能夠看到9006加入這個Cluster,併成爲一個新的節點。能夠check如下9006節點狀態
[root@bj02-ops-mgotest01 local]# /opt/redis-3.2.5/src/redis-trib.rb check 10.125.141.137:9006
>>> Performing Cluster Check (using node 10.125.141.137:9006)
M: d4395d6492bbd56956a4e3a8cf073107afe4f38a 10.125.141.137:9006
slots: (0 slots) master
0 additional replica(s)
S: 09c4cec212b76ff325b92ea6c62526c4104ae8cd 10.125.141.137:9001
slots: (0 slots) slave
replicates 67f093514bf6499f701f11f40b18937098b983c0
S: bec729e8b454b190db07997661f003b869391b9b 10.125.141.137:9003
slots: (0 slots) slave
replicates adb0a771e41b8284adbed417f89eb8c8ce943835
M: c311d5160a2f4f1df8fea93e49c97fdbad5da920 10.125.141.137:9002
slots:10923-16383 (5461 slots) master
1 additional replica(s)
M: adb0a771e41b8284adbed417f89eb8c8ce943835 10.125.141.137:9000
slots:0-5460 (5461 slots) master
1 additional replica(s)
S: c03a00b628b4c65b68f24f249e4694db937b0c5c 10.125.141.137:9005
slots: (0 slots) slave
replicates c311d5160a2f4f1df8fea93e49c97fdbad5da920
M: 67f093514bf6499f701f11f40b18937098b983c0 10.125.141.137:9004
slots:5461-10922 (5462 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@bj02-ops-mgotest01 local]#
上面信息能夠看到有4個M節點,3個S節點,9006成爲了M主節點,它沒有附屬的從節點,並且Cluster並未給7007分配哈希卡槽(0 slots)。
能夠從客戶端鏈接集羣查看一下,集羣節點的鏈接狀況
[root@bj02-ops-mgotest01 local]# /usr/local/redis/bin/redis-cli -c -p 9006 cluster nodes
09c4cec212b76ff325b92ea6c62526c4104ae8cd 10.125.141.137:9001 slave 67f093514bf6499f701f11f40b18937098b983c0 0 1480594174584 7 connected
bec729e8b454b190db07997661f003b869391b9b 10.125.141.137:9003 slave adb0a771e41b8284adbed417f89eb8c8ce943835 0 1480594173582 1 connected
c311d5160a2f4f1df8fea93e49c97fdbad5da920 10.125.141.137:9002 master - 0 1480594173080 3 connected 10923-16383
adb0a771e41b8284adbed417f89eb8c8ce943835 10.125.141.137:9000 master - 0 1480594172578 1 connected 0-5460
d4395d6492bbd56956a4e3a8cf073107afe4f38a 10.125.141.137:9006 myself,master - 0 0 0 connected
c03a00b628b4c65b68f24f249e4694db937b0c5c 10.125.141.137:9005 slave c311d5160a2f4f1df8fea93e49c97fdbad5da920 0 1480594174082 3 connected
67f093514bf6499f701f11f40b18937098b983c0 10.125.141.137:9004 master - 0 1480594174083 7 connected 5461-10922
[root@bj02-ops-mgotest01 local]#
redis-cluster在新增節點時並未分配卡槽,須要咱們手動對集羣進行從新分片遷移數據,須要從新分片命令reshard
/opt/redis-3.2.5/src/redis-trib.rb reshard 10.125.141.137:9000
這個命令是用來遷移slot節點的,後面的10.125.141.137:9000是表示是哪一個集羣,端口填[9000-9006]均可以,執行結果以下:
[root@bj02-ops-mgotest01 local]# /opt/redis-3.2.5/src/redis-trib.rb reshard 10.125.141.137:9000
>>> Performing Cluster Check (using node 10.125.141.137:9000)
M: adb0a771e41b8284adbed417f89eb8c8ce943835 10.125.141.137:9000
slots:0-5460 (5461 slots) master
1 additional replica(s)
S: 09c4cec212b76ff325b92ea6c62526c4104ae8cd 10.125.141.137:9001
slots: (0 slots) slave
replicates 67f093514bf6499f701f11f40b18937098b983c0
S: c03a00b628b4c65b68f24f249e4694db937b0c5c 10.125.141.137:9005
slots: (0 slots) slave
replicates c311d5160a2f4f1df8fea93e49c97fdbad5da920
M: 67f093514bf6499f701f11f40b18937098b983c0 10.125.141.137:9004
slots:5461-10922 (5462 slots) master
1 additional replica(s)
S: bec729e8b454b190db07997661f003b869391b9b 10.125.141.137:9003
slots: (0 slots) slave
replicates adb0a771e41b8284adbed417f89eb8c8ce943835
M: d4395d6492bbd56956a4e3a8cf073107afe4f38a 10.125.141.137:9006
slots: (0 slots) master
0 additional replica(s)
M: c311d5160a2f4f1df8fea93e49c97fdbad5da920 10.125.141.137:9002
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.
How many slots do you want to move (from 1 to 16384)? 4096
它提示咱們須要遷移多少slot到9006上,咱們平分16384個哈希槽給4個節點:16384/4 = 4096,咱們須要移動4096個槽點到9006上。
接着會問,要把這些哈希槽遷移到哪裏去,須要填寫目的機器的id號。這裏填寫9006對應的機器id號碼。
What is the receiving node ID? d4395d6492bbd56956a4e3a8cf073107afe4f38a
[OK] All 16384 slots covered.
How many slots do you want to move (from 1 to 16384)? 4096
What is the receiving node ID? d4395d6492bbd56956a4e3a8cf073107afe4f38a
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
redis-trib 會向你詢問從新分片的源節點(source node),即要從集羣的哪一個節點中取出 4096 個哈希槽,仍是從所有節點提取4096個哈希槽, 並將這些槽移動到9006節點上面。
若是咱們不打算從特定的節點上取出指定數量的哈希槽,那麼能夠向redis-trib輸入 all,這樣的話, 集羣中的全部主節點都會成爲源節點,redis-trib從各個源節點中各取出一部分哈希槽,湊夠4096個,而後移動到9006節點上:
Source node #1:all
而後開始從別的主節點遷移哈希槽,而且確認。
......
......
Moving slot 12277 from c311d5160a2f4f1df8fea93e49c97fdbad5da920
Moving slot 12278 from c311d5160a2f4f1df8fea93e49c97fdbad5da920
Moving slot 12279 from c311d5160a2f4f1df8fea93e49c97fdbad5da920
Moving slot 12280 from c311d5160a2f4f1df8fea93e49c97fdbad5da920
Moving slot 12281 from c311d5160a2f4f1df8fea93e49c97fdbad5da920
Moving slot 12282 from c311d5160a2f4f1df8fea93e49c97fdbad5da920
Moving slot 12283 from c311d5160a2f4f1df8fea93e49c97fdbad5da920
Moving slot 12284 from c311d5160a2f4f1df8fea93e49c97fdbad5da920
Moving slot 12285 from c311d5160a2f4f1df8fea93e49c97fdbad5da920
Moving slot 12286 from c311d5160a2f4f1df8fea93e49c97fdbad5da920
Moving slot 12287 from c311d5160a2f4f1df8fea93e49c97fdbad5da920
Do you want to proceed with the proposed reshard plan (yes/no)? yes
確認以後,redis-trib就開始執行分片操做,將哈希槽一個一個從源主節點移動到目標主節點9006。
從新分片結束後咱們能夠check如下節點的分配狀況。
[root@bj02-ops-mgotest01 local]# /opt/redis-3.2.5/src/redis-trib.rb check 10.125.141.137:9000
>>> Performing Cluster Check (using node 10.125.141.137:9000)
M: adb0a771e41b8284adbed417f89eb8c8ce943835 10.125.141.137:9000
slots:1365-5460 (4096 slots) master
1 additional replica(s)
S: 09c4cec212b76ff325b92ea6c62526c4104ae8cd 10.125.141.137:9001
slots: (0 slots) slave
replicates 67f093514bf6499f701f11f40b18937098b983c0
S: c03a00b628b4c65b68f24f249e4694db937b0c5c 10.125.141.137:9005
slots: (0 slots) slave
replicates c311d5160a2f4f1df8fea93e49c97fdbad5da920
M: 67f093514bf6499f701f11f40b18937098b983c0 10.125.141.137:9004
slots:6827-10922 (4096 slots) master
1 additional replica(s)
S: bec729e8b454b190db07997661f003b869391b9b 10.125.141.137:9003
slots: (0 slots) slave
replicates adb0a771e41b8284adbed417f89eb8c8ce943835
M: d4395d6492bbd56956a4e3a8cf073107afe4f38a 10.125.141.137:9006
slots:0-1364,5461-6826,10923-12287 (4096 slots) master
0 additional replica(s)
M: c311d5160a2f4f1df8fea93e49c97fdbad5da920 10.125.141.137:9002
slots:12288-16383 (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@bj02-ops-mgotest01 local]#
能夠看到
M: d4395d6492bbd56956a4e3a8cf073107afe4f38a 10.125.141.137:9006
slots:0-1364,5461-6826,10923-12287 (4096 slots) master
0 additional replica(s)
能夠看到9006節點分片的哈希槽片不是連續的,間隔的移動。
[root@bj02-ops-mgotest01 local]# /usr/local/redis/bin/redis-cli -c -p 9006
127.0.0.1:9006> keys *
1) "names"
127.0.0.1:9006>
能夠看到將9004的names[6659]移動到9006節點上,主節點7007添加成功。
二、新增從節點
----------
新增一個節點9007節點,使用add-node --slave命令。
cp /usr/local/redis/etc/redis_9000.conf /usr/local/redis/etc/redis_9007.conf
sed -i 's/9000/9007/g' /usr/local/redis/etc/redis_9007.conf
grep 9007 /usr/local/redis/etc/redis_9007.conf
mkdir -p /gomeo2o/logs/redis/9007/
mkdir -p /gomeo2o/logs/redis/9007/
/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis_9007.conf
[root@bj02-ops-mgotest01 local]# cp /usr/local/redis/etc/redis_9000.conf /usr/local/redis/etc/redis_9007.conf
[root@bj02-ops-mgotest01 local]# sed -i 's/9000/9007/g' /usr/local/redis/etc/redis_9007.conf
[root@bj02-ops-mgotest01 local]# grep 9007 /usr/local/redis/etc/redis_9007.conf
pidfile "/gomeo2o/logs/redis/9007/redis_9007.pid"
logfile "/gomeo2o/logs/redis/9007/redis_9007.log"
dir /gomeo2o/data/redis/9007/db
port 9007
[root@bj02-ops-mgotest01 ~]# mkdir -p /gomeo2o/logs/redis/9007/
[root@bj02-ops-mgotest01 ~]# mkdir -p /gomeo2o/data/redis/9007/db
[root@bj02-ops-mgotest01 ~]# /usr/local/redis/bin/redis-server /usr/local/redis/etc/redis_9007.conf
[root@bj02-ops-mgotest01 ~]# ps -ef|grep 9007|grep -v 'grep'
root 1006 1 0 17:32 ? 00:00:00 /usr/local/redis/bin/redis-server 0.0.0.0:9007 [cluster]
[root@bj02-ops-mgotest01 ~]#
redis-trib增長從節點的命令爲:
/opt/redis-3.2.5/src/redis-trib.rb add-node --slave --master-id $[nodeid] 10.125.141.137:9007 10.125.141.137:9000
nodeid爲要加到master主節點的node id,10.125.141.137:9007爲新增的從節點,10.125.141.137:9000爲集羣的一個節點(集羣的任意節點都行),用來辨識是哪一個集羣;若是沒有給定那個主節點--master-id的話,redis-trib將會將新增的從節點隨機到從節點較少的主節點上。
如今咱們添加一下9007,看是否會自動加到沒有從節點的9006主節點上。
[root@bj02-ops-mgotest01 ~]# /opt/redis-3.2.5/src/redis-trib.rb check 10.125.141.137:9000
>>> Performing Cluster Check (using node 10.125.141.137:9000)
M: adb0a771e41b8284adbed417f89eb8c8ce943835 10.125.141.137:9000
slots:1365-5460 (4096 slots) master
1 additional replica(s)
S: 09c4cec212b76ff325b92ea6c62526c4104ae8cd 10.125.141.137:9001
slots: (0 slots) slave
replicates 67f093514bf6499f701f11f40b18937098b983c0
S: c03a00b628b4c65b68f24f249e4694db937b0c5c 10.125.141.137:9005
slots: (0 slots) slave
replicates c311d5160a2f4f1df8fea93e49c97fdbad5da920
M: 67f093514bf6499f701f11f40b18937098b983c0 10.125.141.137:9004
slots:6827-10922 (4096 slots) master
1 additional replica(s)
S: bec729e8b454b190db07997661f003b869391b9b 10.125.141.137:9003
slots: (0 slots) slave
replicates adb0a771e41b8284adbed417f89eb8c8ce943835
M: d4395d6492bbd56956a4e3a8cf073107afe4f38a 10.125.141.137:9006
slots:0-1364,5461-6826,10923-12287 (4096 slots) master
0 additional replica(s)
M: c311d5160a2f4f1df8fea93e49c97fdbad5da920 10.125.141.137:9002
slots:12288-16383 (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@bj02-ops-mgotest01 ~]#
[root@bj02-ops-mgotest01 ~]# /opt/redis-3.2.5/src/redis-trib.rb add-node --slave 10.125.141.137:9007 10.125.141.137:9000
>>> Adding node 10.125.141.137:9007 to cluster 10.125.141.137:9000
>>> Performing Cluster Check (using node 10.125.141.137:9000)
M: adb0a771e41b8284adbed417f89eb8c8ce943835 10.125.141.137:9000
slots:1365-5460 (4096 slots) master
1 additional replica(s)
S: 09c4cec212b76ff325b92ea6c62526c4104ae8cd 10.125.141.137:9001
slots: (0 slots) slave
replicates 67f093514bf6499f701f11f40b18937098b983c0
S: c03a00b628b4c65b68f24f249e4694db937b0c5c 10.125.141.137:9005
slots: (0 slots) slave
replicates c311d5160a2f4f1df8fea93e49c97fdbad5da920
M: 67f093514bf6499f701f11f40b18937098b983c0 10.125.141.137:9004
slots:6827-10922 (4096 slots) master
1 additional replica(s)
S: bec729e8b454b190db07997661f003b869391b9b 10.125.141.137:9003
slots: (0 slots) slave
replicates adb0a771e41b8284adbed417f89eb8c8ce943835
M: d4395d6492bbd56956a4e3a8cf073107afe4f38a 10.125.141.137:9006
slots:0-1364,5461-6826,10923-12287 (4096 slots) master
0 additional replica(s)
M: c311d5160a2f4f1df8fea93e49c97fdbad5da920 10.125.141.137:9002
slots:12288-16383 (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.
Automatically selected master 10.125.141.137:9006
>>> Send CLUSTER MEET to node 10.125.141.137:9007 to make it join the cluster.
Waiting for the cluster to join.
>>> Configure node as replica of 10.125.141.137:9006.
[OK] New node added correctly.
[root@bj02-ops-mgotest01 ~]#
能夠看到9006已經有了一個從節點,從節點是9007
[root@bj02-ops-mgotest01 ~]# /opt/redis-3.2.5/src/redis-trib.rb check 10.125.141.137:9000
>>> Performing Cluster Check (using node 10.125.141.137:9000)
M: adb0a771e41b8284adbed417f89eb8c8ce943835 10.125.141.137:9000
slots:1365-5460 (4096 slots) master
1 additional replica(s)
S: 22c190eefeba4987df1ce9762a07da90b9afbe08 10.125.141.137:9007
slots: (0 slots) slave
replicates d4395d6492bbd56956a4e3a8cf073107afe4f38a
S: 09c4cec212b76ff325b92ea6c62526c4104ae8cd 10.125.141.137:9001
slots: (0 slots) slave
replicates 67f093514bf6499f701f11f40b18937098b983c0
S: c03a00b628b4c65b68f24f249e4694db937b0c5c 10.125.141.137:9005
slots: (0 slots) slave
replicates c311d5160a2f4f1df8fea93e49c97fdbad5da920
M: 67f093514bf6499f701f11f40b18937098b983c0 10.125.141.137:9004
slots:6827-10922 (4096 slots) master
1 additional replica(s)
S: bec729e8b454b190db07997661f003b869391b9b 10.125.141.137:9003
slots: (0 slots) slave
replicates adb0a771e41b8284adbed417f89eb8c8ce943835
M: d4395d6492bbd56956a4e3a8cf073107afe4f38a 10.125.141.137:9006
slots:0-1364,5461-6826,10923-12287 (4096 slots) master
1 additional replica(s)
M: c311d5160a2f4f1df8fea93e49c97fdbad5da920 10.125.141.137:9002
slots:12288-16383 (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@bj02-ops-mgotest01 ~]#
再測試一下指定主節點添加從節點,給9006增長9008從節點。
cp /usr/local/redis/etc/redis_9000.conf /usr/local/redis/etc/redis_9008.conf
sed -i 's/9000/9008/g' /usr/local/redis/etc/redis_9008.conf
grep 900* /usr/local/redis/etc/redis_9008.conf
mkdir -p /gomeo2o/logs/redis/9008/
mkdir -p /gomeo2o/data/redis/9008/db
ps -ef|grep 9008 |grep -v 'grep'
[root@bj02-ops-mgotest01 ~]# cp /usr/local/redis/etc/redis_9000.conf /usr/local/redis/etc/redis_9008.conf
[root@bj02-ops-mgotest01 ~]# sed -i 's/9000/9008/g' /usr/local/redis/etc/redis_9008.conf
[root@bj02-ops-mgotest01 ~]# grep 900* /usr/local/redis/etc/redis_9008.conf
pidfile "/gomeo2o/logs/redis/9008/redis_9008.pid"
logfile "/gomeo2o/logs/redis/9008/redis_9008.log"
save 900 1
dir /gomeo2o/data/redis/9008/db
port 9008
[root@bj02-ops-mgotest01 ~]#
[root@bj02-ops-mgotest01 ~]# mkdir -p /gomeo2o/logs/redis/9008/
[root@bj02-ops-mgotest01 ~]# mkdir -p /gomeo2o/data/redis/9008/db
[root@bj02-ops-mgotest01 ~]# ps -ef|grep 9008 |grep -v 'grep'
root 1088 1 0 18:22 ? 00:00:00 /usr/local/redis/bin/redis-server 0.0.0.0:9008 [cluster]
[root@bj02-ops-mgotest01 ~]#
[root@bj02-ops-mgotest01 ~]# /opt/redis-3.2.5/src/redis-trib.rb add-node --slave --master-id d4395d6492bbd56956a4e3a8cf073107afe4f38a 10.125.141.137:9008 10.125.141.137:9006
>>> Adding node 10.125.141.137:9008 to cluster 10.125.141.137:9006
>>> Performing Cluster Check (using node 10.125.141.137:9006)
M: d4395d6492bbd56956a4e3a8cf073107afe4f38a 10.125.141.137:9006
slots:0-1364,5461-6826,10923-12287 (4096 slots) master
1 additional replica(s)
S: 09c4cec212b76ff325b92ea6c62526c4104ae8cd 10.125.141.137:9001
slots: (0 slots) slave
replicates 67f093514bf6499f701f11f40b18937098b983c0
S: bec729e8b454b190db07997661f003b869391b9b 10.125.141.137:9003
slots: (0 slots) slave
replicates adb0a771e41b8284adbed417f89eb8c8ce943835
M: c311d5160a2f4f1df8fea93e49c97fdbad5da920 10.125.141.137:9002
slots:12288-16383 (4096 slots) master
1 additional replica(s)
M: adb0a771e41b8284adbed417f89eb8c8ce943835 10.125.141.137:9000
slots:1365-5460 (4096 slots) master
1 additional replica(s)
S: 22c190eefeba4987df1ce9762a07da90b9afbe08 10.125.141.137:9007
slots: (0 slots) slave
replicates d4395d6492bbd56956a4e3a8cf073107afe4f38a
S: c03a00b628b4c65b68f24f249e4694db937b0c5c 10.125.141.137:9005
slots: (0 slots) slave
replicates c311d5160a2f4f1df8fea93e49c97fdbad5da920
M: 67f093514bf6499f701f11f40b18937098b983c0 10.125.141.137:9004
slots:6827-10922 (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.
>>> Send CLUSTER MEET to node 10.125.141.137:9008 to make it join the cluster.
Waiting for the cluster to join.
>>> Configure node as replica of 10.125.141.137:9006.
[OK] New node added correctly.
[root@bj02-ops-mgotest01 ~]#
[root@bj02-ops-mgotest01 ~]# /opt/redis-3.2.5/src/redis-trib.rb check 10.125.141.137:9000
>>> Performing Cluster Check (using node 10.125.141.137:9000)
M: adb0a771e41b8284adbed417f89eb8c8ce943835 10.125.141.137:9000
slots:1365-5460 (4096 slots) master
1 additional replica(s)
M: 67f093514bf6499f701f11f40b18937098b983c0 10.125.141.137:9004
slots:6827-10922 (4096 slots) master
1 additional replica(s)
M: c311d5160a2f4f1df8fea93e49c97fdbad5da920 10.125.141.137:9002
slots:12288-16383 (4096 slots) master
1 additional replica(s)
S: 0800e962aaeb41ede634f267acf7d1280ab0e3c3 10.125.141.137:9008
slots: (0 slots) slave
replicates d4395d6492bbd56956a4e3a8cf073107afe4f38a
S: 22c190eefeba4987df1ce9762a07da90b9afbe08 10.125.141.137:9007
slots: (0 slots) slave
replicates d4395d6492bbd56956a4e3a8cf073107afe4f38a
S: 09c4cec212b76ff325b92ea6c62526c4104ae8cd 10.125.141.137:9001
slots: (0 slots) slave
replicates 67f093514bf6499f701f11f40b18937098b983c0
S: c03a00b628b4c65b68f24f249e4694db937b0c5c 10.125.141.137:9005
slots: (0 slots) slave
replicates c311d5160a2f4f1df8fea93e49c97fdbad5da920
S: bec729e8b454b190db07997661f003b869391b9b 10.125.141.137:9003
slots: (0 slots) slave
replicates adb0a771e41b8284adbed417f89eb8c8ce943835
M: d4395d6492bbd56956a4e3a8cf073107afe4f38a 10.125.141.137:9006
slots:0-1364,5461-6826,10923-12287 (4096 slots) master
2 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
[root@bj02-ops-mgotest01 ~]#
顯示從節點9008節點添加到9006主節點下面,能夠看一下9006的從節點,以下:能夠看出來,9006已經有兩個從節點,分別是10.125.141.137:9008和10.125.141.137:9007。
[root@bj02-ops-mgotest01 ~]# /usr/local/redis/bin/redis-cli -c -p 9000 cluster nodes
adb0a771e41b8284adbed417f89eb8c8ce943835 10.125.141.137:9000 myself,master - 0 0 1 connected 1365-5460
67f093514bf6499f701f11f40b18937098b983c0 10.125.141.137:9004 master - 0 1480674797185 7 connected 6827-10922
c311d5160a2f4f1df8fea93e49c97fdbad5da920 10.125.141.137:9002 master - 0 1480674798689 3 connected 12288-16383
0800e962aaeb41ede634f267acf7d1280ab0e3c3 10.125.141.137:9008 slave d4395d6492bbd56956a4e3a8cf073107afe4f38a 0 1480674799191 8 connected
22c190eefeba4987df1ce9762a07da90b9afbe08 10.125.141.137:9007 slave d4395d6492bbd56956a4e3a8cf073107afe4f38a 0 1480674798689 8 connected
09c4cec212b76ff325b92ea6c62526c4104ae8cd 10.125.141.137:9001 slave 67f093514bf6499f701f11f40b18937098b983c0 0 1480674799190 7 connected
c03a00b628b4c65b68f24f249e4694db937b0c5c 10.125.141.137:9005 slave c311d5160a2f4f1df8fea93e49c97fdbad5da920 0 1480674798188 6 connected
bec729e8b454b190db07997661f003b869391b9b 10.125.141.137:9003 slave adb0a771e41b8284adbed417f89eb8c8ce943835 0 1480674799191 4 connected
d4395d6492bbd56956a4e3a8cf073107afe4f38a 10.125.141.137:9006 master - 0 1480674798187 8 connected 0-1364 5461-6826 10923-12287
[root@bj02-ops-mgotest01 ~]#
咱們測試一下9006節點掛掉,看和7009那個成爲主節點。
[root@bj02-ops-mgotest01 ~]# ps -ef | grep redis |grep -v 'grep'
root 1006 1 0 17:32 ? 00:00:16 /usr/local/redis/bin/redis-server 0.0.0.0:9007 [cluster]
root 1088 1 0 18:22 ? 00:00:05 /usr/local/redis/bin/redis-server 0.0.0.0:9008 [cluster]
root 31100 1 0 Dec01 ? 00:04:28 /usr/local/redis/bin/redis-server 0.0.0.0:9000 [cluster]
root 31108 1 0 Dec01 ? 00:04:26 /usr/local/redis/bin/redis-server 0.0.0.0:9002 [cluster]
root 31112 1 0 Dec01 ? 00:04:18 /usr/local/redis/bin/redis-server 0.0.0.0:9003 [cluster]
root 31116 1 0 Dec01 ? 00:04:25 /usr/local/redis/bin/redis-server 0.0.0.0:9004 [cluster]
root 31120 1 0 Dec01 ? 00:04:21 /usr/local/redis/bin/redis-server 0.0.0.0:9005 [cluster]
root 31124 1 0 Dec01 ? 00:04:13 /usr/local/redis/bin/redis-server 0.0.0.0:9006 [cluster]
root 31252 1 0 Dec01 ? 00:04:11 /usr/local/redis/bin/redis-server 0.0.0.0:9001 [cluster]
[root@bj02-ops-mgotest01 ~]# kill -9 31124
[root@bj02-ops-mgotest01 ~]#
[root@bj02-ops-mgotest01 ~]# /usr/local/redis/bin/redis-cli -c -p 9000 cluster nodes
adb0a771e41b8284adbed417f89eb8c8ce943835 10.125.141.137:9000 myself,master - 0 0 1 connected 1365-5460
67f093514bf6499f701f11f40b18937098b983c0 10.125.141.137:9004 master - 0 1480676007001 7 connected 6827-10922
c311d5160a2f4f1df8fea93e49c97fdbad5da920 10.125.141.137:9002 master - 0 1480676006497 3 connected 12288-16383
0800e962aaeb41ede634f267acf7d1280ab0e3c3 10.125.141.137:9008 master - 0 1480676007502 9 connected 0-1364 5461-6826 10923-12287
22c190eefeba4987df1ce9762a07da90b9afbe08 10.125.141.137:9007 slave 0800e962aaeb41ede634f267acf7d1280ab0e3c3 0 1480676007001 9 connected
09c4cec212b76ff325b92ea6c62526c4104ae8cd 10.125.141.137:9001 slave 67f093514bf6499f701f11f40b18937098b983c0 0 1480676007502 7 connected
c03a00b628b4c65b68f24f249e4694db937b0c5c 10.125.141.137:9005 slave c311d5160a2f4f1df8fea93e49c97fdbad5da920 0 1480676008005 6 connected
bec729e8b454b190db07997661f003b869391b9b 10.125.141.137:9003 slave adb0a771e41b8284adbed417f89eb8c8ce943835 0 1480676008508 4 connected
d4395d6492bbd56956a4e3a8cf073107afe4f38a 10.125.141.137:9006 master,fail - 1480675926833 1480675926634 8 disconnected
[root@bj02-ops-mgotest01 ~]#
能夠看到9008代替9006成了主節點。重啓9006以後,會自動變成9008的從節點。
[root@bj02-ops-mgotest01 ~]# /usr/local/redis/bin/redis-server /usr/local/redis/etc/redis_9006.conf
[root@bj02-ops-mgotest01 ~]# /usr/local/redis/bin/redis-cli -c -p 9000 cluster nodes
adb0a771e41b8284adbed417f89eb8c8ce943835 10.125.141.137:9000 myself,master - 0 0 1 connected 1365-5460
67f093514bf6499f701f11f40b18937098b983c0 10.125.141.137:9004 master - 0 1480676134530 7 connected 6827-10922
c311d5160a2f4f1df8fea93e49c97fdbad5da920 10.125.141.137:9002 master - 0 1480676135032 3 connected 12288-16383
0800e962aaeb41ede634f267acf7d1280ab0e3c3 10.125.141.137:9008 master - 0 1480676134028 9 connected 0-1364 5461-6826 10923-12287
22c190eefeba4987df1ce9762a07da90b9afbe08 10.125.141.137:9007 slave 0800e962aaeb41ede634f267acf7d1280ab0e3c3 0 1480676133025 9 connected
09c4cec212b76ff325b92ea6c62526c4104ae8cd 10.125.141.137:9001 slave 67f093514bf6499f701f11f40b18937098b983c0 0 1480676133026 7 connected
c03a00b628b4c65b68f24f249e4694db937b0c5c 10.125.141.137:9005 slave c311d5160a2f4f1df8fea93e49c97fdbad5da920 0 1480676134029 6 connected
bec729e8b454b190db07997661f003b869391b9b 10.125.141.137:9003 slave adb0a771e41b8284adbed417f89eb8c8ce943835 0 1480676134028 4 connected
d4395d6492bbd56956a4e3a8cf073107afe4f38a 10.125.141.137:9006 slave 0800e962aaeb41ede634f267acf7d1280ab0e3c3 0 1480676134932 9 connected
[root@bj02-ops-mgotest01 ~]#
驗證了以前的測試。
## 6、節點的移除 ##
和節點添加同樣,移除節點也有移除主節點,從節點。
一、移除主節點
----------
/opt/redis-3.2.5/src/redis-trib.rb del-node host:port node_id
例如:
[root@bj02-ops-mgotest01 ~]# /opt/redis-3.2.5/src/redis-trib.rb del-node 10.125.141.137:9000 0800e962aaeb41ede634f267acf7d1280ab0e3c3
10.125.141.137:9000是集羣節點,node-id爲要刪除的主節點。 和添加節點不一樣,移除節點node-id是必需的,測試刪除9008主節點:
[root@bj02-ops-mgotest01 ~]# /opt/redis-3.2.5/src/redis-trib.rb del-node 10.125.141.137:9000 0800e962aaeb41ede634f267acf7d1280ab0e3c3
>>> Removing node 0800e962aaeb41ede634f267acf7d1280ab0e3c3 from cluster 10.125.141.137:9000
[ERR] Node 10.125.141.137:9008 is not empty! Reshard data away and try again.
[root@bj02-ops-mgotest01 ~]#
redis cluster提示9008已經有數據了,不可以被刪除,須要將他的數據轉移出去,也就是和新增主節點同樣需從新分片。
[root@bj02-ops-mgotest01 ~]# /opt/redis-3.2.5/src/redis-trib.rb reshard 10.125.141.137:9008
>>> Performing Cluster Check (using node 10.125.141.137:9008)
M: 0800e962aaeb41ede634f267acf7d1280ab0e3c3 10.125.141.137:9008
slots:0-1364,5461-6826,10923-12287 (4096 slots) master
2 additional replica(s)
M: c311d5160a2f4f1df8fea93e49c97fdbad5da920 10.125.141.137:9002
slots:12288-16383 (4096 slots) master
1 additional replica(s)
S: 22c190eefeba4987df1ce9762a07da90b9afbe08 10.125.141.137:9007
slots: (0 slots) slave
replicates 0800e962aaeb41ede634f267acf7d1280ab0e3c3
M: 67f093514bf6499f701f11f40b18937098b983c0 10.125.141.137:9004
slots:6827-10922 (4096 slots) master
1 additional replica(s)
S: 09c4cec212b76ff325b92ea6c62526c4104ae8cd 10.125.141.137:9001
slots: (0 slots) slave
replicates 67f093514bf6499f701f11f40b18937098b983c0
S: d4395d6492bbd56956a4e3a8cf073107afe4f38a 10.125.141.137:9006
slots: (0 slots) slave
replicates 0800e962aaeb41ede634f267acf7d1280ab0e3c3
S: c03a00b628b4c65b68f24f249e4694db937b0c5c 10.125.141.137:9005
slots: (0 slots) slave
replicates c311d5160a2f4f1df8fea93e49c97fdbad5da920
S: bec729e8b454b190db07997661f003b869391b9b 10.125.141.137:9003
slots: (0 slots) slave
replicates adb0a771e41b8284adbed417f89eb8c8ce943835
M: adb0a771e41b8284adbed417f89eb8c8ce943835 10.125.141.137:9000
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)? 4096
What is the receiving node ID?
執行之後會提示咱們移除的大小,由於9008佔用了4096個槽點。輸入4096,提示移動的node id,填寫9007的node id。
What is the receiving node ID? 22c190eefeba4987df1ce9762a07da90b9afbe08
The specified node is not known or not a master, please retry.
What is the receiving node ID?
這裏須要填寫一個主節點的id號。這裏咱們填寫9000的id。
What is the receiving node ID? adb0a771e41b8284adbed417f89eb8c8ce943835
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:0800e962aaeb41ede634f267acf7d1280ab0e3c3
Source node #2:done
......
......
Do you want to proceed with the proposed reshard plan (yes/no)? yes
......
......
這裏須要填寫被刪除的節點的id號。確認以後會一個一個將9008的卡槽移到到9000上。此時9008的數據已經所有遷移到了9000上,查看驗證,此時9008已經沒有槽位了。而9008上有8192個槽位。
[root@bj02-ops-mgotest01 ~]# /opt/redis-3.2.5/src/redis-trib.rb check 10.125.141.137:9001
>>> Performing Cluster Check (using node 10.125.141.137:9001)
S: 09c4cec212b76ff325b92ea6c62526c4104ae8cd 10.125.141.137:9001
slots: (0 slots) slave
replicates 67f093514bf6499f701f11f40b18937098b983c0
S: bec729e8b454b190db07997661f003b869391b9b 10.125.141.137:9003
slots: (0 slots) slave
replicates adb0a771e41b8284adbed417f89eb8c8ce943835
M: 0800e962aaeb41ede634f267acf7d1280ab0e3c3 10.125.141.137:9008
slots: (0 slots) master
0 additional replica(s)
S: c03a00b628b4c65b68f24f249e4694db937b0c5c 10.125.141.137:9005
slots: (0 slots) slave
replicates c311d5160a2f4f1df8fea93e49c97fdbad5da920
M: adb0a771e41b8284adbed417f89eb8c8ce943835 10.125.141.137:9000
slots:0-6826,10923-12287 (8192 slots) master
3 additional replica(s)
S: d4395d6492bbd56956a4e3a8cf073107afe4f38a 10.125.141.137:9006
slots: (0 slots) slave
replicates adb0a771e41b8284adbed417f89eb8c8ce943835
S: 22c190eefeba4987df1ce9762a07da90b9afbe08 10.125.141.137:9007
slots: (0 slots) slave
replicates adb0a771e41b8284adbed417f89eb8c8ce943835
M: 67f093514bf6499f701f11f40b18937098b983c0 10.125.141.137:9004
slots:6827-10922 (4096 slots) master
1 additional replica(s)
M: c311d5160a2f4f1df8fea93e49c97fdbad5da920 10.125.141.137:9002
slots:12288-16383 (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@bj02-ops-mgotest01 ~]#
在執行刪除操做,此時成功刪除節點9008.
[root@bj02-ops-mgotest01 ~]# /opt/redis-3.2.5/src/redis-trib.rb del-node 10.125.141.137:9008 0800e962aaeb41ede634f267acf7d1280ab0e3c3
>>> Removing node 0800e962aaeb41ede634f267acf7d1280ab0e3c3 from cluster 10.125.141.137:9008
>>> Sending CLUSTER FORGET messages to the cluster...
>>> SHUTDOWN the node.
[root@bj02-ops-mgotest01 ~]#
已經刪除了9008節點。
[root@bj02-ops-mgotest01 ~]# /opt/redis-3.2.5/src/redis-trib.rb check 10.125.141.137:9001 >>> Performing Cluster Check (using node 10.125.141.137:9001)
S: 09c4cec212b76ff325b92ea6c62526c4104ae8cd 10.125.141.137:9001
slots: (0 slots) slave
replicates 67f093514bf6499f701f11f40b18937098b983c0
S: bec729e8b454b190db07997661f003b869391b9b 10.125.141.137:9003
slots: (0 slots) slave
replicates adb0a771e41b8284adbed417f89eb8c8ce943835
S: c03a00b628b4c65b68f24f249e4694db937b0c5c 10.125.141.137:9005
slots: (0 slots) slave
replicates c311d5160a2f4f1df8fea93e49c97fdbad5da920
M: adb0a771e41b8284adbed417f89eb8c8ce943835 10.125.141.137:9000
slots:0-6826,10923-12287 (8192 slots) master
3 additional replica(s)
S: d4395d6492bbd56956a4e3a8cf073107afe4f38a 10.125.141.137:9006
slots: (0 slots) slave
replicates adb0a771e41b8284adbed417f89eb8c8ce943835
S: 22c190eefeba4987df1ce9762a07da90b9afbe08 10.125.141.137:9007
slots: (0 slots) slave
replicates adb0a771e41b8284adbed417f89eb8c8ce943835
M: 67f093514bf6499f701f11f40b18937098b983c0 10.125.141.137:9004
slots:6827-10922 (4096 slots) master
1 additional replica(s)
M: c311d5160a2f4f1df8fea93e49c97fdbad5da920 10.125.141.137:9002
slots:12288-16383 (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@bj02-ops-mgotest01 ~]#
能夠看到9008已經鏈接不了;而9008的從節點9007自動分配到了9000主節點中,9000如今有3個從節點。
二、移除從節點
----------
好比移除9000的從節點9007節點。
[root@bj02-ops-mgotest01 ~]# /opt/redis-3.2.5/src/redis-trib.rb del-node 10.125.141.137:9007 22c190eefeba4987df1ce9762a07da90b9afbe08
>>> Removing node 22c190eefeba4987df1ce9762a07da90b9afbe08 from cluster 10.125.141.137:9007
>>> Sending CLUSTER FORGET messages to the cluster...
>>> SHUTDOWN the node.
[root@bj02-ops-mgotest01 ~]#
刪除從節點比較方便,如今redis-cluster中有3個主節點,4個從節點,以下:
[root@bj02-ops-mgotest01 ~]# /opt/redis-3.2.5/src/redis-trib.rb check 10.125.141.137:9000
>>> Performing Cluster Check (using node 10.125.141.137:9000)
M: adb0a771e41b8284adbed417f89eb8c8ce943835 10.125.141.137:9000
slots:0-6826,10923-12287 (8192 slots) master
2 additional replica(s)
M: 67f093514bf6499f701f11f40b18937098b983c0 10.125.141.137:9004
slots:6827-10922 (4096 slots) master
1 additional replica(s)
M: c311d5160a2f4f1df8fea93e49c97fdbad5da920 10.125.141.137:9002
slots:12288-16383 (4096 slots) master
1 additional replica(s)
S: 09c4cec212b76ff325b92ea6c62526c4104ae8cd 10.125.141.137:9001
slots: (0 slots) slave
replicates 67f093514bf6499f701f11f40b18937098b983c0
S: c03a00b628b4c65b68f24f249e4694db937b0c5c 10.125.141.137:9005
slots: (0 slots) slave
replicates c311d5160a2f4f1df8fea93e49c97fdbad5da920
S: bec729e8b454b190db07997661f003b869391b9b 10.125.141.137:9003
slots: (0 slots) slave
replicates adb0a771e41b8284adbed417f89eb8c8ce943835
S: d4395d6492bbd56956a4e3a8cf073107afe4f38a 10.125.141.137:9006
slots: (0 slots) slave
replicates adb0a771e41b8284adbed417f89eb8c8ce943835
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
[root@bj02-ops-mgotest01 ~]#
ok,測試到這兒吧。