Docker快速构建Redis集群(cluster)

以所有redis实例运行在同一台宿主机上为例子

搭建步骤

redis集群目录清单

.
├── Dockerfile
├── make_master_slave.sh
├── run_master_slave.sh
├── compose_master_slave.sh
├── redis-trib.rb
├── master
│   ├── 7000
│   │   ├── data
│   │   │   ├── appendonly.aof
│   │   │   ├── dump.rdb
│   │   │   └── nodes.conf
│   │   └── redis.conf
│   ├── 7001
│   │   ├── data
│   │   │   ├── appendonly.aof
│   │   │   ├── dump.rdb
│   │   │   └── nodes.conf
│   │   └── redis.conf
│   └── 7002
│   ├── data
│   │   ├── appendonly.aof
│   │   ├── dump.rdb
│   │   └── nodes.conf
│   └── redis.conf
├── redis-cluster.tmpl
└── slave
├── 7003
│   ├── data
│   │   ├── appendonly.aof
│   │   ├── dump.rdb
│   │   └── nodes.conf
│   └── redis.conf
├── 7004
│   ├── data
│   │   ├── appendonly.aof
│   │   ├── dump.rdb
│   │   └── nodes.conf
│   └── redis.conf
└── 7005
├── data
│   ├── appendonly.aof
│   ├── dump.rdb
│   └── nodes.conf
└── redis.conf

1.redis.conf

找到一份原始的redis.conf文件,将其重命名为:redis-cluster.tmpl

redis-cluster.tmpl

# bind 127.0.0.1
protected-mode no
port ${PORT}
daemonize no
dir /data/redis
appendonly yes
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 15000

2.构建redis-trib镜像

redis-trib.rbredis官方推出的管理redis集群的工具,集成在redis的源码src目录下,因为搭建redis-cluster的时候需要用到redis-trib工具。

构建redis-trib镜像

Dockerfile

FROM ruby:2.5.5-slim
MAINTAINER xinchen<xcmelody@gmail.com>
RUN gem install redis
RUN mkdir /redis
WORKDIR /redis
# redis-trib.rb 可在https://github.com/antirez/redis中找到
# 此处已经 wget https://raw.githubusercontent.com/antirez/redis/4.0/src/redis-trib.rb
ADD ./redis-trib.rb /redis/redis-trib.rb

构建镜像

docker build -t redis-trib .

3.创建docker内部网络

# docker network ls 可查看
docker network create redis-cluster-net

4.创建 master 和 slave 文件夹并生成配置文件

make_master_slave.sh

# 创建 master 和 slave 文件夹
for port in `seq 7000 7005`; do
ms="master"
if [ $port -ge 7003 ]; then
ms="slave"
fi
mkdir -p ./$ms/$port/ && mkdir -p ./$ms/$port/data \
&& PORT=$port envsubst < ./redis-cluster.tmpl > ./$ms/$port/redis.conf;
done

5.运行docker redis 的 master 和 slave 实例

run_master_slave.sh

# 运行docker redis 的 master 和 slave 实例
for port in `seq 7000 7005`; do
ms="master"
if [ $port -ge 7003 ]; then
ms="slave"
fi
docker run -d -p $port:$port -p 1$port:1$port \
-v $PWD/$ms/$port/redis.conf:/data/redis.conf \
-v $PWD/$ms/$port/data:/data/redis \
--restart always --name redis-$ms-$port --net redis-cluster-net \
redis redis-server /data/redis.conf;
done

6.组装masters : slaves 节点参数

组装masters : slaves 节点参数

# 组装masters : slaves 节点参数
matches=""
for port in `seq 7000 7005`; do
ms="master"
if [ $port -ge 7003 ]; then
ms="slave"
fi
matches=$matches$(docker inspect --format '{{(index .NetworkSettings.Networks "redis-cluster-net").IPAddress}}' "redis-$ms-${port}"):${port}" ";
done echo $matches
# 172.20.0.2:7000 172.20.0.3:7001 172.20.0.4:7002 172.20.0.5:7003 172.20.0.6:7004 172.20.0.7:7005 # 创建docker-cluster,这里就用到了上面的redis-trib镜像
docker run -it --rm --net redis-cluster-net redis-trib ruby redis-trib.rb create --replicas 1 $matches # 最后需要在接下来的console中输入“yes”,即可完成docker-cluster的搭建

参考

docker redis 集群(cluster)搭建

redis官网

redis中文文档

