Подтвердить что ты не робот

Какая разница между bind_host и publish_host в ElasticSearch?

Из этого документа сетевые настройки, я знаю, что publish_host - это хост, с которым будут взаимодействовать другие узлы в кластере к. Но я не понимаю функциональность bind_host, что означает, что:

Параметр network.bind_host позволяет управлять хостом, на который будут привязываться различные сетевые компоненты. По умолчанию хостом bind будет anyLocalAddress (обычно 0.0.0.0 или:: 0).

И network.host установит network.bind_host и network.publish_host на одно и то же значение.

Итак, я хочу знать, почему нужно установить network.bind_host, и если возможно установить network.bind_host и network.publish_host для разных значений?

4b9b3361

Ответ 1

В некоторых случаях можно установить их в разные значения и действительно полезно. Вот мое использование:

У меня есть локальная сеть в центре обработки данных, где я запускаю кластер elasticsearch, состоящий из разных узлов. Это означает, что каждая машина elasticsearch имеет два IP-адреса, один для доступа к ней с внешней машины, а другой для локального подключения к другим машинам в той же сети.

Внутренний ip (eth1) используется, чтобы разные узлы elasticsearch обменивались данными, обнаруживали и т.д. друг с другом, а внешний ip-адрес (eth0) - это то, которое мое веб-приложение, находящееся в другой сети, делает запросы к.

Итак, в простых словах bind_host (оба ip в моем случае, то же самое, что и значение по умолчанию 0.0.0.0, которое прикрепляет все интерфейсы), где elasticsearch прослушивает и publish_host (внутренний ip в моем случае), где elasticsearch общается с другими компонентами кластера.

Таким образом, мое веб-приложение, находящееся в другой сети, может получить доступ к кластеру ES с адреса bind_host, тогда как elasticsearch связывается с кластером с публикацией.

Ответ 2

Следующий параметр должен сделать трюк. Он принимает соединения от любого IP (привязки) и настраивает свой собственный ip на первый non_loopback в первом доступном сетевом интерфейсе.

network.bind_host: "0.0.0.0"
network.publish_host: _non_loopback:ipv4_

Чтобы просмотреть дополнительные параметры, проверьте docs.

Ответ 3

Из того, что я понимаю, и использовать аналогию с телефоном:

  • publish_host означает: "Позвони мне по этому номеру"
  • bind_host означает: "Я отвечу на этот номер"

И publish_host: _non_loopback:ipv4_ можно понимать как: "Назовите меня любым номером, с которого я звоню вам"

Ответ 4

Параметр bind_host определяет, какой сетевой интерфейс прослушивает Elicsearch. Таким образом, на машине с несколькими сетевыми адаптерами это позволит вам контролировать, к какой из них привязана ES. Значение по умолчанию 0.0.0.0 в основном означает "привязка ко всем".

Параметр publish_host определяет, какой IP-адрес Elasticsearch объявляет другим членам. Это должен быть фактический IP-адрес, и это то, что другие члены кластера будут использовать для связи с ES node.

Вы можете установить bind_host и publish_host для разных значений, если вам нужно сделать что-то особенное на многоуровневом сервере. В большинстве случаев использования не потребуется, хотя настройка network.host контролирует оба.

Ответ 5

Чтобы проверить это значение, через API:

curl http://ES:9200/_cat/master

Обратите внимание, что имя хоста будет разрешено (поэтому никогда не отображается).

Ответ 6

Как установить "network.host", используя RESTful API от Kibana?