Dockerd搭建redis三主三从
1.创建六个redis容器
docker run -d --name redis-node-1 --net host --privileged=true -v /data/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/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/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/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/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/share/redis-node-6:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6386
2.进入容器构建主从关系
docker exec -it redis-node-1 /bin/bash
redis-cli --cluster create 172.31.20.134:6381 172.31.20.134:6382 172.31.20.134:6383 172.31.20.134:6384 172.31.20.134:6385 172.31.20.134:6386 --cluster-replicas 1
–cluster-replicas 1 表示为每个master创建一个slave节点
3.查看集群状态
redis-cli -p 6381
CLUSTER info
CLUSTER NODES
redis-cli --cluster check 172.31.20.134:6381
4.集群连接
redis-cli -p 6381 -c
扩容
5.新建主机节点
docker run -d --name redis-node-7 --net host --privileged=true -v /data/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/share/redis-node-8:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6388
6.将新增节点加入集群
docker exec -it redis-node-7 /bin/bash
redis-cli --cluster add-node 172.31.20.134:6387 172.31.20.134:6381
#172.31.20.134:6381 原集群的节点
7.重新分配槽号
redis-cli --cluster reshard 172.31.20.134:6381
4096
52a4a9f3f53eb2a18cd664fa9ecc8cca5e930d6c
all
yes
#(16384/4=4096四主)
8.为主节点6387分配从节点6388
redis-cli --cluster add-node 172.31.20.134:6388 172.31.20.134:6387 --cluster-slave --cluster-master-id 52a4a9f3f53eb2a18cd664fa9ecc8cca5e930d6c
#ip:新slave端口 ip:新master端口 --cluster-slave --cluster-master-id新主机节点ID
查看集群状态
缩容
9.从集群删除从节点6388
redis-cli --cluster del-node 172.31.20.134:6388 ba6051df75334ba3e64f79aae02d411ed4e2a9c5
#最后为从节点ID
10.将主节点6387槽号清空,重新分配,本例将清出来的槽号都给6381
redis-cli --cluster reshard 172.31.20.134:6381
a6fe7315c2e05396c9182de54e12afa0b323f934
#接收节点槽号ID
52a4a9f3f53eb2a18cd664fa9ecc8cca5e930d6c
#释放节点的槽号ID
done
yes
11.删除主节点6387
redis-cli --cluster del-node 172.31.20.134:6387 52a4a9f3f53eb2a18cd664fa9ecc8cca5e930d6c
##最后为主节点ID
知识来源于大佬zzyybs@126.com