1. 程式人生 > 其它 >三、redis6 叢集 線上遷移

三、redis6 叢集 線上遷移

環境:

1.基於【redis6 叢集部署

原叢集 新叢集
192.168.109.137:7000 192.168.109.139:7000
192.168.109.137:7001 192.168.109.139:7001
192.168.109.137:7002 192.168.109.139:7002
192.168.109.138:7000 192.168.109.140:7000
192.168.109.138:7001 192.168.109.140:7001
192.168.109.138:7002 192.168.109.140:7002

2.線上遷移就得保障業務的可用性;這就必須要求新舊叢集主機間網路連通性,業務連線redis叢集介面配置檔案無論從哪一個節點都能操作叢集

1).模擬線上環境,後臺執行上一章節redis6 叢集 擴縮容中提到的指令碼set_key.sh(注意增加配置,相當於修改業務介面配置檔案操作)模擬線上實時寫入key

操作:

1.檢視老叢集狀態、key等資訊

[apprun@localhost apprun]$ /apprun/redis/bin/redis-cli --cluster info 192.168.109.137:7000 -a 'wang!321' 2>/dev/null

[apprun@localhost apprun]$ /apprun/redis/bin/redis-cli --cluster check 192.168.109.137:7000 -a 'wang!321' 2>/dev/null

2.參考【redis6 叢集部署】將新叢集節點都安裝上redis,並把各節點加入老叢集先

加入規劃:

3主:192.168.109.139:7000、7001、7002

3從:192.168.109.140:7000、7001、7002

3從分別指向3主

[apprun@localhost ~]$ /apprun/redis/bin/redis-cli --cluster add-node 192.168.109.139:7000 192.168.109.137:7000 -a 'wang!321'

[apprun@localhost ~]$ /apprun/redis/bin/redis-cli --cluster add-node 192.168.109.139:7001 192.168.109.137:7000 -a 'wang!321'

[apprun@localhost ~]$ /apprun/redis/bin/redis-cli --cluster add-node 192.168.109.139:7002 192.168.109.137:7000 -a 'wang!321'

[apprun@localhost apprun]$ /apprun/redis/bin/redis-cli --cluster check 192.168.109.137:7000 -a 'wang!321' 2>/dev/null

[apprun@localhost apprun]$ /apprun/redis/bin/redis-cli --cluster add-node 192.168.109.140:7000 192.168.109.137:7000 -a 'wang!321' --cluster-slave --cluster-master-id c7a05ce237bd8177af154af3ce48fd89d7c86453

[apprun@localhost apprun]$ /apprun/redis/bin/redis-cli --cluster add-node 192.168.109.140:7001 192.168.109.137:7000 -a 'wang!321' --cluster-slave --cluster-master-id 8f2ed53955dfe9fc22de255e91ba2a9e696055b2

[apprun@localhost apprun]$ /apprun/redis/bin/redis-cli --cluster add-node 192.168.109.140:7002 192.168.109.137:7000 -a 'wang!321' --cluster-slave --cluster-master-id e30842d360247cad83e2b2e4d7369e65607fcb85

開始遷移:

1.先檢視當前叢集狀態

[apprun@localhost apprun]$ /apprun/redis/bin/redis-cli --cluster check 192.168.109.137:7000 -a 'wang!321' 2>/dev/null

M: 5ff72f7e629f8dd290a66e06d73e85378e4e1349 192.168.109.138:7000
slots:[5516-10922] (5407 slots) master

1 additional replica(s)

M: fe0d43871950c7b2a9b7082bfe9b52f56aa4c65f 192.168.109.138:7002
slots:[0-5515],[10923-10976] (5570 slots) master

1 additional replica(s)

M: 776134007b961293086f6248b0ad05a094a5f19a 192.168.109.138:7001
slots:[10977-16383] (5407 slots) master

1 additional replica(s)

老叢集的3主分別如上,並各有一個從,接下來我們一個一個主的遷移,先遷移192.168.109.138:7000

如下;

