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-7 将6387加入到原来的集群中并作为主机命令如下
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节点删除
在次输入命令检查
至此缩容完成