系统环境: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










