Контейнер ES Docker не присоединяется к другому контейнеру Docker с тем же именем кластера

Я столкнулся со странной проблемой из-за док-контейнеров ES, ранее я запускал автономный ES 7.10 в док-контейнере на хост-порте 9200 (внутренние док-порты такие же, как стандартные порты 9200 и 9300 ES), и в то же время я начал три док-контейнера ES (имеющие другую минорную версию 7) (они должны были сформировать кластер, назовем его docker-es-cluster).

Эти три док-контейнера ES использовали хост-порт 9200, 9201,9202, поэтому ES-контейнер из кластера, который использовал 9200, не мог запуститься из-за конфликта портов (ES 7.10) ES-контейнера.

Поэтому я остановил автономный контейнер докеров 7.10 и снова перезапустил контейнер ES с 3 кластерами, но теперь мои другие 2 контейнера ES, которые прослушивали 9201, 9202, не запускаются, и их журналы содержат следующие ПРЕДУПРЕЖДЕНИЯ:

{"тип": "сервер", "отметка времени": "2020-12-14T15:56:57,651+0000", "level": "ПРЕДУПРЕЖДЕНИЕ", "component": "o.e.c.c.ClusterFormationFailureHelper", "cluster.name": "docker-cluster", "node.name": "es2", "message": "Мастер еще не обнаружен, этот узел ранее не присоединялся к загрузочный (v7+) кластер, и этот узел должен обнаружить главные узлы [] для начальной загрузки кластера: hfrom hosts provider и [{es2}{eBtsR2XgRVWqPdUAP_n_Ew}{tZ9FRAbPTAmZZle_5MaVoA}{172.18.0.3}{172.18.0.3:9300}{dim}{ml.machine_memory=2084032512, xpack.installed=true, ml.max_open_jobs=20}] из последнего известного кластера состояние; термин узла 0, последняя принятая версия 0 в термине 0" }

После этого я остановил все контейнеры докеров, удалил все образы докеров, обрезал докеры, перезапустил систему, но ничего не решает проблему, даже когда я начинаю с чистого состояния, кажется, что состояние кластера испорчено для 2 контейнеров ES, и это не исправляется даже после перезапуска контейнеров докеров.

Мой docker-compose для контейнеров ES выглядит так, как показано ниже, и я не использую привязку тома.

 es2:
    image: "docker.elastic.co/elasticsearch/elasticsearch:<es-version>"
    container_name: 2
    environment:
    - node.name=2
    - cluster.name=docker-cluster
    - cluster.initial_master_nodes=1,2,3
    - discovery.seed_hosts=1,3
    - ES_JAVA_OPTS=-Xms1g -Xmx1g
    ports:
    - "9201:9200"
    networks:
    - localenv
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
1
0
482
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

elasticsearch в новых версиях (думаю 7.8 выше) имеет очень строгие правила по присоединению и отсоединению узлов от кластеров. вы не можете легко отсоединить мастер или даже узлы данных. Я рекомендую использовать инструмент elasticsearch-node: https://www.elastic.co/guide/en/elasticsearch/reference/current/node-tool.html

самый простой способ - использовать команду ниже на всех узлах:

elasticsearch-node detach-cluster

Спасибо за ваш ответ, как запустить его для контейнеров докеров, которые остановлены, а мои контейнеры докеров эфемерны?

Amit 15.12.2020 13:49

@ElasticsearchNinja вы пробовали docker exec запускать команду в контейнере?

hamid bayat 15.12.2020 14:10

вы правы насчет эфемерности. но состояние кластера сохраняется в пути данных каждого узла.

hamid bayat 15.12.2020 14:16

да, но поскольку мой контейнер докеров остановлен, я не могу сделать docker exec и еще один, который работает, я зашел внутрь этого контейнера докеров, но эта команда, которую вы предоставили, не может быть запущена, когда работает ES

Amit 15.12.2020 14:50
Ответ принят как подходящий

Я исправил проблему, перейдя к опции устранения неполадок docker-desktop и выполнив опцию очистки / очистки, как показано на снимке экрана ниже.

Другие вопросы по теме