B i M A P

Redis|用 Docker 架設 Redis Cluster

redis

Redis 版本 6.2.4


docker-compose.yml

透過 docker-compose 模擬六台 server, 3 master, 3 slave,

yml 檔中,最後的 cluster-creator 將六台 Server 組合在一起成為 cluster。

    
version: "3"
services:
  redis1:
    image: redis:latest
    command: redis-server --port 7000 --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000 --appendonly yes
    ports:
      - "7000:7000"
    healthcheck:
      test: [ "CMD", "redis-cli", "-p", "7000", "cluster", "info" ]
      interval: 1s
      timeout: 3s
      retries: 30
  redis2:
    image: redis:latest
    command: redis-server --port 7001 --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000 --appendonly yes
    ports:
      - "7001:7001"
    healthcheck:
      test: [ "CMD", "redis-cli", "-p", "7001", "cluster", "info" ]
      interval: 1s
      timeout: 3s
      retries: 30
  redis3:
    image: redis:latest
    command: redis-server --port 7002 --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000 --appendonly yes
    ports:
      - "7002:7002"
    healthcheck:
      test: [ "CMD", "redis-cli", "-p", "7002", "cluster", "info" ]
      interval: 1s
      timeout: 3s
      retries: 30
  redis4:
    image: redis:latest
    command: redis-server --port 7003 --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000 --appendonly yes
    ports:
      - "7003:7003"
    healthcheck:
      test: [ "CMD", "redis-cli", "-p", "7003", "cluster", "info" ]
      interval: 1s
      timeout: 3s
      retries: 30
  redis5:
    image: redis:latest
    command: redis-server --port 7004 --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000 --appendonly yes
    ports:
      - "7004:7004"
    healthcheck:
      test: [ "CMD", "redis-cli", "-p", "7004", "cluster", "info" ]
      interval: 1s
      timeout: 3s
      retries: 30
  redis6:
    image: redis:latest
    command: redis-server --port 7005 --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000 --appendonly yes
    ports:
      - "7005:7005"
    healthcheck:
      test: [ "CMD", "redis-cli", "-p", "7005", "cluster", "info" ]
      interval: 1s
      timeout: 3s
      retries: 30
  redis-cluster-creator:
    image: redis
    entrypoint: [/bin/sh,-c,'echo "yes" | redis-cli --cluster create redis1:7000 redis2:7001 redis3:7002 redis4:7003 redis5:7004 redis6:7005 --cluster-replicas 1']
    depends_on:
      redis1:
        condition: service_healthy
      redis2:
        condition: service_healthy
      redis3:
        condition: service_healthy
      redis4:
        condition: service_healthy
      redis5:
        condition: service_healthy
      redis6:
        condition: service_healthy


啟動服務

docker compose up -d


確認服務

redis-cli -p 7000 cluster info #確認 cluster_state:ok
redis-cli -p 7000 cluster nodes #查看 cluster node 狀態
redis-cli -p 7000 -c #進入 redis cluster 互動模式,-c 為 cluster mode



有任何問題,或是想看新主題? 聯絡我們

延伸閱讀
winstonlu的大頭照
ELK 達人

我們致力於 ELK 的各種應用,協助企業建置相關服務。我們也提供基於 ELK 的各種解決方案,有任何問題,歡迎加入我們的官方 Line,或來信詢問,期待與您面對面的機會。