1.使用docker 部署redis Cluster模式 集群3主3从

发布于:2024-12-06 ⋅ 阅读:(110) ⋅ 点赞:(0)

1.使用docker 部署redis Cluster模式 集群3主3从

1.1 先安装docker 启动docker服务,拉取redis镜像 3主3从我们要在docker启动6个容器
docker run --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 --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 --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 --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 --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 --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
--cluster-enabled yes 代表开启集群模式, --appendonly yes 开启持久化

1.2随便进入一台docker redis的容器内命令如下

docker exec -it edis-node-1 /bin/bash

1.3 进入容器后执行下面命令

redis-cli --cluster cerate 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
这里的ip要宿主机的ip,  --cluster-replicas 1 表示为每个master创建一个slave(从节点)节点

1.4进入容器查询集群信息命令如下:

redis-cli -p 6381  这里是链接redis
cluster info 
cluster nodes

执行 cluster info 如图
在这里插入图片描述
执行 cluster nodes 如图
在这里插入图片描述
1.5集群检查命令如下

redis -cli --cluster check 192.168.111.167:6381

1.6如果需要扩容从原来的3主3从变成4主4从。

1.6.1先启动两个容器实例命令如下
docker run --name redis-node-7 --net host --privileged=true -v /data/redis/share/redis-node-6:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6387
docker run --name redis-node-8 --net host --privileged=true -v /data/redis/share/redis-node-6:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6388

1.6.2 进入6387容器中,并加入到之前的集群中命令如下

进入到 redis-node-7 容器中
docker exec -it  redis-node-76387加入到原来的集群中并作为主机命令如下
redis-cli --cluster add-node 192.168.111.167:6387  192.168.111.167:6387:6381
这里的6381之前在集群中就是主机(只要是集群任意一台主机IP地址+端口就可以了)

1.6.3 使用命令检查一下集群

redis -cli --cluster check 192.168.111.167:6387

如下图:
在这里插入图片描述
发现6387没有分配槽位

1.6.4 重现分配槽位命令如下

redis-cli --cluster reshard 192.168.111.167:6381

如下图所示:
在这里插入图片描述
为什么是4096 因为槽位最多是16384 有4个主机所以平均分配 nodeID一定要填 新加入集群的那个ID

在这里插入图片描述
选择 all全部重新分配
在这里插入图片描述
选择yes重新分配槽位

再次检查
在这里插入图片描述
发现6387 已经分配到了槽位,至此6387主机已经OK 这里可以看出,是之前的3台主机每台主机匀了1364个槽位给这台新加进来的主机

1.7 为6387配置从机6388
在这里插入图片描述
至此分配完成

1.8 集群缩减 删除6387,6388

1.8.1先删除6388从节点命令如下

在这里插入图片描述

1.8.2 在重新分配槽位命令如下

在这里插入图片描述
结果如下
在这里插入图片描述
这里天下6387主节点的槽位,之前是4096 所以这里填4096
在这里插入图片描述
在这里插入图片描述
将6387节点删除
在这里插入图片描述
在次输入命令检查
在这里插入图片描述

至此缩容完成


网站公告

今日签到

点亮在社区的每一天
去签到