redis集群的簡單應用
1、創建集群
# 創建redis示例
docker run -d --name redis-node-1 --net host --privileged=true -v /data/redis/share/redis-node-1:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6381
docker run -d --name redis-node-2 --net host --privileged=true -v /data/redis/share/redis-node-2:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6382
docker run -d --name redis-node-3 --net host --privileged=true -v /data/redis/share/redis-node-3:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6383
docker run -d --name redis-node-4 --net host --privileged=true -v /data/redis/share/redis-node-4:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6384
docker run -d --name redis-node-5 --net host --privileged=true -v /data/redis/share/redis-node-5:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6385
docker run -d --name redis-node-6 --net host --privileged=true -v /data/redis/share/redis-node-6:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6386

進入一臺容器內操作,隨便哪一臺都可以
docker exec -it 80 bash
構建主從操作
#--cluster-replicas 1 表示為每一個master 創建一個slave
redis-cli --cluster create 172.26.120.85:6381 172.26.120.85:6382 172.26.120.85:6383 172.26.120.85:6384 172.26.120.85:6385 172.26.120.85:6386 --cluster-replicas 1

以上哈希槽已經分配完畢
選一臺容器進入查看集群信息


此時集群的創建就算完成了,6太實例,三主三從,哈希槽也分配完畢
注意:此時應之前常規的方法寫入會有問題

原因是因為現在用的是集群的方式,且已經分配好哈希槽,此時k1經過哈希計算后他的id是12706,但是node1節點的槽位只到5460
所以此時應該以集群的方式進行操作
redis-cli -p 6381 -c

查看集群信息
redis-cli --cluster check 172.26.120.85:6381
2、主從容錯切換遷移
# 手動關閉節點2也就是6382這個容器 docker stop redis-node-2
# 之前6382是master 其對應的slave是6384
由下圖可見,6382掛掉了,此時6384變成master了

#開啟node2 docker start redis-node-2 由圖可見6382變成slave,說明恢復后其并不會變成master

3、主從擴容
新增主機
docker run -d --name redis-node-7 --net host --privileged=true -v /data/redis/share/redis-node-7:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6387
docker run -d --name redis-node-8 --net host --privileged=true -v /data/redis/share/redis-node-8:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6388
# 1、將6387作為master節點加入集群 6381作為領路人 redis-cli --cluster add-node 172.26.120.85:6387 172.26.120.85:6381 # 重新分配槽位
redis-cli --cluster reshard 172.26.120.85:6381
# 將6388 分配給6387做slave
redis-cli --cluster add-node 172.26.120.85:6388 172.26.120.85:6387 --cluster-slave --cluster-master-id c7066a8cf23831b4e03281fe07207d310c882b4e

通過下圖我們發現并不是從0重新分配,而是每一家勻一點給它

4、主從縮容# 1、先清除從節點6388
redis-cli --cluster del-node 172.26.120.85:6388 ff97b51215b702685454347c536cd5356f0d03ab # 2、重新分配槽位 redis-cli --cluster reshard 172.26.120.85:6381 # 3、再刪除6387
redis-cli --cluster del-node 172.26.120.85:6387 c7066a8cf23831b4e03281fe07207d310c882b4e
# 4、恢復3主3從

恢復3主3從


浙公網安備 33010602011771號