redis集羣3 2臺機器遷移爲3臺機器

環境

系統:Centos6.6
軟件:redis 3.0.3 

背景

因爲2個機器搭建的redis集羣一旦1臺機器損壞,集羣依然不可用,爲了解決該問題,決定添加一個機器,組成3臺機器的高可用環境。

集羣節點:

把原來的5.17 5.18 的7002端口去掉,新增5.16的7000 7001
遷移前主機   端口      遷移後主機   端口
10.112.5.17 7000        10.112.5.16 7000
10.112.5.17 7001        10.112.5.16 7001
10.112.5.17 7002        10.112.5.17 7000
10.112.5.18 7000        10.112.5.17 7001
10.112.5.18 7001        10.112.5.18 7000
10.112.5.18 7002        10.112.5.18 7001

2個機器的原始狀態:

[worker@LFTz-Zkp02 ~]$ redis-cli  -p 7000 -c  cluster nodes|awk '{print $1,$2,$3,$4,$NF}'| sort -k2
231b544622793b0b69e88a286ac8b46d211c8172 10.112.5.17:7000 myself,master - 5461-10922
936482ede8b9e8b94eeb7d947e51ef635e5173df 10.112.5.17:7001 slave c3312b79d40e6b90eb856c3e52d0fae21ba217e7 connected
2304aalsdkjfalsjdflkajsfj23rklwj10932je9 10.112.5.17:7002 slave 231b544622793b0b69e88a286ac8b46d211c8172 connected
c3312b79d40e6b90eb856c3e52d0fae21ba217e7 10.112.5.18:7000 master - 0-5460
fb13b382748edee5e329db61af6ccbe5a426dade 10.112.5.18:7001 slave e442abf8ec244a697a203c67092fc184b45220bb connected
e442abf8ec244a697a203c67092fc184b45220bb 10.112.5.18:7002 master - 10923-16383

因爲需要摘除7002節點,所以找到7002節點

[worker@LFTz-Zkp02 ~]$ redis-cli  -p 7000 -c  cluster nodes|awk '{print $1,$2,$3,$4,$NF}'| sort -k2|grep :7002
2304aalsdkjfalsjdflkajsfj23rklwj10932je9 10.112.5.17:7002 slave 231b544622793b0b69e88a286ac8b46d211c8172 connected
e442abf8ec244a697a203c67092fc184b45220bb 10.112.5.18:7002 master - 10923-16383

從上面的節點信息可以看到

10.112.5.17:7002是slave節點,可以直接摘除, 
10.112.5.18:7002是master節點,需要先變成從節點,再進行摘除:

現在先把10.112.5.18:7002變成從節點

1 先kill掉10.112.5.18:7002的進程,讓salve這個節點下線,讓他的slave節點變成主
    ps -ef|grep 7002 |awk '{print $2}'|kill 
2.查看節點狀態
    redis-cli  -c -p 7000 cluster nodes
    發現10.112.5.18:7002 已經下線,並且10.112.5.18:7001 已經變成了主節點
3.啓動10.112.5.18:7002 ,讓他也變成從節點
    redis-server 7002/7002.conf
    redis-cli  -c -p 7000 cluster nodes
    查看節點狀態後,10.112.5.18:7002已經變成從節點

此時2個節點已經變成從節點,可以直接執行摘除操作。

爲了安全考慮,先把2個新的節點添加到集羣,再執行節點摘除操作。

[worker@LFTz-Zkp02 ~]$ redis-cli  -p 7000 -c  cluster nodes|awk '{print $1,$2,$3,$4,$NF}'| sort -k2
231b544622793b0b69e88a286ac8b46d211c8172 10.112.5.17:7000 myself,master - 5461-10922
936482ede8b9e8b94eeb7d947e51ef635e5173df 10.112.5.17:7001 slave c3312b79d40e6b90eb856c3e52d0fae21ba217e7 connected
2304aalsdkjfalsjdflkajsfj23rklwj10932je9 10.112.5.17:7002 slave 231b544622793b0b69e88a286ac8b46d211c8172 connected
c3312b79d40e6b90eb856c3e52d0fae21ba217e7 10.112.5.18:7000 master - 0-5460
fb13b382748edee5e329db61af6ccbe5a426dade 10.112.5.18:7001 master - 10923-16383
e442abf8ec244a697a203c67092fc184b45220bb 10.112.5.18:7002 slave fb13b382748edee5e329db61af6ccbe5a426dade connected