Docker快速构建Redis集群(cluster)的更多相关文章

  1. 使用Docker构建redis集群--最靠谱的版本

    1集群结构说明 集群中有三个主节点,三个从节点,一共六个结点.因此要构建六个redis的docker容器.在宿主机中将这六个独立的redis结点关联成一个redis集群.需要用到官方提供的ruby脚本 ...

  2. redis单点、redis主从、redis哨兵sentinel,redis集群cluster配置搭建与使用

    目录 redis单点.redis主从.redis哨兵 sentinel,redis集群cluster配置搭建与使用 1 .redis 安装及配置 1.1 redis 单点 1.1.2 在命令窗口操作r ...

  3. redis集群cluster简单设置

    环境: 这里参考官方使用一台服务器:Centos 7  redis-5.0.4    192.168.10.10 redis集群cluster最少要3个主节点,所以本次需要创建6个实例:3个主节点,3 ...

  4. centos7 快速搭建redis集群环境

    本文主要是记录一下快速搭建redis集群环境的方式. 环境简介:centos 7  + redis-3.2.4 本次用两个服务6个节点来搭建:192.168.116.120  和  192.168.1 ...

  5. Docker镜像配置redis集群

    redis版本:3.2.3 架构: 3节点redis集群,并为每个节点设置一个备用节点,共6个节点 1.安装redis镜像 docker load < docker.redis.tar.gz 2 ...

  6. docker 快速部署ES集群 spark集群

    1) 拉下来 ES集群  spark集群 两套快速部署环境, 并只用docker跑起来,并保存到私库. 2)弄清楚怎么样打包 linux镜像(或者说制作). 3)试着改一下,让它们跑在集群里面. 4) ...

  7. docker之构建redis-cluster集群

    下载和编译redis安装包 参考:https://www.cnblogs.com/cwp-bg/p/8094914.html # 从官方网站下载安装包,注意,当前在哪个目录下执行命令,下载的包将在哪个 ...

  8. 从零开始学习docker之在docker中搭建redis(集群)

    docker搭建redis集群 docker-compose是以多容器的方式启动,非常适合用来启动集群 一.环境准备 云环境:CentOS 7.6 64位 二.安装docker-compose #需要 ...

  9. redis集群cluster模式搭建

    实验服务器 :192.168.44.139    192.168.44.138  192.168.44.144 在 192.168.44.139上操作: 将redis的包上传的新建的目录newtouc ...

随机推荐

  1. Linux-正则表达式与三剑客

    1 固化命令文件 登录时执行文件的顺序 /etc/profile /etc/profile.d ~/.bash_profile ~/.bashrc /etc/bashrc 非登录shell ~/.ba ...

  2. 关于yolov3 训练输出值

    Region xx: cfg文件中yolo-layer的索引: Avg IOU:当前迭代中,预测的box与标注的box的平均交并比,越大越好,期望数值为1: Class: 标注物体的分类准确率,越大越 ...

  3. 深入理解java虚拟机---->java内存区域与内存溢出异常

    2. java内存区域于内存溢出异常 2.1 概述: 对于C/C++而言,内存管理具有最高的权利,既拥有每一个对象的“所有权”,又担负着每一个对象生命开始到结束的维护责任. 对于java而言,则把内存 ...

  4. Winform安装包出现无法访问网络位置

    1.原因:安装包的安装路径出现了问题 2.如下图:错误路径 3.如下图:正确路径

  5. js遍历checkbox获取数据

    function GetCurrenetPoint() { debugger var currentTypes = ""; var display = $("#input ...

  6. 【220】◀▶ IDL 数组操作函数说明

    参考:Array Creation Routines —— 创建数组函数参考:Array Manipulation Routines —— 操作数组函数 01   MAX 最大值. 02   MIN ...

  7. 使用Bootstrap模态框实现增删改查功能

    模态框(Modal)是覆盖在父窗体上的子窗体.通常,目的是显示来自一个单独的源的内容,可以在不离开父窗体的情况下有一些互动.子窗体可提供信息.交互等. 本文实现的是使用模态框实现简单的增删改查的功能. ...

  8. 第一篇:构建第一个SpringBoot工程

    简介 spring boot 它的设计目的就是为例简化开发,开启了各种自动装配,你不想写各种配置文件,引入相关的依赖就能迅速搭建起一个web工程.它采用的是建立生产就绪的应用程序观点,优先于配置的惯例 ...

  9. golang http/transport 代码分析

    请结合源码阅读,本文只是总结一下,源码里有详细的注释.基于:go1.12.4 http.Client 表示一个http client端,用来处理HTTP相关的工作,例如cookies, redirec ...

  10. C#获得当前执行的函数名、当前代码行、源代码文件名

    http://blog.csdn.net/newegg2009/article/details/6220385 C#获得当前执行的函数名.当前代码行.源代码文件名 [日期:2010-10-18 11: ...