1. 创建6个redis docker容器, node1, node2, node3, node4, node5, node6
创建容器命令:
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
--net host 使用宿主机的ip和端口 ,默认
--privileged=true 获取宿主机root用户权限
-v /data/redis/share/redis-node-1:/data 数据卷
reids:6.0.8 redis镜像和版本号
-- cluster-enabled yes 开启redis集群
--appendonly yes 开启持久化
--port 8386 redis端口号
2. 进入某个redis容器,部署集群
docker exec -it redis-node-1/bin/bash 进入容器
redis-cli --cluster create redis-node1容器ip:端口 redis-node2容器ip:端口 redis-node3容器ip:端口 redis-node4容器ip:端口 redis-node5容器ip:端口 redis-node6容器ip:端口 --cluster-replicas 1
6个redis组成集群 ,--cluster-replicas 1 表示为每个mater创建一个slave节点
3. 已集群模式查看redis redis-cli -p 6481 -c
查看集群node cluster nodes
查看集群信息 redis-cli --cluster check redis容器IP:端口
4. 主从扩容
新增两个redis节点 node7, node8
新增节点加入集群中 redis-cli --cluster add-node 新节点IP:端口 集群某个master节点IP:端口
重新分配槽号slot redis-cli --cluster reshard 集群某个master节点IP:端口(6381)
node8分配为node7的slave节点
redis-cli --cluster add-node node8 IP:端口 node7 IP:端口 --cluster-slave --cluster-master-id node7mater节点ID
5. 主从缩容
将node7, node8 从集群中去除
先去除从节点 node8 redis-cli --cluster del-node node8 IP:端口 node8节点ID
将mater节点node7分配到的槽号slot清空
redis-cli --cluster reshard 集群某个master节点IP:端口(6381) 重新分配槽号
将node7节点从集群中删除 redis-cli --cluster del-node node7 IP:端口 node7节点ID