基于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

执行命令截图:

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 查看一下节点信息:

看到这,你学废了吗?再学不废,下期我可要录视频了。。。

基于Docker搭建Redis集群(主从集群)的更多相关文章

  1. 【docker构建】基于docker搭建redis数据库缓存服务

    搭建redis服务 首先拉取镜像==>运行镜像为容器 # 先搜索下redis镜像 [root@VM_0_10_centos wordpress]# docker search redis # 拉 ...

  2. 基于docker 搭建Elasticsearch5.6.4 分布式集群

    说明: 准备2台机器,我这里有192. 和 192.168.0.164 192.168.0.164 作为master 192.168.0.107 作为普通node 一.环境 .docker 环境 .E ...

  3. 基于Docker的redis集群搭建

    Redis集群官方介绍:http://www.redis.cn/topics/cluster-tutorial.html 基于Docker搭建Redis集群 环境:6个节点,三主三从 制作Redis镜 ...

  4. 基于Dokcer搭建Redis集群搭建(主从集群)

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

  5. Docker 搭建 Redis Cluster 集群环境

    使用 Docker 搭建 Redis Cluster,最重要的环节就是容器通信的问题,这一块我们在之前的文章中已经给大家解决了<Docker 网络模式详解及容器间网络通信>,本篇文章主要练 ...

  6. 基于 Docker 搭建 Consul 多数据中心集群

    本文介绍了在 Windows 10 上基于 Docker 搭建 Consul 多数据中心集群的步骤,包括 Consul 镜像的拉取和容器的创建,每个数据中心对应服务端节点和客户节点的创建,节点之间相互 ...

  7. 庐山真面目之十二微服务架构基于Docker搭建Consul集群、Ocelot网关集群和IdentityServer版本实现

    庐山真面目之十二微服务架构基于Docker搭建Consul集群.Ocelot网关集群和IdentityServer版本实现 一.简介      在第七篇文章<庐山真面目之七微服务架构Consul ...

  8. (转)基于keepalived搭建MySQL的高可用集群

    基于keepalived搭建MySQL的高可用集群  原文:http://www.cnblogs.com/ivictor/p/5522383.html MySQL的高可用方案一般有如下几种: keep ...

  9. Linux基于Docker的Redis主从复制、哨兵模式搭建

    本教程基于CentOS7,开始本教程前,请确保您的Linux系统已安装Docker. 1.使用docker下载redis镜像 docker pull redis 安装完成后,使用docker imag ...

  10. 基于Docker搭建大数据集群(六)Hive搭建

    基于Docker搭建大数据集群(六)Hive搭建 前言 之前搭建的都是1.x版本,这次搭建的是hive3.1.2版本的..还是有一点细节不一样的 Hive现在解析引擎可以选择spark,我是用spar ...

随机推荐

  1. 从零搭建hadoop集群之节点间免密登录

    我这里有三台虚拟机 分别是 hadoop01 hadoop02 hadoop03 1.所有节点切入到hadoop用户 2.分别再三个节点上输入 ssh-keygen 命令(输入命令后敲回车键三下)  ...

  2. Oracle虚拟机与主机共享设置

    VM中linux与主机的文件共享 1.打开 Oracle VM VirtualBox   点击 [控制] [设置] [数据空间] 添加你所希望共享的文件夹

  3. linux:day01 计算机基础 随堂笔记 马

    本课程内容目录(前30天) 一,计算机基础 1,机械硬盘是比较慢的,如果有条件的话,还是换成固态硬盘有个120G就够了,价钱大概500G 700元 2,视频从一台机器拷贝到另外一台机器,复制的时候要限 ...

  4. ssh远程连接服务器

    远程连接服务器及压缩文件与解压 1 终端连接 ssh -p 端口号 用户名@地址 例如:ssh -p 80 name@host 每次远程连接,使用账号和密码登录,有可能使得端口被监听到,从而导致挖矿情 ...

  5. sqlsugar 更新某列数据 UpdateColumns 与SetColumns 使用区别

    第一种方式 UpdateColumns public int updateLogPath(int TeamID, string logoPath) { Team t = new Team(); t.T ...

  6. PPT导出高分辨率tif图片——用于学术论文

    PPT导出的图片默认分辨率只有96dpi,但要到印刷品要求的图片分辨率最好是300dpi,学术论文也需要高清晰度的图片.要让PPT导出的图片分辨率达到300dpi,其实可以不用PS,直接修改系统注册表 ...

  7. vue store用法

    import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) 首字母不能大写 export default new Vuex.Store({ ...

  8. re的finditer()

    在前面学习了findall()函数,它可以一次性找到多个匹配的字符串,但是不能提供所在的位置,并且是一起返回的,如果有数万个一起返回来,就不太好处理了,因此要使用finditer()函数来实现每次只返 ...

  9. openstack 私有云

    Openstack 私有云 官网:www.openstack.com 关于它的历史,网上都可以搜索到,这里不做细讲. 本章主要对openstack的基础部署做详细了解 说到openstack,就要知道 ...

  10. k8s master节点高可用 nginx+keepalived配置文件

    nginx配置 user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid; i ...