基于Docker搭建Redis主从集群的实现

作者:niceyoo 时间:2022-10-23 05:09:44 

最近陆陆续续有不少园友加我好友咨询 redis 集群搭建的问题,我觉得一定是之前写的这篇 《基于Docker的Redis集群搭建》 文章有问题了,所以我花了几分钟浏览之前的文章总结了下面几个问题:

redis 数量太少,只创建了 3 个实例;由于只有 3 个实例,所以全部只能是主节点,无法体现集群主从关系;如何搭建主从集群?如何分配从节点?

基于之前的文章,我想快速的过一下这几个问题,本文基于 Docker + Redis 5.0.5 版本,通过 cluster 方式创建一个 6 个 redis 实例的主从集群,当然文章会指出相应的参数说明,这样即便是创建 9 个实例的集群方式也是一样的。

1、拉取 Redis 镜像

基于 Redis:5.0.5 版本,执行如下指令:


docker pull redis:5.0.5

2、创建 6 个 Redis 容器

创建 6 个Redis 容器:

  • redis-node1:6379

  • redis-node2:6380

  • redis-node3:6381

  • redis-node4:6382

  • redis-node5:6383

  • redis-node6:6384

执行命令如下:


docker create --name redis-node1 --net host -v /data/redis-data/node1:/data redis:5.0.5 --cluster-enabled yes --cluster-config-file nodes-node-1.conf --port 6379

docker create --name redis-node2 --net host -v /data/redis-data/node2:/data redis:5.0.5 --cluster-enabled yes --cluster-config-file nodes-node-2.conf --port 6380

docker create --name redis-node3 --net host -v /data/redis-data/node3:/data redis:5.0.5 --cluster-enabled yes --cluster-config-file nodes-node-3.conf --port 6381

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

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

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

部分参数解释:

  • --cluster-enabled:是否启动集群,选值:yes 、no

  • --cluster-config-file 配置文件.conf :指定节点信息,自动生成

  • --cluster-node-timeout 毫秒值: 配置节点连接超时时间

  • --appendonly:是否开启持久化,选值:yes、no

执行命令截图:

基于Docker搭建Redis主从集群的实现

3、启动 Redis 容器

执行命令如下:


docker start redis-node1 redis-node2 redis-node3 redis-node4 redis-node5 redis-node6

启动截图如下:

基于Docker搭建Redis主从集群的实现

4、组建 Redis 集群

进入任意一个 Redis 实例:


# 这里以 redis-node1 实例为例
docker exec -it redis-node1 /bin/bash

执行组件集群的命令:


# 组建集群,10.211.55.4为当前物理机的ip地址
redis-cli --cluster create 10.211.55.4:6379 10.211.55.4:6380 10.211.55.4:6381 10.211.55.4:6382 10.211.55.4:6383 10.211.55.4:6384 --cluster-replicas 1

执行命令截图如下:

基于Docker搭建Redis主从集群的实现

创建成功后,通过 redis-cli 查看一下集群节点信息:


root@CentOS7:/data# redis-cli
127.0.0.1:6379> cluster nodes

执行命令截图如下:

基于Docker搭建Redis主从集群的实现

5、关于Redis集群搭建

我们再回到创建集群的命令上:


redis-cli --cluster create 10.211.55.4:6379~6384 --cluster-replicas 1

大家着重看这个参数 --cluster-replicas 1,参数后面的数字表示的是主从比例,比如这里的 1 表示的是主从比例是 1:1,什么概念呢?

也就是 1 个主节点对应几个从节点,现有 6 个实例,所以主从分配就是 3 个 master 主节点,3 个 slave 从节点。

主节点最少3个,3个才能保证集群的健壮性。

如果 --cluster-replicas 2 呢?

那么主从比例就是 1:2,也就是 1 个主节点对于应 2 个从节点。

即:3(master) + 6(slave) = 9个 Redis 实例。

如果不足 9个 Redis 实例,但是参数指定为 2 会怎么样?

报错信息如下:

基于Docker搭建Redis主从集群的实现

提示已经很清楚了,Redis集群至少需要3个主节点。那么从节点就需要有6个,所以最后说:至少需要9个节点。

好的,至少3个主节点的要求我不继续刚了,但是我想4个主节点,2个从节点,这总该可以了吧?

4个主节点满足你:


# 进入一个启动的 reids 实例,这里以 redis-node1 实例为例
docker exec -it redis-node1 /bin/bash

执行组建集群的命令:


redis-cli --cluster create 10.211.55.4:6379 10.211.55.4:6380 10.211.55.4:6381 10.211.55.4:6382  --cluster-replicas 0

指定4个没有从节点的主节点,这样你就有4个主节点了:

基于Docker搭建Redis主从集群的实现

剩下的两个从节点怎么办呢?手动添加。

怎么添加?手动添加!

基于Docker搭建Redis主从集群的实现

看到这些 master 节点的 id 了吗,只需要把 slave 指定给他们就可以了。

继续执行如下命令:


redis-cli --cluster add-node 10.211.55.4:6383 10.211.55.4:6379  --cluster-slave --cluster-master-id b0c32b1dae9e7b7f7f4b74354c59bdfcaa46f30a

redis-cli --cluster add-node 10.211.55.4:6384 10.211.55.4:6379  --cluster-slave --cluster-master-id 111de8bed5772585cef5280c4b5225ecb15a582e

将两个 Redis 实例塞给其他主节点了:

基于Docker搭建Redis主从集群的实现

最后我们进入 redis-cli,通过 cluster nodes 查看一下节点信息:

基于Docker搭建Redis主从集群的实现

来源:https://www.cnblogs.com/niceyoo/p/14118146.html

标签:Docker,Redis,主从集群
0
投稿

猜你喜欢

  • 详解论坛feed事件在UCHome中未显示的排查方法

    2009-04-04 12:45:00
  • linux下监控网络流量的脚本

    2023-08-06 06:40:26
  • 优化Apache服务器的重负荷

    2007-11-01 14:02:00
  • 链接架构的重要性

    2008-12-04 13:12:00
  • 新手学优化:简单的SEO

    2007-12-23 17:54:00
  • 网络赚钱找准自己的方向

    2009-08-10 18:27:00
  • Ubuntu 16.04无法切换root权限问题的解决

    2023-11-13 21:49:19
  • 亚马逊推Kindle for PC不用阅读器也看电子书

    2009-11-13 14:17:00
  • 站长们的新问题:越来越丰富的客户端环境

    2008-04-08 22:29:00
  • 解决Windows XP SP2打开网页速度慢

    2007-04-26 13:29:00
  • linux find命令将查找到的文件批量删除方法

    2023-08-29 00:53:11
  • 网络推广精英团队是如何建设的?

    2009-11-10 10:13:00
  • 解释一下Link和Domain的区别

    2008-11-19 16:19:00
  • 网站优化基本的五个具体步骤与方法

    2008-12-08 12:20:00
  • 如何以Solaris架设FTP虚拟系统(四)

    2007-10-10 14:19:00
  • phpcms嵌套标签-一个被忽略的很强大的东东

    2009-02-18 19:26:00
  • 管理FTP站点服务器

    2007-03-26 16:00:00
  • 如何设置GoDaddy独立服务器 Godaddy

    2010-05-03 12:47:00
  • 用GridFTP传送文件

    2007-10-29 13:44:00
  • Godaddy全球域名注册量超4000万

    2010-03-18 15:34:00
  • asp之家 网站运营 m.aspxhome.com