Docker Swarm Mode Error: Joining Two Workers To One Manager

Docker Swarm Mode Error: Joining Two Workers To One Manager

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

此外,我正在使用 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/'

我是 运行 Docker Windows 服务器 2016 上的 CE 18.09.0(EE 有同样的问题)此外,我所有的工作节点都在 Windows 平台,使用 Linux 个容器。 (我的管理器节点是一样的,但是因为 issue #3031 使用 Windows 个容器)

甚至在独有的 Windows 环境中也支持设置变异节点群吗?如何使用上面列出的环境来设置这个集群?

windows 支持 Swarm,但您不应在 windows 服务器上使用 docker ce 和 linux 容器。 Docker windows 的 ce 使用 hyperv linux 虚拟机和 win server 2016 在 hyperv 网络方面存在很多问题。

我也尝试在 swarm 中使用 docker ee 赢得服务器 2016,但由于多重限制,我放弃了这个想法,直到更新版本的 windows 服务器出现。

您应该尝试使用 1803 以上的 windows 服务器,Microsoft 最终允许向主机公开端口。因此,我建议您使用 windows 服务器核心 1803 或 1809,或使用 windows 服务器 2019(即 1809)

并切换到 windows 上的 windows 个容器。对于 linux 个容器,使用 linux 个主机。会让你省去很多麻烦。