Java研究院 Java研究院

人非生而知之者,知之,而后知不知。

目录
手把手教你于docker 搭建 redis-cluster 集群并验证(续)
/    

手把手教你于docker 搭建 redis-cluster 集群并验证(续)

手把手教你于docker 搭建 redis-cluster 集群并验证

一文中,我们介绍了如何基于docker搭建redis集群,细心的小伙伴可能注意到了,我们的集群是不完善的,虽然实现了存储的分布式,但存在一个问题是我们的redis实例节点都是主节点,那就意味着没有备份节点。

我们重新回顾下之前的组建集群的命令

redis-cli --cluster create 10.0.4.6:6379 10.0.4.6:6380 10.0.4.6:6381 --cluster-replicas 0

同样的,细心的小伙伴可能注意到了,参数 --cluster-replicas 0 意味着我们的集群是没有副本的,所以其实如果我们要组建有备份节点的集群很简单,就是--cluster-replicas 参数,但是具体怎么弄?

假设我们仍然是3个主节点,三个备份节点,即我们的集群有一个备份,那么我们的意味着我们有6个节点,--cluster-replicas 1 这样设置即可,因为 cluster-replicas 是比例,如果设置为2,那我们应该有9个节点,三个主节点,6个备份节点。当我们执行组建集群命令的时候,redis会自动配置。

那如果我只有7个redis实例节点,但设置了 cluster-replicas 为 2会出现什么情况?答案是会报错,小伙伴们可以自动尝试,这里不做说明。

上一篇文章,我们组建了一个没有备份的集群,那如果我想基于已有的集群,添加备份节点怎么弄?答案是手动添加。

首先,大家要记得,在我们创建redis实例的时候,有设置配置文件,即 :

/data/redis-data/node* 以及 --cluster-config-file node-*.conf

如果你是在Linux下按步骤操作,那你能在/data/redis-data/node1目录下看到如下文件:

image.png

dump.rdb是redis持久化的文件,node-1.conf就是我们的配置文件,使用cat,命令查看内容如下:

image.png

现在,我们来重复上一篇内容,重新创建3个节点,即 r-node4、r-node5和r-node6。

docker create --name r-node4 --net host -v /data/redis-data/node4:/data redis:latest --cluster-enabled yes --cluster-config-file node-4.conf --port 6382

docker create --name r-node5 --net host -v /data/redis-data/node5:/data redis:latest --cluster-enabled yes --cluster-config-file node-5.conf --port 6383

docker create --name r-node6 --net host -v /data/redis-data/node6:/data redis:latest --cluster-enabled yes --cluster-config-file node-6.conf --port 6384

创建完容器后启动容器,用命令 docker start r-node4 r-node5 r-node6

如果之前的容器已经被停止了,记得也要重新启动。

现在我要将 r-node4 和 r-node5 两个节点设置为 r-node1的备份节点,r-node6 设置为 r-node2的备份节点,命令如下:

redis-cli --cluster add-node 10.0.4.6:6382 10.0.4.6:6379  --cluster-slave --cluster-master-id 04753ecf1b6bd08f72d86ae73b264ab0a9f6ee0b

redis-cli --cluster add-node 10.0.4.6:6383 10.0.4.6:6379  --cluster-slave --cluster-master-id 04753ecf1b6bd08f72d86ae73b264ab0a9f6ee0b

redis-cli --cluster add-node 10.0.4.6:6384 10.0.4.6:6380  --cluster-slave --cluster-master-id 88e909b3b01ef691143616abe1519886f37ef8f1

和之前文章介绍的组建集群用 create 不同,这里用的是add-node,并且用 --cluster-slave 参数指定当前节点为从节点,然后通过 --cluster-master-id 参数指定了主节点ID。

主节点ID从哪来?细心的朋友在前文中组建集群的时候应该就看到了,我这里再把组建集群的情况贴一下:

image.png

很明显了吧?

同样的,上面的node-1.conf文件中,也将masterID记录得明明白白。

当你执行上述加入节点命令的时候,会看到如下输出:

image.png

同样的,这里将节点情况记录得明明白白,这个时候你再去看node-1.conf的文件内容,会产生变化。

image.png

不仅仅是内容增加了,我们也能看到,不仅有了主节点,也有了从节点。

那么我怎么验证我的从节点起到了备份作用呢?

还记得上文中做的set操作吗?

我们再来看一下 r-node1这个实例,即 6379 端口号对应的实例,我们通过 keys * 来看下情况。

image.png

我们在添加节点的时候,指定了 r-node3 和r-node4作为r-node1的从节点,r-node3监听的是6382端口,那我们去看下他的情况:

image.png

是不是一目了然了?你学废了嘛?


才疏学浅,难免有坑,有坑也不填
标题:手把手教你于docker 搭建 redis-cluster 集群并验证(续)
地址:https://studying.icu/articles/2021/09/26/1632643936884.html