Docker快速构建Redis集群(cluster)
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.rb是redis官方推出的管理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)的更多相关文章
- 使用Docker构建redis集群--最靠谱的版本
1集群结构说明 集群中有三个主节点,三个从节点,一共六个结点.因此要构建六个redis的docker容器.在宿主机中将这六个独立的redis结点关联成一个redis集群.需要用到官方提供的ruby脚本 ...
- redis单点、redis主从、redis哨兵sentinel,redis集群cluster配置搭建与使用
目录 redis单点.redis主从.redis哨兵 sentinel,redis集群cluster配置搭建与使用 1 .redis 安装及配置 1.1 redis 单点 1.1.2 在命令窗口操作r ...
- redis集群cluster简单设置
环境: 这里参考官方使用一台服务器:Centos 7 redis-5.0.4 192.168.10.10 redis集群cluster最少要3个主节点,所以本次需要创建6个实例:3个主节点,3 ...
- centos7 快速搭建redis集群环境
本文主要是记录一下快速搭建redis集群环境的方式. 环境简介:centos 7 + redis-3.2.4 本次用两个服务6个节点来搭建:192.168.116.120 和 192.168.1 ...
- Docker镜像配置redis集群
redis版本:3.2.3 架构: 3节点redis集群,并为每个节点设置一个备用节点,共6个节点 1.安装redis镜像 docker load < docker.redis.tar.gz 2 ...
- docker 快速部署ES集群 spark集群
1) 拉下来 ES集群 spark集群 两套快速部署环境, 并只用docker跑起来,并保存到私库. 2)弄清楚怎么样打包 linux镜像(或者说制作). 3)试着改一下,让它们跑在集群里面. 4) ...
- docker之构建redis-cluster集群
下载和编译redis安装包 参考:https://www.cnblogs.com/cwp-bg/p/8094914.html # 从官方网站下载安装包,注意,当前在哪个目录下执行命令,下载的包将在哪个 ...
- 从零开始学习docker之在docker中搭建redis(集群)
docker搭建redis集群 docker-compose是以多容器的方式启动,非常适合用来启动集群 一.环境准备 云环境:CentOS 7.6 64位 二.安装docker-compose #需要 ...
- redis集群cluster模式搭建
实验服务器 :192.168.44.139 192.168.44.138 192.168.44.144 在 192.168.44.139上操作: 将redis的包上传的新建的目录newtouc ...
随机推荐
- 装饰器 decorator
装饰器 def document_it(func): def new_function(*args, **kwargs): print('Running function:', func.__name ...
- 阻止Eclipse一直building workspace
Eclipse 一直不停 building workspace完美解决总结 一.产生这个问题的原因多种 1.自动升级 2.未正确关闭 3.maven下载lib挂起 等.. 二.解决总结 (1).解决方 ...
- AQS与重入锁ReetrantLock原理
一.AQS原理 AQS(AbstractQueuedSynchronizer)队列同步器是用来构建锁.同步组件的基础框架. AQS内部通过一个volatile int类型的成员变量state控制同步状 ...
- shell函数(调用、返回值,返回值获取)
Shell函数返回值,常用的两种方式:return,echo 1) return 语句shell函数的返回值,可以和其他语言的返回值一样,通过return语句返回.示例1: [devadmin@swa ...
- ubuntu上安装与卸载deb文件(转载)
转自:http://blog.csdn.net/nkguohao/article/details/8951082 版权声明:本文为博主原创文章,未经博主允许不得转载. 通过deb包安装软件: sudo ...
- web调试利器_fiddler
此文已由作者夏君授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 一.fiddler简介 直接引用官网介绍 The free web debugging proxy for a ...
- 项目中常用的js骚操作
//打开网址window.open("http://www.runoob.com"); //判断是否为url var url = $("#url").val() ...
- ObjectARX反应器概述[转载]
何为反应器? AutoCAD中提供了类似MFC消息机制的通知方式.用于处理以下情况: 执行AutoCAD命令.修改系统变量.保存和退出图形编辑器或者切换当前工作布局空间等等. 反应器机制是观察者模式的 ...
- Unity5.0 EventSystem事件系统的详细说明
http://www.manew.com/blog-56596-2917.html?_dsign=53b25d5d unity5.0开发了新的UI系统UGUI,附带的事件系统EventSystem不仅 ...
- Codevs 1312 连续自然数和
1312 连续自然数和 题目描述 Description 对于一个自然数M,求出所有的连续的自然数段,使得这些连续自然数段的全部数字和为M.eg:1998+1999+2000+2001+2002=10 ...