拉取镜像
```bash
docker pull redis:6.0.8
```
创建redis集群容器
执行docker命令
```bash
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
```
进入容器
```bash
docker exec -ti redis-node-1 /bin/bash
```
执行如下命令
redis-cli --cluster create 10.255.237.120:6381 10.255.237.120:6382 10.255.237.120:6383 10.255.237.120:6384 10.255.237.120:6385 10.255.237.120:6386 --cluster-replicas 1
输入yes之后
- 此时代表已经创建成功了
查看集群情况
在redis-node-1容器里面执行如下命令
redis-cli -p 6381 -c
通过如下命令查看redis集群情况
```bash
cluster info
cluster nodes
```
redis集群扩容案例【三主三从扩容到四主四从】
执行如下docker命令
```bash
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实例内部
将新增的6387节点(空槽号)作为master节点加入原集群
```bash
redis-cli --cluster add-node 10.255.237.120:6387 10.255.237.120:6381
```
使用如下命令可以检查到6387节点已经加入了,但是可以看到没有分配槽位
redis-cli --cluster check 10.255.237.120:6381
重新分配槽号
redis-cli --cluster reshard 10.255.237.120:6381
0-16383区间的数字选择
16383/master节点的个数,本次选择是4096
选择all
redis-cli --cluster check 10.255.237.120:6381
执行发现,新加入的主节点是由之前的主节点每个节点匀一点槽位给新的主节点,而不是全部重新分配
为主节点6387分配从节点6388
cluster-master-id为6387的编号
redis-cli --cluster add-node 10.255.237.120:6388 10.255.237.120:6387 --cluster-slave --cluster-master-id 135f091ecb2b7eade2d472c2589413fda8c6926b
至此,扩容完成
缩容【删除6387-6388】
缩容的时候,应该先删从机,再删除主机
执行redis-cli --cluster check 10.255.237.120:6381命令,获取6388节点id,如下图
删除节点的命令如下
redis-cli --cluster del-node 10.255.237.120:6388 50acca20c6240f83e81c1a5de2a0c17e3dbda523
给集群重新分配槽号
redis-cli --cluster reshard 10.255.237.120:6381
将6387的槽位号全部都分配给其他节点,在这里分配给6382了
如下图所示6387的槽位为0了
删除节点
6387的槽位已经分配出来了,现在可以删除6387节点了
redis-cli --cluster del-node 10.255.237.120:6387 135f091ecb2b7eade2d472c2589413fda8c6926b
检查集群情况
redis-cli --cluster check 10.255.237.120:6381
至此,redis集群的创建,扩容,缩容都操作完毕了