美文网首页
docker容器下安装分布式redis集群3主3从以及扩缩容

docker容器下安装分布式redis集群3主3从以及扩缩容

作者: 酱油瓶儿_fea9 | 来源:发表于2022-02-16 10:05 被阅读0次

启动6台redis容器实例

docker run -d --name redis-node-1 --net host --privileged -v /usr/local/zl/tools/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 -v /usr/local/zl/tools/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 -v /usr/local/zl/tools/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 -v /usr/local/zl/tools/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 -v /usr/local/zl/tools/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 -v /usr/local/zl/tools/share/redis-node-6:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6386
执行docker ps查看启动的容器实例


image.png

配置

进入一台reids容器,执行命令:docker exec -it redis-node-1 /bin/bash,然后执行创建redis集群的命令

redis-cli --cluster create 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385 127.0.0.1:6386 --cluster-replicas 1 image.png

测试

登录redis-node-1,执行docker exec -it redis-node-1 /bin/bash进入容器,执行登录命令redis-cli -p 6381 -c 记得加上-c,以集群方式连接,不加-c表示以单机形式连接,有时设置key会报错


image.png

扩容

启动两台redis容器作为扩容的一主一从

docker run -d --name redis-node-7 --net host --privileged -v /usr/local/zl/tools/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 -v /usr/local/zl/tools/share/redis-node-8:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6388

添加节点进去集群

登录redis-node-1容器,执行命令redis-cli --cluster check 127.0.0.1:6381查看集群slot的分布情况,3主3从


image.png

执行命令docker exec -it redis-node-7 /bin/bash , 进入redis-node-7,执行命令redis-cli --cluster add-node 127.0.0.1:6387 127.0.0.1:6381


image.png

执行执行redis-cli --cluster check 127.0.0.1:6381查看集群的状态,发现master数量变为4,但是6387暂时还没有分配槽位


image.png

重新分配槽位

执行命令redis-cli --cluster reshard 127.0.01:6381,执行后,会提示需要移动slot的个数,16384/4=4096,平均分的话一个节点4096个槽位,然后在输入移动到的节点的ID也就是node-7的节点ID:e72e099426014951e94dff62aa680f6a51ab6a31,来源节点输入:all


image.png

再次执行命令:redis-cli --cluster check 127.0.0.1:6381检查集群slots的分配情况


image.png

给6387添加从节点

执行命令redis-cli --cluster add-node 127.0.01:6388 127.0.0.1:6387 --cluster-slave --cluster-master-id e72e099426014951e94dff62aa680f6a51ab6a31
e72e099426014951e94dff62aa680f6a51ab6a31为6387主节点的ID

再次检查集群状态

执行命令redis-cli --cluster check 127.0.0.1:6381,发现变成了4主4从


image.png

缩容

方案:先删除6388,分配6387上的slot到其他节点,删除6387节点

查看6387以及6388节点

执行命令redis-cli --cluster check 127.0.0.1:6381,6387节点ID:e72e099426014951e94dff62aa680f6a51ab6a31 6388节点ID: 19bc4cf11ce605c747dff70b83ee4c2547a838df


image.png

删除6388

redis-cli --cluster del-node 127.0.0.1:6388 19bc4cf11ce605c747dff70b83ee4c2547a838df

查看集群还剩下4主3从


image.png

重新分配槽号

redis-cli --cluster reshard 127.0.0.1:6381
需要分配4096个槽位,这里使用6381这个节点来接收所有的槽位,节点ID为e9ade431c79ef38649c160f8f3ee301c4c7e5883
source node:来源表示6387节点ID的槽点,e72e099426014951e94dff62aa680f6a51ab6a31


image.png

重新检查集群

reids-cli --cluster check 127.0.01:6381
发现4个M 3个S,但是发现6387上的slot变为了0


image.png

删除6387节点

redis-cli --cluster del-node 127.0.0.1:6381 e72e099426014951e94dff62aa680f6a51ab6a31
删除后变为了3主3从


image.png

相关文章

网友评论

      本文标题:docker容器下安装分布式redis集群3主3从以及扩缩容

      本文链接:https://www.haomeiwen.com/subject/unitlrtx.html