网站运营
位置:首页>> 网站运营>> 基于Docker搭建Redis主从集群的实现

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

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

标签:Docker,Redis,主从集群

最近陆陆续续有不少园友加我好友咨询 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

0
投稿

猜你喜欢

  • 在使用GoDaddy-windows主机的的用户经常会出现500错误,自己也不清楚到底哪里出错了。下面我就介绍用创建web.config文件
  • 历史Linux镜像创建的ECS云服务器,可能存在NTP没有配置,YUM没有配置,还可能存在最近暴漏较高的安全漏洞,请按照以下步骤进行修复,可
  • Tomcat本身不能直接在计算机上运行,需要依赖于操作系统和一个JAVA虚拟机。JAVA程序启动时JVM会分配一个初始内存和最大内存给程序。
  • 10月16日消息,近日,百度搜索开放平台邮箱登录框嵌入搜索结果页功能正式开通,再次提升了百度的搜索引擎功能,丰富了用户的使用体验。同时,该服
  • 最新消息,康盛创想(Comsenz)核心社区产品Discuz!NT 3.0版本官方已经测试上线。作为一款引领社区论坛开放潮流的ASP.net
  • 网络投票做弊方法很多,大致分为三种:肉搏、自动刷票和漏洞攻击。而网站为防止投票做弊,目前也有以下三种限制:IP投票数限制、注册用户投票许可限
  • WordPress是世界上使用最为广泛PHP博客程序,他拥有近乎无尽的主题和插件,简单易用。他既可以通过各种各样的插件他自己武装成一个CMS
  • WebP(发音:weppy)是一种同时提供了有损压缩与无损压缩(可逆压缩)的图片文件格式,派生自影像编码格式VP8,被认为是WebM多媒体格
  • 小站的独立IP超过50/天的时候,我就将Google AdSense放在了网站比较醒目的地方,按照我的构想,在IP达到日均200之前,不主动
  • 很多人都使用BSP(博客托管服务)来托管自己的博客,在选择中国服务商的时候,需要考虑很多因素,其中第一重要的就应该是网站稳定性,毕竟,如果人
  • 前言Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一。 Boost库由C++标准委员会库工
  • RedHat Linux 为增加系统安全性提供了防火墙保护。防火墙存在于你的计算机和网络之间,用来判定网络中的远程用户有权访问你的计算机上的
  • 百度与Google两大搜索向来都是不同的,Google的搜索结果更客观点,而百度则更适合大众化用户,作为站长有必要了解他们的某些“特殊爱好”
  • 1、创建 /usr/local/services/zookeeper 文件夹:  mkdir -p /usr/local/serv
  • 关于服务器安全,新手最常遇到的一个问题就是:该选择哪种防火墙?面对种类如此繁多的服务器防火墙,在选择的时候,是考虑厂商的知名度还是防火墙本身
  • 很多朋友都碰到过这样的现象:打开一个网站,结果页面还没显示,杀毒软件就开始报警,提示检测到木马病毒。有经验的朋友会知道这是网页恶意代码,但是
  • 通常地,大多数Web站点的设计目标都是:以最易接受的方式,为访问者提供即时的信息访问。在过去的几年中,越来越多的黑客、病毒和蠕虫带来的安全问
  • 英文网站建设与中文网站建设的区别不仅仅是使用中文与使用英文的差别。使用时有时出现乱码,这给企业带来很大的损失。由于中文字形复杂,并且电脑上的
  • 虚拟基础架构时常遭遇简单解决方案效率低下的困扰。虚拟机执行匮乏的现状阻碍了虚拟化技术的普及。以下的十大虚拟机优化小窍门能帮助用户轻松解决每个
  • 1. 通过宽带路由器上网的用户如果电脑通过宽带路由器并使用DHCP方式获取DNS和IP地址的情况时:1) 如果宽带路由器是通过PPPOE拨号
手机版 网站运营 asp之家 www.aspxhome.com