swarm部署redis-cluster

 

version: "3.7"
services:
  redis7001:
    image: redis:5.0.5
    container_name: redis7001
    #设置主机名
    hostname: redis7001
    restart: always
    #privileged: true
    #挂载目录,相当于 docker run -v 主机目录:容器目录
    volumes:
      - /home/data/redis/7001/data:/data
      - /home/data/redis/7001/conf:/conf
    #启动容器执行命令,相当于docker run [镜像:tag]  [命令], 登录redis: redis-cli -h 192.168.0.80 -p 6379 -a Dszn@2020
    command: redis-server --appendonly yes --cluster-enabled yes --cluster-config-file /conf/nodes.conf --cluster-announce-ip 172.20.69.232 --cluster-announce-port 7001 --cluster-announce-bus-port 17001
    ports:
      - "7001:6379"
      - "17001:16379"
    #指定环境变量,相当于docker run -e 参数, 登录mysql: mysql -h192.168.3.80 -P3306 -uroot -pDs20Pwd@
    environment:
      - TZ=Asia/Shanghai
    networks:
      - dms
    deploy:
      placement:
        constraints:
          - node.hostname == master
          - node.role == manager
  redis7002:
    image: redis:5.0.5
    container_name: redis7002
    #设置主机名
    hostname: redis7002
    restart: always
    #privileged: true
    #挂载目录,相当于 docker run -v 主机目录:容器目录
    volumes:
      - /home/data/redis/7002/data:/data
      - /home/data/redis/7002/conf:/conf
    #启动容器执行命令,相当于docker run [镜像:tag]  [命令], 登录redis: redis-cli -h 192.168.0.80 -p 6379 -a Dszn@2020
    command: redis-server --appendonly yes --cluster-enabled yes --cluster-config-file /conf/nodes.conf --cluster-announce-ip 172.20.69.232 --cluster-announce-port 7002 --cluster-announce-bus-port 17002
    ports:
      - "7002:6379"
      - "17002:16379"
    #指定环境变量,相当于docker run -e 参数, 登录mysql: mysql -h192.168.3.80 -P3306 -uroot -pDs20Pwd@
    environment:
      - TZ=Asia/Shanghai
    networks:
      - dms
    deploy:
      placement:
        constraints:
          - node.hostname == master
          - node.role == manager

  redis7003:
    image: redis:5.0.5
    container_name: redis7003
    #设置主机名
    hostname: redis7003
    restart: always
    volumes:
      - /home/data/redis/7003/data:/data
      - /home/data/redis/7003/conf:/conf
    command: redis-server --appendonly yes --cluster-enabled yes --cluster-config-file /conf/nodes.conf --cluster-announce-ip 172.20.69.233 --cluster-announce-port 7003 --cluster-announce-bus-port 17003
    ports:
      - "7003:6379"
      - "17003:16379"
    environment:
      - TZ=Asia/Shanghai
    networks:
      - dms
    deploy:
      placement:
        constraints:
          - node.hostname == node1
  redis7004:
    image: redis:5.0.5
    container_name: redis7004
    #设置主机名
    hostname: redis7004
    restart: always
    volumes:
      - /home/data/redis/7004/data:/data
      - /home/data/redis/7004/conf:/conf
    command: redis-server --appendonly yes --cluster-enabled yes --cluster-config-file /conf/nodes.conf --cluster-announce-ip 172.20.69.233 --cluster-announce-port 7004 --cluster-announce-bus-port 17004
    ports:
      - "7004:6379"
      - "17004:16379"
    environment:
      - TZ=Asia/Shanghai
    networks:
      - dms
    deploy:
      placement:
        constraints:
          - node.hostname == node1

  redis7005:
    image: redis:5.0.5
    container_name: redis7005
    #设置主机名
    hostname: redis7005
    restart: always
    volumes:
      - /home/data/redis/7005/data:/data
      - /home/data/redis/7005/conf:/conf
    command: redis-server --appendonly yes --cluster-enabled yes --cluster-config-file /conf/nodes.conf --cluster-announce-ip 172.20.69.234 --cluster-announce-port 7005 --cluster-announce-bus-port 17005
    ports:
      - "7005:6379"
      - "17005:16379"
    environment:
      - TZ=Asia/Shanghai
    networks:
      - dms
    deploy:
      placement:
        constraints:
          - node.hostname == node2

  redis7006:
    image: redis:5.0.5
    container_name: redis7006
    #设置主机名
    hostname: redis7006
    restart: always
    volumes:
      - /home/data/redis/7006/data:/data
      - /home/data/redis/7006/conf:/conf
    command: redis-server --appendonly yes --cluster-enabled yes --cluster-config-file /conf/nodes.conf --cluster-announce-ip 172.20.69.234 --cluster-announce-port 7006 --cluster-announce-bus-port 17006
    ports:
      - "7006:6379"
      - "17006:16379"
    environment:
      - TZ=Asia/Shanghai
    networks:
      - dms
    deploy:
      placement:
        constraints:
          - node.hostname == node2   #指定部署节点,不指定会随机

networks:
  #定义服务网桥名称
  dms:
    #指定网桥驱动,有bridge/overlay,默认是bridge
    driver: overlay
    #false-统自动创建网桥名,格式为: 目录名_网桥名,默认为false; true-使用外部创建的网桥,需要自己手动创建
    external: true

#挂载目录,声明服务使用的创建卷名
volumes:
  mysqldata:
    #false-系统自动创建的卷名,格式为: 目录名_卷名,默认为false; true-使用外部创建的卷面,需要自己手动创建
    external: false
 
 
docker stack deploy -c redis-compose.yml redis
 
生成redis实例
进入管理节点pod中

redis-cli -h 172.20.69.232 -p 7001 --cluster create 172.20.69.232:7001 172.20.69.232:7002 172.20.69.233:7003 172.20.69.233:7004 172.20.69.234:7005 172.20.69.232:7006 --cluster-replicas 1 --cluster-yes

生成集群即可

redis-cli -h 172.20.69.232 -p 7001 config set requirepass sco2018cass   #密码可以根据自己改

redis-cli -h 172.20.69.232 -p 7002 config set requirepass sco2018cass

redis-cli -h 172.20.69.232 -p 7003 config set requirepass sco2018cass

redis-cli -h 172.20.69.232 -p 7004 config set requirepass sco2018cass

redis-cli -h 172.20.69.232 -p 7005 config set requirepass sco2018cass

 redis-cli -h 172.20.69.232 -p 7006 config set requirepass sco2018cass

 redis-cli -h 172.20.69.232 -p 7001 -a sco2018cass cluster info 查询集群信息

 
 
注意如果需要,redis集群有密码要求,需要改动一个地方
 
command: redis-server --appendonly yes --cluster-enabled yes --cluster-config-file /conf/nodes.conf --cluster-announce-ip 172.20.69.232 --cluster-announce-port 7001 --cluster-announce-bus-port 17001 --requirepass sco2018cass --masterauth sco2018cass
redis-server的启动命令加上参数就好了,不然会报错从库数据同步失败
 
 
posted @ 2022-06-09 09:07  不敲代码  阅读(117)  评论(0)    收藏  举报