docker-compose 两台虚拟服务器:部署三主三从Redis集群

因为环境限制,所以考虑用两台虚拟机搭建简单的redis分布式集群

一、服务器规划

服务器IP 实例 端口
10.211.55.7 redis_6391(master),redis_6392(slave) 6391,6392
10.211.55.8

redis_6391(master),redis_6392(slave),redis_6393(master),

redis_6394(slave)

6391,6392,6393,6394

二、准备redis集群的docker-compose文件

2.1、10.211.55.7服务器docker-compose文件

docker-compose-rediscluster01.yml

version: "3.7"
services:
  redis-6391:
    image: redis:7.0.10 # 基础镜像
    container_name: redis-6391 # 容器名称
    restart: always
    environment: # 环境变量
      - TZ=Asia/Shanghai
      - LANG=en_US.UTF-8
    ports: # 映射端口,对外提供服务
      - 6391:6391 # redis的服务端口
      - 16391:16391 # redis集群监控端口
    stdin_open: true # 标准输入打开
    tty: true # 后台运行不退出
    network_mode: host # 使用host模式
    privileged: true # 拥有容器内命令执行的权限
    # 映射数据卷,配置目录
    volumes: [   
        "/home/workspaces/redis-cluster/redis-6391/data:/data",
        "/home/workspaces/redis-cluster/redis-6391/conf/redis.conf:/etc/redis/redis.conf",
        "/home/workspaces/redis-cluster/etc/rc.local:/etc/rc.local",
        "/etc/localtime:/etc/localtime" #将Redis服务的时间设置为与宿主机相同(/etc/localtime:/etc/localtime:ro)如果加:ro,表示只读
    ]
    command: [
        "redis-server",
        "/etc/redis/redis.conf"
    ]
    logging:
      options:
        max-size: '100m'
        max-file: '10'
  redis-m6392:
    image: redis:7.0.10 # 基础镜像
    container_name: redis-6392 # 容器名称
    restart: always
    environment: # 环境变量
      - TZ=Asia/Shanghai
      - LANG=en_US.UTF-8
    ports: # 映射端口,对外提供服务
      - 6392:6392 # redis的服务端口
      - 16392:16392 # redis集群监控端口
    stdin_open: true # 标准输入打开
    tty: true # 后台运行不退出
    network_mode: host # 使用host模式
好的,以下是一个简单的redis集群部署三主三从docker-compose编排示例: ```yaml version: '3' services: redis-master-1: image: redis command: redis-server --port 6379 --cluster-enabled yes --cluster-config-file /data/nodes.conf --cluster-node-timeout 5000 --appendonly yes ports: - "6379:6379" volumes: - redis-master-data-1:/data networks: - redis-net redis-master-2: image: redis command: redis-server --port 6380 --cluster-enabled yes --cluster-config-file /data/nodes.conf --cluster-node-timeout 5000 --appendonly yes ports: - "6380:6380" volumes: - redis-master-data-2:/data networks: - redis-net redis-master-3: image: redis command: redis-server --port 6381 --cluster-enabled yes --cluster-config-file /data/nodes.conf --cluster-node-timeout 5000 --appendonly yes ports: - "6381:6381" volumes: - redis-master-data-3:/data networks: - redis-net redis-slave-1: image: redis command: redis-server --port 6382 --cluster-enabled yes --cluster-config-file /data/nodes.conf --cluster-node-timeout 5000 --slaveof redis-master-1 6379 --appendonly yes volumes: - redis-slave-data-1:/data networks: - redis-net redis-slave-2: image: redis command: redis-server --port 6383 --cluster-enabled yes --cluster-config-file /data/nodes.conf --cluster-node-timeout 5000 --slaveof redis-master-2 6380 --appendonly yes volumes: - redis-slave-data-2:/data networks: - redis-net redis-slave-3: image: redis command: redis-server --port 6384 --cluster-enabled yes --cluster-config-file /data/nodes.conf --cluster-node-timeout 5000 --slaveof redis-master-3 6381 --appendonly yes volumes: - redis-slave-data-3:/data networks: - redis-net volumes: redis-master-data-1: redis-master-data-2: redis-master-data-3: redis-slave-data-1: redis-slave-data-2: redis-slave-data-3: networks: redis-net: ``` 在这个docker-compose文件中,我们定义了6个redis实例,其中3个是主节点,3个是从节点,并且每个节点都会在本地暴露对应的端口。我们还定义了一个名为redis-net的网络,以便在容器之间进行通信。通过这个docker-compose文件,我们可以使用`docker-compose up`命令启动这个redis集群
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值