基于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
执行命令截图:
3、启动 Redis 容器
执行命令如下:
docker start redis-node1 redis-node2 redis-node3 redis-node4 redis-node5 redis-node6
启动截图如下:
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
执行命令截图如下:
创建成功后,通过 redis-cli 查看一下集群节点信息:
root@CentOS7:/data# redis-cli
127.0.0.1:6379> cluster nodes
执行命令截图如下:
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 会怎么样?
报错信息如下:
提示已经很清楚了,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个主节点了:
剩下的两个从节点怎么办呢?手动添加。
怎么添加?手动添加!
看到这些 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 实例塞给其他主节点了:
最后我们进入 redis-cli,通过 cluster nodes 查看一下节点信息:
来源:https://www.cnblogs.com/niceyoo/p/14118146.html


猜你喜欢
- 在搜索引擎的“远古”时代,搜索结果的排列只是以搜索引擎在数据库中找到匹配网页的先后次序排列,但人们很快意识到这种搜索根本是无效的。实际上用户
- 有时候我们在获得WebShell后很高兴地用Serv-U的本地权限提升漏洞来实现完全控制肉鸡的目的,但总会出错。我们在WebShell输入的
- ZooKeeper 就是动物园管理员的意思,它是用来管理 Hadoop(大象)、Hive(蜜蜂)、pig(小猪)的管理员,Apache Hb
- XAMPP就是: Windows/Solaris/Linux/MacOS + Apache + MySQL + Perl1.到XAMPP官网
- 如要在不同树林里访问资源,系统管理员须手动配置信任关系。Windows 2000具有在不同树林的域之间配置单向非传递性信任的功能。你必须在不
- Volume数据卷是Docker的一个重要概念。数据卷是可供一个或多个容器使用的特殊目录,可以为容器应用存储提供有价值的特性:持久化数据与容
- 随着全国整治互联网低俗之风第6批曝光网站的公布,整治互联网低俗之风专项行动的力度还在持续加大,继春节期间关闭的55家违法违规网站,此专项行动
- 参考文档官方Docker安装文档:https://docs.docker.com/install/linux/docker-ce/cento
- IIS服务器出错的原因是复杂的。如服务启动失败、IIS进程中断或者站点不能启动这些错误都会在系统日志中记录一个错误事件。不论IIS出现何种错
- 1.获取当前脚本的真实路径:#!/bin/bashif [[ $0 =~ ^\/.* ]] #判断当前脚本是否为绝
- 10月27日消息,阿里巴巴CEO马云在《纽约时报》发表署名文章,就如何支持小企业等问题进行了阐述,以下是全文:全球经济衰退的来袭令许多国际企
- 一、情景公司刚上几台Linux,现在要把主机之间都能远程ssh免密码登陆。二、原理很简单,使用ssh-keygen 在主机A上生成priva
- 亲们好久不见啦,国庆期间大家是不是过了一个愉快的长假呢?呵呵,还是回到正题吧,YUMMY今天为大家带来的是美图秀秀第五期图片教程--拼图场景
- 一、问题描述虚拟机克隆后,由于网卡信息不一致的问题,导致不能上网或者执行“sercice network restart”命令失败[root
- 紧跟Google总部的脚步,随着英文版的发布,谷歌中国于2008年12月24日也在其谷歌中文网站管理员博客发布了中文版的《谷歌搜索引擎优化初
- 一个正确的robots.txt文件,能让搜索引擎不抓取网站的某个不想让蜘蛛抓取的文件,也可以避免大量的复制网页对网站搜索引擎权重的影响。Ro
- 如何在WordPress程序中集成支付宝是实现WordPress电子商务化必须要突破的一个瓶颈。WordPress有很多的电子商务类插件,像
- 1. 大数据和Hadoop研究学习大数据,自然要从Hadoop开始。 Hadoop不是一个简单的软件,而是有一些列软件形成的生态,其核心思想
- 据说,世界上每年由于垃圾电子邮件给人们带来的损失就高达数亿美元。在Windows操作系统中也许您已经尝够了垃圾邮件给您带来的苦头,让您防不胜
- 昨日,淘宝网宣布,发送总价值达10亿元的消费券,实现线上线下协同扩张。此次淘宝与150家淘宝网热卖网店联手,发放的消费券包括5-8折不等的优