ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

podman管理redis集群

podman管理redis集群

podman管理redis集群

配置

创建卷目录

mkdir -p redis-cluster/share/{redis-node-1,redis-node-2,redis-node-3,redis-node-4,redis-node-5,redis-node-6,redis-node-7,redis-node-8}

 

启动6个容器

[root@wtdejisuanji share]# podman run -d --name redis-node-1 --net host -v /wtdata/redis-cluster/share/redis-node-1:/data:Z redis:7.2.15 --cluster-enabled yes --appendonly yes --port 6381
podman run -d --name redis-node-2 --net host -v /wtdata/redis-cluster/share/redis-node-2:/data:Z redis:7.2.15 --cluster-enabled yes --appendonly yes --port 6382
podman run -d --name redis-node-3 --net host -v /wtdata/redis-cluster/share/redis-node-3:/data:Z redis:7.2.15 --cluster-enabled yes --appendonly yes --port 6383
podman run -d --name redis-node-4 --net host -v /wtdata/redis-cluster/share/redis-node-4:/data:Z redis:7.2.15 --cluster-enabled yes --appendonly yes --port 6384
podman run -d --name redis-node-5 --net host -v /wtdata/redis-cluster/share/redis-node-5:/data:Z redis:7.2.15 --cluster-enabled yes --appendonly yes --port 6385
podman run -d --name redis-node-6 --net host -v /wtdata/redis-cluster/share/redis-node-6:/data:Z redis:7.2.15 --cluster-enabled yes --appendonly yes --port 6386

 

查看启动的容器

[root@wtdejisuanji share]# podman ps

 

进入容器构建主从关系

[root@wtdejisuanji share]# podman exec -it redis-node-1 /bin/bash
root@wtdejisuanji:/data# redis-cli --cluster create 192.168.0.100:6381 192.168.0.100:6382 192.168.0.100:6383 192.168.0.100:6384 192.168.0.100:6385 192.168.0.100:6386 --cluster-replicas 1

 

链接进入6381作为切入点

root@wtdejisuanji:/data# redis-cli -p 6381

查看集群信息

127.0.0.1:6381> cluster info

查看集群节点

127.0.0.1:6381> cluster nodes

 

集群数据读写

防止路由失效加-c参数进入6381节点的redis

root@wtdejisuanji:/data# redis-cli -p 6381 -c

这时可以增加键值,集群会自动分配槽位,数据从而存储到对应的节点

 

检查集群信息

root@wtdejisuanji:/data# redis-cli --cluster check 192.168.0.100:6381

 

容错切换迁移

当其中的一个主节点停机,从节点自动上位为主。原有的主节点再次启动会自动变为从节点。
如果需要恢复来的主从节点关系,把上位的主节点停掉,让从节点自动上位为主节点,再把原来的从节点启动就可以了。

 

主从扩容

再启动两台容器

[root@wtdejisuanji share]# podman run -d --name redis-node-7 --net host -v /wtdata/redis-cluster/share/redis-node-7:/data:Z redis:7.2.15 --cluster-enabled yes --appendonly yes --port 6387
podman run -d --name redis-node-8 --net host -v /wtdata/redis-cluster/share/redis-node-8:/data:Z redis:7.2.15 --cluster-enabled yes --appendonly yes --port 6388
#查看容器情况
[root@wtdejisuanji share]# podman ps

 

进入6387容器实例内部

[root@wtdejisuanji share]# podman exec -it redis-node-7 /bin/bash

 

 将新增的6387节点作为master添加到集群当中

redis-cli --cluster add-node 自己实际IP地址:6387 自己实际IP地址:6381
6387 就是将要作为master的新增节点
6381 就是原来集群节点里面的领路人,相当于6387拜拜6381的码头从而找到组织加入集群

root@wtdejisuanji:/data# redis-cli --cluster add-node 192.168.0.100:6387 192.168.0.100:6381

 

检查一下目前集群情况(新增的6387master节点有0个槽位)

root@wtdejisuanji:/data# redis-cli --cluster check 192.168.0.100:6381

 

重新分派槽号(为新添加的master节点分配槽号)

命令:redis-cli --cluster reshard IP地址:端口号

root@wtdejisuanji:/data# redis-cli --cluster reshard 192.168.0.100:6381

 

16384/4=4096,每个master各占4096,中间有选项要填写,分别是分配的槽位个数、要增加槽位的masterID、从哪里移过来的槽位的masterID,选择ALL即原来所有master、分配好要移动的槽位后选则YES后,开始移动分配。

完成后再次检查一下目前集群情况(此时4个master节点各有4096个槽位)

root@wtdejisuanji:/data# redis-cli --cluster check 192.168.0.100:6381

 

为6387主节点添加6388从节点

命令:redis-cli --cluster add-node ip:新slave端口 ip:新master端口 --cluster-slave --cluster-master-id 新主机节点ID

root@wtdejisuanji:/data# redis-cli --cluster add-node 192.168.0.100:6388 192.168.0.100:6387 --cluster-slave --cluster-master-id 4733f20fde2204f899316c4067f65370804da210

 

为新master添加slave后再次检查一下目前集群情况(此时4个master节点各有4096个槽位,每个master都有一个slave)

root@wtdejisuanji:/data# redis-cli --cluster check 192.168.0.100:6381

 

主从缩容(6387和6388下线)

检查集群情况,得到6388节点ID

root@wtdejisuanji:/data# redis-cli --cluster check 192.168.0.100:6382

 

从集群中删除6388节点

命令:redis-cli --cluster del-node ip:从机端口 从机6388节点ID

root@wtdejisuanji:/data# redis-cli --cluster del-node 192.168.0.100:6388 db2759357ae9b25b2340d469cbc04a72441cca38

 

查看集群情况(6388节点已从集群中删除)

root@wtdejisuanji:/data# redis-cli --cluster check 192.168.0.100:6382

 

将6387的槽位清空,重新分配给其他master

root@wtdejisuanji:/data# redis-cli --cluster reshard 192.168.0.100:6381

 

中间会有选择,首先是要接受槽的masterID,再接着是要移除槽的masterID,移除槽的ID写完之后填done,然后再选YES开始分配

 

查看集群情况(此时6381节点的槽位为8192,因为我把槽位全分配给它了,要均衡分配可以自己选择,此时我查看的6387节点变为6381的slave节点,可以直接移除集群了)

root@wtdejisuanji:/data# redis-cli --cluster check 192.168.0.100:6382

 

从集群中删除6387节点
命令:redis-cli --cluster del-node ip:端口 6387节点ID

root@wtdejisuanji:/data# redis-cli --cluster del-node 192.168.0.100:6387 4733f20fde2204f899316c4067f65370804da210root@wtdejisuanji:/data# redis-cli --cluster check 192.168.0.100:6382

查看集群情况(6387节点已从集群中移除了)

 然后就可以停掉这两个容器了。

返回列表