docker redis5.0 cluster集群搭建的实现

2020-06-17 07:31:43易采站长站整理

系统环境:ubuntu16.04LTS

本文是使用 6 个 docker 容器搭建单机集群测试,实际环境如果是多台,可对应修改容器数量、端口号和集群 ip 地址,每台机器都按下面步骤同样操作即可。

拉取redis官方镜像


docker pull redis:5.0

创建配置文件和数据目录

创建目录


mkdir ~/redis_cluster
cd ~/redis_cluster

新建一个模板文件sudo vim redis_cluster.tmpl,填入如下内容:


# redis端口
port ${PORT}

# 关闭保护模式
protected-mode no

# 开启集群
cluster-enabled yes

# 集群节点配置
cluster-config-file nodes.conf

# 超时
cluster-node-timeout 5000

# 集群节点IP host模式为宿主机IP
cluster-announce-ip 10.10.100.197

# 集群节点端口 7000 - 7005
cluster-announce-port ${PORT}
cluster-announce-bus-port 1${PORT}

# 开启 appendonly 备份模式
appendonly yes

# 每秒钟备份
appendfsync everysec

# 对aof文件进行压缩时,是否执行同步操作
no-appendfsync-on-rewrite no

# 当目前aof文件大小超过上一次重写时的aof文件大小的100%时会再次进行重写
auto-aof-rewrite-percentage 100

# 重写前AOF文件的大小最小值 默认 64mb
auto-aof-rewrite-min-size 5120mb

# 关闭快照备份
save ""

批量创建配置文件和数据目录,终端运行以下命令:


for port in `seq 7000 7005`; do
mkdir -p ./${port}/conf
&& PORT=${port} envsubst < ./redis_cluster.tmpl > ./${port}/conf/redis.conf
&& mkdir -p ./${port}/data;
done

批量启动 redis 容器

容器的 ip 地址采用 host 模式:


for port in `seq 7000 7005`; do
docker run -d -it --memory=1G
-v ~/redis_cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf
-v ~/redis_cluster/${port}/data:/data
--restart always --name redis-${port} --net host
--sysctl net.core.somaxconn=1024 redis:5.0 redis-server /usr/local/etc/redis/redis.conf;
done

这里的–memeory=1G是限制单个 docker 容器占用内存大小为 1G,超过会被进程杀死。运行时可能会出现…Memory limited without swap…这个警告,可以忽略。如不需要限制内存,可以去掉–memeory参数。

创建集群

随便进入其中一个容器:


docker exec -it redis-7000 bash

进入后执行如下命令创建集群:


redis-cli --cluster create 10.10.100.197:7000 10.10.100.197:7001 10.10.100.197:7002 10.10.100.197:7003 10.10.100.197:7004 10.10.100.197:7005 --cluster-replicas 1