Elasticsearch предназначен для работы в режиме кластера, все, что мне нужно сделать, - это определить соответствующие IP-адреса node в кластере через переменную окружения и до тех пор, пока доступно сетевое подключение, оно будет подключаться и присоединяться к другим узлам к кластера.
У меня есть 3 узла, 1 действует как диспетчер роевых докеров, а два других являются рабочими. Я инициализировал менеджера и присоединился к рабочим узлам, и все выглядит нормально с этой точки зрения.
Теперь я пытаюсь запустить контейнер elasticsearch таким образом, чтобы это позволило мне объединить все узлы в один и тот же кластер elasticsearch, однако я хочу, чтобы узлы соединялись с использованием их сетевого интерфейса наложения, а это означает, что мне нужно знать внутренние внутренние адреса контейнера во время запуска команды docker service create
, как я могу это сделать? Должен ли я использовать что-то вроде консула для достижения этого?
Некоторые пояснения:
Мне нужно знать во время создания службы IP-адреса (или имена DNS) для всех участников Elasticsearch, чтобы я мог правильно запустить кластер. Это должно быть во время творения, а не потом. Кроме того, насколько я понимаю, я могу разоблачить порты 9200/9300 для всех служб и работать с внешними IP-машинами и заставить его работать, но я бы хотел использовать оверлейную сеть для выполнения всех этих сообщений (я думал, что это то, что рой mode для).