新的節點是爲了替換2個7002端口的從節點,所以找到2個7002端口對應的2個主節點:

231b544622793b0b69e88a286ac8b46d211c8172 10.112.5.17:7000 myself,master - 5461-10922
fb13b382748edee5e329db61af6ccbe5a426dade 10.112.5.18:7001 master - 10923-16383

執行添加節點操作:

命令用法:redis-trib.rb add-node newip:newport IP:port 
redis-trib.rb add-node --slave --master-id 231b544622793b0b69e88a286ac8b46d211c8172 10.112.5.16:7000 10.112.5.17:7000
redis-trib.rb add-node --slave --master-id fb13b382748edee5e329db61af6ccbe5a426dade 10.112.5.16:7001 10.112.5.17:7000

添加2個新的從節點後,查看狀態,一共8個節點

[worker@LFTz-Zkp02 ~]$ redis-cli  -p 7000 -c  cluster nodes|awk '{print $1,$2,$3,$4,$NF}'| sort -k2
e442abf8ec244a697a203c67092fc184b45220bb 10.112.5.16:7001 slave fb13b382748edee5e329db61af6ccbe5a426dade connected
341a85b5ca42f8bb7baf707579025fa352c822b6 10.112.5.16:7000 slave 231b544622793b0b69e88a286ac8b46d211c8172 connected
231b544622793b0b69e88a286ac8b46d211c8172 10.112.5.17:7000 myself,master - 5461-10922
936482ede8b9e8b94eeb7d947e51ef635e5173df 10.112.5.17:7001 slave c3312b79d40e6b90eb856c3e52d0fae21ba217e7 connected
2304aalsdkjfalsjdflkajsfj23rklwj10932je9 10.112.5.17:7002 slave 231b544622793b0b69e88a286ac8b46d211c8172 connected
c3312b79d40e6b90eb856c3e52d0fae21ba217e7 10.112.5.18:7000 master - 0-5460
fb13b382748edee5e329db61af6ccbe5a426dade 10.112.5.18:7001 master - 10923-16383
e442abf8ec244a697a203c67092fc184b45220bb 10.112.5.18:7002 slave fb13b382748edee5e329db61af6ccbe5a426dade connected

刪除2個7002端口的幾點:

redis-trib.rb del-node 10.112.5.17:7001 e442abf8ec244a697a203c67092fc184b45220bb
redis-trib.rb del-node 10.112.5.17:7001 fb13b382748edee5e329db61af6ccbe5a426dade

遷移後的節點狀態:

[worker@LFTz-Zkp02 ~]$ redis-cli  -p 7000 -c  cluster nodes|awk '{print $1,$2,$3,$4,$NF}'
e442abf8ec244a697a203c67092fc184b45220bb 10.112.5.16:7001 slave fb13b382748edee5e329db61af6ccbe5a426dade connected
936482ede8b9e8b94eeb7d947e51ef635e5173df 10.112.5.17:7001 slave c3312b79d40e6b90eb856c3e52d0fae21ba217e7 connected
231b544622793b0b69e88a286ac8b46d211c8172 10.112.5.17:7000 myself,master - 5461-10922
341a85b5ca42f8bb7baf707579025fa352c822b6 10.112.5.16:7000 slave 231b544622793b0b69e88a286ac8b46d211c8172 connected
c3312b79d40e6b90eb856c3e52d0fae21ba217e7 10.112.5.18:7000 master - 0-5460
fb13b382748edee5e329db61af6ccbe5a426dade 10.112.5.18:7001 master - 10923-16383
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章