1).先刪除192.168.109.138:7000的從節點

S: 98ec10ff7e5b788130dd5283422ae52358599084 192.168.109.137:7002
slots: (0 slots) slave
replicates 5ff72f7e629f8dd290a66e06d73e85378e4e1349

[apprun@localhost apprun]$ /apprun/redis/bin/redis-cli --cluster del-node 192.168.109.137:7002 98ec10ff7e5b788130dd5283422ae52358599084 -a 'wang!321'

2).分片遷移,即遷移槽;192.168.109.138:7000 遷移到192.168.109.139:7000

檢視192.168.109.138:7000 老節點的槽數量,並全部遷移到192.168.109.139:7000

192.168.109.138:7000 (5ff72f7e...) -> 449 keys | 5407 slots | 0 slaves.

M: 5ff72f7e629f8dd290a66e06d73e85378e4e1349 192.168.109.138:7000
slots:[5516-10922] (5407 slots) master

M: c7a05ce237bd8177af154af3ce48fd89d7c86453 192.168.109.139:7000
slots: (0 slots) master
1 additional replica(s)

命令:

[apprun@localhost apprun]$ /apprun/redis/bin/redis-cli --cluster reshard 192.168.109.137:7000 -a 'wang!321' --cluster-from 5ff72f7e629f8dd290a66e06d73e85378e4e1349 --cluster-to c7a05ce237bd8177af154af3ce48fd89d7c86453 --cluster-slots 5407 --cluster-yes

[apprun@localhost apprun]$ /apprun/redis/bin/redis-cli --cluster check 192.168.109.137:7000 -a 'wang!321' 2>/dev/null

[apprun@localhost apprun]$ /apprun/redis/bin/redis-cli --cluster info 192.168.109.137:7000 -a 'wang!321' 2>/dev/null

3).192.168.109.138:7000老節點刪除~

[apprun@localhost apprun]$ /apprun/redis/bin/redis-cli --cluster del-node 192.168.109.138:7000 5ff72f7e629f8dd290a66e06d73e85378e4e1349 -a 'wang!321'

至此,老叢集的一個主節點就遷移完成了~......其他老叢集主節點參照上面步驟操作!!!

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

[apprun@localhost apprun]$ /apprun/redis/bin/redis-cli --cluster del-node 192.168.109.137:7001 5f9f852f5ebf0d6ccc357e1eadfad7a2a4cade47 -a 'wang!321'

[apprun@localhost apprun]$ /apprun/redis/bin/redis-cli --cluster reshard 192.168.109.137:7000 -a 'wang!321' --cluster-from776134007b961293086f6248b0ad05a094a5f19a --cluster-to8f2ed53955dfe9fc22de255e91ba2a9e696055b2 --cluster-slots 5407 --cluster-yes

[apprun@localhost ~]$ /apprun/redis/bin/redis-cli --cluster del-node 192.168.109.138:7001 776134007b961293086f6248b0ad05a094a5f19a -a 'wang!321'

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

[apprun@localhost ~]$ /apprun/redis/bin/redis-cli --cluster del-node 192.168.109.137:7000 79d3d38b893eb9e301481d04fe39fc1ff54d2155 -a 'wang!321'

[apprun@localhost ~]$ /apprun/redis/bin/redis-cli --cluster reshard 192.168.109.139:7000 -a 'wang!321' --cluster-from fe0d43871950c7b2a9b7082bfe9b52f56aa4c65f --cluster-to e30842d360247cad83e2b2e4d7369e65607fcb85 --cluster-slots 5570 --cluster-yes

[apprun@localhost ~]$ /apprun/redis/bin/redis-cli --cluster del-node 192.168.109.138:7002 fe0d43871950c7b2a9b7082bfe9b52f56aa4c65f -a 'wang!321'

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

遷移完成:

線上遷移期間通過模擬線上環境,利用指令碼set_key.sh每秒向叢集寫入key共寫入3037個,我們接下來核對這些:

查詢:

由此可驗證線上叢集遷移成功~!!!