docker-compose测试搭建redis集群

该博客介绍了如何利用Docker Compose创建自定义网络myredis,并配置6个Redis节点来搭建一个Redis集群。首先,创建网络、删除旧容器,然后为每个节点生成配置文件,接着启动Redis容器,并通过redis-cli创建集群。最后,提供了docker-compose.yml文件的详细内容,展示了如何定义每个Redis服务的配置,包括网络、端口映射、数据持久化和环境变量设置。
摘要由CSDN通过智能技术生成

docker-compose测试搭建redis集群

#此处使用了自定义的网络,需要新建一个docker网络myredis并指定网关(192.165.0.1)和子网(192.165.0.0/16)
docker network create --driver=bridge --gateway=192.165.0.1 --subnet=192.165.0.0/16 myredis

#删除此文件夹
rm -rf /mycontainerdata/
#创建6个redis配置
for port in $(seq 1 6); \
do \
mkdir -p /mycontainerdata/redis/node-${port}/conf
touch /mycontainerdata/redis/node-${port}/conf/redis.conf
cat << EOF >/mycontainerdata/redis/node-${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 192.165.0.1${port}
cluster-announce-port 6379
cluster-announce-bus-port 16379
appendonly yes
EOF
done


#移除所有容器
docker rm -f $(docker ps -aq)
#运行redis容器
for port in $(seq 1 6); \
do \
docker run -dit -p 637${port}:6379 -p 1637${port}:16379 --name=redis-${port} \
-v /mycontainerdata/redis/node-${port}/data:/data \
-v /mycontainerdata/redis/node-${port}/conf/redis.conf:/etc/redis/redis.conf \
--net myredis --ip 192.165.0.1${port} redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf; \
done

#排查配置文件是否正确
docker run -it -p 6371:6379 -p 16371:16379 --name=redis-1 \
-v /mycontainerdata/redis/node-1/data:/data \
-v /mycontainerdata/redis/node-1/conf/redis.conf:/etc/redis/redis.conf \
--net myredis --ip 192.165.0.11 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf;

#进入redis-1容器
docker exec -it redis-1 /bin/sh

#创建集群
redis-cli --cluster create 192.165.0.11:6379 192.165.0.12:6379 192.165.0.13:6379 192.165.0.14:6379 192.165.0.15:6379 192.165.0.16:6379 --cluster-replicas 1


#docker-compose.yml

version: "3"
services: 
  redis-1:
    image: redis:5.0.9-alpine3.11
    container_name: redis-1
    networks:
      myredis:
        ipv4_address: 192.165.0.11
    ports:
      - 6371:6379
      - 16371:16379
    volumes:
      - /mycontainerdata/redis/node-1/conf/redis.conf:/etc/redis/redis.conf
      - /mycontainerdata/redis/node-1/data:/data
    command: /bin/sh -c "redis-server /etc/redis/redis.conf"
    environment: 
      - TZ=Asia/Shanghai
  redis-2:
    image: redis:5.0.9-alpine3.11
    container_name: redis-2
    networks:
      myredis:
        ipv4_address: 192.165.0.12
    ports:
      - 6372:6379
      - 16372:16379
    volumes:
      - /mycontainerdata/redis/node-2/conf/redis.conf:/etc/redis/redis.conf
      - /mycontainerdata/redis/node-2/data:/data
    command: /bin/sh -c "redis-server /etc/redis/redis.conf"
    environment: 
      - TZ=Asia/Shanghai
  redis-3:
    image: redis:5.0.9-alpine3.11
    container_name: redis-3
    networks:
      myredis:
        ipv4_address: 192.165.0.13
    ports:
      - 6373:6379
      - 16373:16379
    volumes:
      - /mycontainerdata/redis/node-3/conf/redis.conf:/etc/redis/redis.conf
      - /mycontainerdata/redis/node-3/data:/data
    command: /bin/sh -c "redis-server /etc/redis/redis.conf"
    environment: 
      - TZ=Asia/Shanghai
  redis-4:
    image: redis:5.0.9-alpine3.11
    container_name: redis-4
    networks:
      myredis:
        ipv4_address: 192.165.0.14
    ports:
      - 6374:6379
      - 16374:16379
    volumes:
      - /mycontainerdata/redis/node-4/conf/redis.conf:/etc/redis/redis.conf
      - /mycontainerdata/redis/node-4/data:/data
    command: /bin/sh -c "redis-server /etc/redis/redis.conf"
    environment: 
      - TZ=Asia/Shanghai
  redis-5:
    image: redis:5.0.9-alpine3.11
    container_name: redis-5
    networks:
      myredis:
        ipv4_address: 192.165.0.15
    ports:
      - 6375:6379
      - 16375:16379
    volumes:
      - /mycontainerdata/redis/node-5/conf/redis.conf:/etc/redis/redis.conf
      - /mycontainerdata/redis/node-5/data:/data
    command: /bin/sh -c "redis-server /etc/redis/redis.conf"
    environment: 
      - TZ=Asia/Shanghai
  redis-6:
    image: redis:5.0.9-alpine3.11
    container_name: redis-6
    networks:
      myredis:
        ipv4_address: 192.165.0.16
    ports:
      - 6376:6379
      - 16376:16379
    volumes:
      - /mycontainerdata/redis/node-6/conf/redis.conf:/etc/redis/redis.conf
      - /mycontainerdata/redis/node-6/data:/data
    command: /bin/sh -c "redis-server /etc/redis/redis.conf"
    environment: 
      - TZ=Asia/Shanghai
networks:
    myredis:
      external: 
	    name: myredis

redis-server /etc/redis/redis.conf"
environment:
- TZ=Asia/Shanghai
networks:
myredis:
external:
name: myredis


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值