Docker Swarm模式错误:将两名工作人员加入一个经理

时间:2018-12-04 16:00:21

标签: docker docker-swarm docker-machine docker-swarm-mode docker-stack

我很难设置由两名工人和一名经理组成的Docker Swarm。一切正常,直到我添加第二个工作器。添加第二个工作程序后,第一个工作程序的守护程序进入某种错误状态,其中简单的docker version会产生

enter image description here

此外,我正在使用Stack YAML启动三个Redis服务。

Stack.yaml

version: '3.4'

services:
  redis-master:
    image: 'bitnami/redis:5.0.2'
    ports:
      - '6379:6379'
    environment:
      - REDIS_REPLICATION_MODE=master 
      - REDIS_PASSWORD=f7paul12-d571-4701-9c55-64vanacecDyK
    deploy:
      mode: global
      restart_policy:
        condition: any
    volumes: 
      - 'redis:/opt/bitnami/redis/etc/'

  redis-replica:
    image: 'bitnami/redis:5.0.2'
    ports:
      - '6379'
    depends_on:
      - redis-master
    environment:
      - REDIS_REPLICATION_MODE=slave
      - REDIS_MASTER_HOST=redis-master
      - REDIS_MASTER_PORT_NUMBER=6379
      - REDIS_MASTER_PASSWORD=f7paul12-d571-4701-9c55-64vanacecDyK
      - REDIS_PASSWORD=f7paul12-d571-4701-9c55-64vanacecDyK
    deploy:
      mode: replicated
      replicas: 6
      update_config:
        parallelism: 1
        delay: 20s
      restart_policy:
        condition: any

  redis-sentinel:
    image: 'bitnami/redis:5.0.2'
    ports:
      - '16379'
    depends_on:
      - redis-master
      - redis-replica
    entrypoint: |
      bash -c 'bash -s <<EOF
      "/bin/bash" -c "cat <<EOF > /opt/bitnami/redis/etc/sentinel.conf
      port 16379
      dir /tmp
      sentinel monitor master-node redis-master 6379 2
      sentinel down-after-milliseconds master-node 5000
      sentinel parallel-syncs master-node 1
      sentinel failover-timeout master-node 5000
      sentinel auth-pass master-node f7paul12-d571-4701-9c55-64vanacecDyK
      sentinel announce-ip redis-sentinel
      sentinel announce-port 16379
      EOF"     
      "/bin/bash" -c "redis-sentinel /opt/bitnami/redis/etc/sentinel.conf"    
      EOF'
    deploy:
      mode: global
      restart_policy:
        condition: any
volumes:
  redis:
    driver: external
    driver_opts:
      type: 'none'
      o: 'bind'
      device: '/c/redis/'

我在Windows Server 2016上运行Docker CE 18.09.0(EE也有同样的问题)此外,我的所有工作节点都在Windows平台上,使用Linux容器。 (我的管理员节点是相同的,但是由于issue #3031而使用Windows容器)

是否仅在Windows专有环境中设置了mutinode群?如何使用上面列出的环境设置此集群?

1 个答案:

答案 0 :(得分:1)

Swarm在Windows上受支持,但您不应在Windows服务器上使用docker ce和linux容器。适用于Windows的Docker ce使用hyperv linux虚拟机,而Win Server 2016在Hyperv网络方面存在很多问题。

我也尝试使用docker ee来赢得服务器2016,但是由于多个限制,我放弃了这个想法,直到出现新版本的Windows Server。

您应尝试使用Microsoft最终允许向主机公开端口的高于1803的Windows服务器。因此,我建议您使用Windows Server Core 1803或1809或Windows Server 2019(即1809)

并在Windows上切换到Windows容器。对于linux容器,请使用linux主机。将为您节省很多头痛。