封绝的世界

docker redis主从实战

1.新建6个docker容器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

2.进入容器redis-node-1并为6台机器构建集群关系

192.168.111.147 换成自己的ip --cluster-replicas 1 表示为每个master创建一个slave节点

redis-cli --cluster create 192.168.111.147:6381 192.168.111.147:6382 192.168.111.147:6383 192.168.111.147:6384 192.168.111.147:6385 192.168.111.147:6386 --cluster-replicas 1

3.链接进入6381作为切入点,查看集群状态

cluster info
cluster nodes
image

4.防止路由失效加参数-c并新增两个key

redis-cli -p 6381
#换成
redis-cli -p 6381 -c

查看集群信息
redis-cli --cluster check 192.168.111.147:6381
image

关掉主机1,从机会上位,再启动主机1,并不会自动成为主机只会成为从机。

5.主从扩容案例

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

将新增的6387作为master节点加入集群
redis-cli --cluster add-node 自己实际IP地址:6387 自己实际IP地址:6381
6387 就是将要作为master新增节点
6381 就是原来集群节点里面的领路人,相当于6387拜拜6381的码头从而找到组织加入集群

redis-cli --cluster reshard 192.168.111.147:6381
image

为主节点6387分配从节点6388
命令:redis-cli --cluster add-node ip:新slave端口 ip:新master端口 --cluster-slave --cluster-master-id 新主机节点ID

redis-cli --cluster add-node 192.168.111.147:6388 192.168.111.147:6387 --cluster-slave --cluster-master-id e4781f644d4a4e4d4b4d107157b9ba8144631451

6.主从缩容案例

6.1 先删除从机
命令:redis-cli --cluster del-node ip:从机端口 从机6388节点ID

redis-cli --cluster del-node 192.168.111.147:6388 5d149074b7e57b802287d1797a874ed7a1a284a8

将6387的槽号清空,整体槽分配,可以每次分配少量槽,多次执行保证主机槽数均衡
redis-cli --cluster reshard 192.168.111.147:6381
image
第一部选择多少个槽,选择分配给的主机id,选择分配出去的主机id,可填多个,但一般填一个,直到填done结束,回想起scanner按回车结束。

跟6388删除一样重复删除主机6387
命令:redis-cli --cluster del-node ip:端口 6387节点ID

redis-cli --cluster del-node 192.168.111.147:6387 e4781f644d4a4e4d4b4d107157b9ba8144631451

检查集群情况
redis-cli --cluster check 192.168.111.147:6381

posted @ 2025-08-30 16:50  天边的云云  阅读(1)  评论(0)    收藏  举报