大概结构图是这样的。r-m3挂时,从机r-s3要顶上!
# 清理容器,方便测试
docker -rm -f $(docker ps -aq)
# 创建一个redis使用的自定义网络
docker network create redis-net --subnet 172.38.0.0/16
# 通过脚本创建6个redis配置
for port in $(seq 1 6);\
do \
# 创建配置文件目录
mkdir -p /mydata/redis/node-${port}/conf
# 创建配置文件
touch /mydata/redis/node-${port]/conf/redis.conf
cat << EOF >/mydata/redis/node-s{port}/conf / redis.conf
# 配置文件具体内容
port 6379
bind 0.0.0.0
# 开启集群
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 172.38.0.1${port}
cluster-announce-port 6379
cluster-announce-bus-port 16379
appendonly yes
EOF
done
# 开启redis容器服务
docker run -p 637${port}:6379 -p 1637${port}:16379 --name redis-${port} \
-v /mydata/redis/node-${port]/data:/data \
-v /mydata/redis/node-${port}/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.1${port} redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf; \
# 开启redis容器1服务 示例
docker run -p 6372:6379 -p 16372:16379 --name redis-1 \
-v /mydata/redis/node-2/data:/data \
-v /mydata/redis/node-2/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.11 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf; \
# 一共开启六个
...
# 进入redis1
docker exec -it redis-1 /bin/sh
# 创建集群
redis-cli --cluster create 172.38.0.11:6379 172.38.0.12:6379 172.38.0.13:6379 172.38.0.14:6379 172.38.0.15:6379 172.38.0.16:6379 --cluster-replicas 1