Назад | Перейти на главную страницу

Как / может Docker-Swarm переключать запрос балансировщика нагрузки, поступающий с одной службы на другую, внутри между аналогичными службами кластера ES

У меня есть кластер Elasticsearch с 3 узлами, работающий как 3 службы докеров (1 задача / контейнер для каждой службы).

Docker-swarm - это двухузловой кластер. 1 менеджер и 1 рабочий.

Мое java-приложение подключается к одному из узлов es1 (задача контейнера / службы докеров) на транспортном порте 9300 внутренне с помощью этой службы (es1) Virtual IP (будет балансировка нагрузки, если бы эта конкретная служба имела больше реплик, скажем 2 или 3) и тем самым подключается к 3-узловому кластеру ES.

Точно так же все три сервисные задачи могут быть достигнуты через транспортный порт 9300.

Теперь, когда этот кластер ES и мое java-приложение развернуты в одной и той же наложенной сети, и все контейнеры / задачи доступны как для одного, так и для другого.

Итак, если эта служба es1 умирает или я удалю ее, а запрос поступает из моего java-приложения на es1, тогда мое java-приложение сможет подключиться к любой из двух оставшихся задач службы кластера ES на порту 9300, как и все службы (задачи / контейнеры) могут связаться / пинговать друг друга, находясь в одной сети Overlay.

Я перепробовал все, что мог придумать. На данный момент не удалось. Не думаю, что это возможно.

Но в любом случае, есть ли у docker-swarm network / load-balancer возможность переключать запрос на одну из аналогичных ES-служб, доступных через порт 9300 внутри одной и той же оверлейной сети.

Если да, то какие именно файлы нужно включить в файл compose.

Будем признательны за быстрое подтверждение.

Вот мой файл для создания докеров ES-кластера

version: '3.7'
services:
  es01:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.6.1

    environment:
      - node.name=es01
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es02,es03
      - cluster.initial_master_nodes=es01,es02,es03
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"

    volumes:
      - data01:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
    networks:
      - elastic
  es02:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.6.1

    environment:
      - node.name=es02
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es01,es03
      - cluster.initial_master_nodes=es01,es02,es03
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"

    volumes:
      - data02:/usr/share/elasticsearch/data
    networks:
      - elastic
  es03:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.6.1

    environment:
      - node.name=es03
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es01,es02
      - cluster.initial_master_nodes=es01,es02,es03
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"

    volumes:
      - data03:/usr/share/elasticsearch/data
    networks:
      - elastic

volumes:
  data01:
    driver: local
  data02:
    driver: local
  data03:
    driver: local