【问题标题】:Docker-swarm across multiple hosts using same docker-compse file使用相同的 docker-compose 文件跨多个主机的 Docker-swarm
【发布时间】:2020-07-13 10:22:12
【问题描述】:

我正在为以下服务(Grakn、Redis、Elasticsearch、MinIO 和 RabbitMQ)构建跨 3 台主机的 docker swarm。

我的疑问是这样的,

  1. 我可以使用一个 docker-compose.yml 以便所有内容都跨 3 个主机构建吗?或者我们需要 3 个 docker-compose.yml 文件?
  2. 为了有 HA,我还想再建 3 台主机,也就是说,如果一台主机(物理)发生故障,则在这台主机上运行的服务会转移到另一台主机上,服务不会中断。
  3. 我可以在这里使用 docker stack,如果可以,如何?
services:
  grakn:
    image: graknlabs/grakn:1.7.2
    ports:
      - 48555:48555
    volumes:
      - grakndata:/grakn-core-all-linux/server/db
    restart: always
  redis:
    image: redis:6.0.5
    restart: always
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.8.0
    volumes:
      - esdata:/usr/share/elasticsearch/data
    environment:
      - discovery.type=single-node
    restart: always
    ulimits:
      memlock:
        soft: -1
        hard: -1
      nofile:
        soft: 65536
        hard: 65536
  minio:
    image: minio/minio:RELEASE.2020-05-16T01-33-21Z
    volumes:
      - s3data:/data
    ports:
      - "9000:9000"
    environment:
      MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY}
      MINIO_SECRET_KEY: ${MINIO_SECRET_KEY}
    command: server /data
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
      interval: 30s
      timeout: 20s
      retries: 3
    restart: always
  rabbitmq:
    image: rabbitmq:3.8-management
    environment:
      - RABBITMQ_DEFAULT_USER=${RABBITMQ_DEFAULT_USER}
      - RABBITMQ_DEFAULT_PASS=${RABBITMQ_DEFAULT_PASS}
    restart: always

【问题讨论】:

    标签: docker docker-swarm docker-stack


    【解决方案1】:

    我可以使用一个 docker-compose.yml 以便所有内容都跨 3 个构建 主机?或者我们需要 3 个 docker-compose.yml 文件?

    是的,您应该使用一个docker-compose.yml 文件。您可以在此处声明服务及其所需状态,包括副本数。

    为了有 HA,我还想再建 3 台主机,比如说,如果 一台主机(物理)发生故障,在这台主机上运行的服务将 转移到另一台,服务不会中断。

    如果您initialized a cluster of Docker Engines in swarm mode 并且这些引擎在不同的主机上运行,​​则服务副本可以在任何主机上运行。 (除非您使用 Docker labels 限制服务放置)

    我可以在这里使用 docker stack,如果可以的话,如何?

    是的,运行docker stack deploy --compose-file [Path to a Compose file]

    【讨论】:

    • 感谢您的及时回复。我面临的挑战是,我想在专用主机上运行 elasticsearch 和 Grakn 服务,但需要成为 Swarm 集群的一部分。您有任何示例或其他内容,我该如何配置?
    • 我会搜索互联网,如果您有问题,请在单独的问题中发布它们并将链接发送给我,我会检查。如果我的回答有帮助,请标记为已接受并点赞
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-09
    相关资源
    最近更新 更多