前提条件
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 内容如下:
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 挂载数据
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
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 节点参数
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 管理平台后的效果