模版文件
yamlport 6379
bind 0.0.0.0
protected-mode no
daemonize no
appendonly yes
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 15000
cluster-announce-ip 172.19.0.1${NO}
cluster-announce-port 6379
cluster-announce-bus-port 16379
生成脚本
yamlfor no in `seq 1 6`; do \
mkdir -p redis-${no}/conf \
&& NO=${no} envsubst < redis-cluster.tmpl > redis-${no}/conf/redis.conf \
&& mkdir -p redis-${no}/data;\
done
docker-compose.yaml文件
yaml# 描述 Compose 文件的版本信息
version: "3.8"
# 定义服务,可以多个
services:
redis-cluster:
image: redis:latest
networks:
redis:
ipv4_address: 172.19.0.2
command: redis-cli --cluster create 172.19.0.11:6379 172.19.0.12:6379 172.19.0.13:6379 172.19.0.14:6379 172.19.0.15:6379 172.19.0.16:6379 --cluster-replicas 1 --cluster-yes
depends_on:
- redis-1
- redis-2
- redis-3
- redis-4
- redis-5
- redis-6
redis-1: # 服务名称
image: redis:latest # 创建容器时所需的镜像
container_name: redis-1 # 容器名称
restart: "no" # 容器总是重新启动
networks:
redis:
ipv4_address: 172.19.0.11
ports:
- "6379:6379"
- "16379:16379"
volumes: # 数据卷,目录挂载
- ./etc_rc.local:/etc/rc.local
- ./redis-1/conf/redis.conf:/etc/redis/redis.conf
- ./redis-1/data:/data
command: redis-server /etc/redis/redis.conf # 覆盖容器启动后默认执行的命令
redis-2:
image: redis:latest
container_name: redis-2
networks:
redis:
ipv4_address: 172.19.0.12
ports:
- "6380:6379"
- "16380:16379"
volumes:
- ./etc_rc.local:/etc/rc.local
- ./redis-2/conf/redis.conf:/etc/redis/redis.conf
- ./redis-2/data:/data
command: redis-server /etc/redis/redis.conf
redis-3:
image: redis:latest
container_name: redis-3
networks:
redis:
ipv4_address: 172.19.0.13
ports:
- "6381:6379"
- "16381:16379"
volumes:
- ./etc_rc.local:/etc/rc.local
- ./redis-3/conf/redis.conf:/etc/redis/redis.conf
- ./redis-3/data:/data
command: redis-server /etc/redis/redis.conf
redis-4:
image: redis:latest
container_name: redis-4
networks:
redis:
ipv4_address: 172.19.0.14
ports:
- "6382:6379"
- "16382:16379"
volumes:
- ./etc_rc.local:/etc/rc.local
- ./redis-4/conf/redis.conf:/etc/redis/redis.conf
- ./redis-4/data:/data
command: redis-server /etc/redis/redis.conf
redis-5:
image: redis:latest
container_name: redis-5
networks:
redis:
ipv4_address: 172.19.0.15
ports:
- "6383:6379"
- "16383:16379"
volumes:
- ./etc_rc.local:/etc/rc.local
- ./redis-5/conf/redis.conf:/etc/redis/redis.conf
- ./redis-5/data:/data
command: redis-server /etc/redis/redis.conf
redis-6:
image: redis:latest
container_name: redis-6
networks:
redis:
ipv4_address: 172.19.0.16
ports:
- "6384:6379"
- "16384:16379"
volumes:
- ./etc_rc.local:/etc/rc.local
- ./redis-6/conf/redis.conf:/etc/redis/redis.conf
- ./redis-6/data:/data
command: redis-server /etc/redis/redis.conf
# 自动创建网络,并手动指定IP网段
networks:
redis:
ipam:
config:
- subnet: 172.19.0.0/16
成功
查看集群信息
但是把redis部署到docker并不是一种聪明的做法,而把集群都部署到一台机器也只是玩玩,切勿运用生产环境。
本文作者:yowayimono
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!