web-dev-qa-db-ja.com

dockercomposeを使用したdockerswarmを使用したRedisクラスター

私はDockerと、群れや作曲のようなそのすべての長所を学んでいます。私の意図は、DockerSwarmでRedisクラスターを作成することです。

これが私の作成ファイルです-

version: '3'

services:
  redis:
    image: redis:Alpine
    command: ["redis-server","--appendonly yes","--cluster-enabled yes","--cluster-node-timeout 60000","--cluster-require-full-coverage no"]
    deploy:
      replicas: 5
      restart_policy:
        condition: on-failure
    ports:
      - 6379:6379
      - 16379:16379

networks:
  Host:
    external: true

network: - Hostを追加すると、どのコンテナも起動しません。削除すると、コンテナが起動しますが、接続しようとすると、CLUSTERDOWN Hash slot not servedのようなエラーがスローされます。

仕様-

Windows 10

Docker Swarm Nodes -
2 Virtual Box VMs running Alpine Linux 3.7.0 with two networks

VirtualBox VM Network - 
eth0 - NAT
eth1 - VirtualBox Host-only network

Docker running inside the above VMs - 
17.12.1-ce
6
Soham Dasgupta

残念ながら、これに苦労している人にとっては、まだdocker-compose.ymlを介してこれを行うことはできません。この問題を参照してください Redisクラスター#79を開始します 。これを行う唯一の方法は、Redisを実行しているすべてのノードのIPアドレスとポートを取得してから、任意の群れノードでこのコマンドを実行することです。

# Gives you all the command help
docker run --rm -it thesobercoder/redis-trib 

# This creates all master nodes
docker run --rm -it thesobercoder/redis-trib create 172.17.8.101:7000 172.17.8.102:7000 172.17.8.103:7000 

# This creates slaves nodes. Note that this requires at least six nodes running master
docker run --rm -it thesobercoder/redis-trib create --replicas 1 172.17.8.101:7000 172.17.8.102:7000 172.17.8.103:7000 172.17.8.104:7000 172.17.8.105:7000 172.17.8.106:7000
1
Soham Dasgupta

これは私にとってはうまくいくようです、 ここ からのネットワーク設定:

version: '3.6'

services:
  redis:
    image: redis:5.0.3
    command:
      - "redis-server"
      - "--cluster-enabled yes"
      - "--cluster-config-file nodes.conf"
      - "--cluster-node-timeout 5000"
      - "--appendonly yes"
    deploy:
      mode: global
      restart_policy:
        condition: on-failure
    networks:
      hostnet: {}

networks:
  hostnet:
    external: true
    name: Host

次に、たとえば次のように実行します。echo yes | docker run -i --rm --entrypoint redis-cli redis:5.0.3 --cluster create 1.2.3.4{1,2,3}:6379 --cluster-replicas 0

明らかにIPを交換してください。

1
exic