编辑
2023-11-14
redis
00
请注意,本文编写于 543 天前,最后修改于 240 天前,其中某些信息可能已经过时。

模版文件

yaml
port 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

生成脚本

yaml
for 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

image.png

成功

查看集群信息 image.png

但是把redis部署到docker并不是一种聪明的做法,而把集群都部署到一台机器也只是玩玩,切勿运用生产环境。

本文作者:yowayimono

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!