目录结构

  1. .
  2. ├── redis-stack.yml
  3. ├── sentinel
  4. ├── redis-sentinel.yml
  5. ├── sentinel1.conf
  6. ├── sentinel2.conf
  7. └── sentinel3.conf
  8. └── start.sh

redis一主二从部署

redis-stack.yml

version: '3.1'
services:
  master:
    image: redis:4.0
    container_name: redis-master
    command: redis-server --requirepass 123456
    ports:
      - "56379:6379"
  slave1:
    image: redis:4.0
    container_name: redis-slave-1
    ports:
      - "56380:6379"
    command: redis-server --slaveof master 6379 --requirepass 123456 --masterauth 123456

  slave2:
    image: redis:4.0
    container_name: redis-slave-2
    ports:
      - "56381:6379"
    command: redis-server --slaveof master 6379 --requirepass 123456 --masterauth 123456

redis-sentinel部署

sentinel配置文件sentinel1/2/3.conf

port 26379
dir /tmp
sentinel monitor mymaster master 6379 2
sentinel auth-pass mymaster 123456
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 10000
sentinel deny-scripts-reconfig yes

sentinel/redis-sentinel.yml:

version: '3.1'
services:
  sentinel1:
    image: redis:4.0
    container_name: redis-sentinel-1
    ports:
      - "26379:26379"
    command: redis-sentinel /usr/local/etc/redis/sentinel.conf
    volumes:
      - ./sentinel/sentinel1.conf:/usr/local/etc/redis/sentinel.conf
      - /etc/localtime:/etc/localtime:ro
  sentinel2:
    image: redis:4.0
    container_name: redis-sentinel-2
    ports:
      - "26380:26379"
    command: redis-sentinel /usr/local/etc/redis/sentinel.conf
    volumes:
      - ./sentinel/sentinel2.conf:/usr/local/etc/redis/sentinel.conf
      - /etc/localtime:/etc/localtime:ro
  sentinel3:
    image: redis:4.0
    container_name: redis-sentinel-3
    ports:
      - "26381:26379"
    command: redis-sentinel /usr/local/etc/redis/sentinel.conf
    volumes:
      - ./sentinel/sentinel3.conf:/usr/local/etc/redis/sentinel.conf
      - /etc/localtime:/etc/localtime:ro

启动服务

docker stack deploy -c redis-stack.yml -c sentinel/redis-sentinel.yml redis-cluster