【问题标题】:How to get my machine back to swarm manager status?如何让我的机器恢复到集群管理器状态?
【发布时间】:2018-06-19 19:23:28
【问题描述】:

我有两个 AWS 实例:

production-01 docker-machine-master

我 ssh 进入 docker-machine-master 并运行 docker stack deploy -c deploy/docker-compose.yml --with-registry-auth production 并收到此错误:

此节点不是集群管理器。使用“docker swarm init”或“docker swarm join”将此节点连接到swarm并重试

我的猜测是集群管理器在某个时候宕机了,这个新实例启动了一些如何保持相同的信息/配置减去集群管理器信息。也许内部IP发生了变化或其他什么。我做出这个猜测是因为发布时间相差几个月。 production-01 实例在 6 个月前启动。我不知道,因为我是 AWS、Docker 和这个项目的新手。

我想将代码更改部署到 production-01 实例,但我没有 ssh 密钥来执行此操作。另外,我的预感是 production-01 是 docker-compose.yml 文件中注明的副本。

我是这个项目的唯一开发者,因此我们将不胜感激。

这是我的 docker-compose.yml 文件的副本,名称已更改。

version: '3' services: database: image: postgres:10 environment: - POSTGRES_USER=user - POSTGRES_PASSWORD=pass deploy: replicas: 1 volumes: - db:/var/lib/postgresql/data aservicename: image: 123.456.abc.amazonaws.com/reponame ports: - 80:80 depends_on: - database environment: DB_HOST: database DATA_IMPORT_BUCKET: some_sql_bucket FQDN: somedomain.com DJANGO_SETTINGS_MODULE: name.settings.production DEBUG: "true" deploy: mode: global logging: driver: awslogs options: awslogs-group: aservicename cron: image: 123.456.abc.amazonaws.com/reponame depends_on: - database environment: DB_HOST: database DATA_IMPORT_BUCKET: some_sql_bucket FQDN: somedomain.com DOCKER_SETTINGS_MODULE: name.settings.production deploy: replicas: 1 command: /name/deploy/someshellfile.sh logging: driver: awslogs options: awslogs-group: cron networks: default: driver: overlay ipam: driver: default config: - subnet: 192.168.100.0/24 volumes: db: driver: rexray/ebs

【问题讨论】:

    标签: docker docker-compose docker-swarm docker-machine


    【解决方案1】:

    我假设您只有一个经理,production-01 是一名工人。

    如果docker info 显示Swarm: inactive 并且您没有备份Swarm raft 日志,那么您需要使用docker swarm init 创建一个新的swarm。

    通过检查docker plugin ls 确保它具有 rexray/ebs 驱动程序。所有节点都需要该插件驱动程序才能使用数据库卷。

    如果您无法通过 SSH 连接到 production-01,那么将无法让它离开并加入新的 swarm。您需要部署一个新的工作节点并关闭该现有服务器。

    然后你可以再次docker stack deploy该应用程序,它应该重新连接数据库卷。

    注意 1:如果堆栈仍在 production-01 worker 上运行,请勿在新服务器上重新部署堆栈,因为它将失败,因为 db 的 ebs 卷仍将连接到 production-01

    注意 2:除了学习之外,最好运行三个经理(默认情况下,经理也是工人)。这样,如果一个节点被杀死,你仍然有一个可行的解决方案。

    【讨论】:

      猜你喜欢
      • 2015-06-21
      • 1970-01-01
      • 1970-01-01
      • 2012-07-07
      • 2023-01-13
      • 1970-01-01
      • 2021-10-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多