Docker -swarm между несколькими хостами с использованием одного и того же файла docker -compse - PullRequest
0 голосов
/ 13 июля 2020

Я создаю docker рой на 3 хостах для следующих сервисов: Grakn, Redis, Elasticsearch, MinIO и RabbitMQ.

Мои запросы:

  1. Может я использую один docker -compose.yml, чтобы все строилось на 3 хостах? Или нам нужно иметь файл 3 docker -compose.yml?
  2. Чтобы иметь HA, я также хочу построить еще 3 хоста, чтобы, скажем, если один хост (физический) выходит из строя, службы, которые работают на этом, будут переведены на другой, и обслуживание не будет прервано.
  3. Могу ли я использовать здесь стек docker, если да, то как?
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

1 Ответ

0 голосов
/ 13 июля 2020

Могу ли я использовать один docker -compose.yml, чтобы все строилось на 3 хостах? Или нам нужен файл 3 docker -compose.yml?

Да, вы должны использовать один файл docker-compose.yml. Здесь вы объявляете службы и их желаемое состояние, включая количество реплик.

Для обеспечения высокой доступности я также хочу построить еще 3 хоста, чтобы, скажем, если один хост (физический) выйдет из строя, сервисы которые работают на этом, будут перенесены на другой, и обслуживание не будет прервано.

Если вы инициализировали кластер Docker Двигатели в режиме роя и эти двигатели работают на разных хосты, реплики служб могут работать на любом хосте. (если вы не ограничиваете размещение услуг с помощью Docker меток )

Могу ли я использовать здесь стек docker, если да, то как?

Да , запустите docker stack deploy --compose-file [Path to a Compose file]

...