前提条件
linux 环境,docker 安装正常,下载 docker 镜像:redis,ruby

准备工作:
1、创建文件夹,方便统一管理
mkdir /opt/redis & cd /opt/redis
·
2、下载配置文件
wget http://download.redis.io/redis-stable/src/redis-trib.rb

3、创建 redis 配置文件: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

4、新建一个 Dockerfile,内容如下
FROM ruby:2.5-slim
MAINTAINER dongsilindslzc@foxmail.com
RUN gem install redis
RUN mkdir /redis
WORKDIR /redis
ADD ./redis-trib.rb /redis/redis-trib.rb

5、创建镜像,执行以下指令
docker build -t redis-trib .

搭建 redis 集群
1、创建 docker 网桥,用于 redis 集群之间的链接
docker network create redis-cluster-net

2、创建 redis 的 master 和 slave 文件,并生成相应配置文件,用于存放 redis.conf 配置信息和 redis 挂载数据

创建 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

3、运行 docker 的 master 和 slave

运行 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

4、组装 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
5、创建 docker-cluster
注意:此处的 127.0.0.1 指代当前服务器的 ip 地址,切记要替换
edis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 --cluster-replicas 1

执行过程中会提示是否确定,输入 yes 即可

以上,创建 redis 集群完成。

查看下配置到 redis 管理平台后的效果


↙↙↙阅读原文可查看相关链接,并与作者交流