2014-06-05 12 views
18

Z tego dokumentu network settings, wiem, że publish_host jest hostem, z którym będą komunikować się inne węzły w klastrze. Ale ja nie rozumiem funkcjonalność bind_host, co oznacza, że:Jaka jest różnica między bind_host i publish_host w ElasticSearch?

network.bind_host ustawienie pozwala kontrolować szereg różnych komponentów sieciowych będzie wiązać dalej. Domyślnie hostem wiążącym będzie anyLocalAddress (zwykle 0.0.0.0 lub :: 0).

A network.host ustawi network.bind_host i network.publish_host do tej samej wartości.

Więc chcę wiedzieć, dlaczego istnieje potrzeba ustanowienia network.bind_host a jeśli jest to możliwe, aby ustawić network.bind_host i network.publish_host różne wartości?

Odpowiedz

4

Ustawienie bind_host kontroluje interfejs sieciowy Elasticsearch, który nasłuchuje. Tak więc na komputerze z wieloma kartami NIC pozwala to kontrolować, z którym ES będzie się wiązał. Wartość domyślna 0.0.0.0 zasadniczo oznacza "powiązanie ze wszystkimi".

Ustawienie publish_host określa, jaki adres IP Elasticsearch ogłasza innym członkom. Musi to być rzeczywisty adres IP i jest tym, czego inni członkowie klastra będą używać do komunikacji z węzłem ES.

Możesz ustawić bind_host i publish_host na różne wartości, jeśli potrzebujesz czegoś specjalnego na serwerze z wieloma serwerami domowymi. Większość przypadków użycia nie będzie jednak potrzebna, stąd ustawienie network.host kontrolujące oba.

10

Możliwe jest ustawienie ich na różne wartości i naprawdę przydatne w niektórych przypadkach. Oto moje zastosowanie:

Mam lokalną sieć w centrum danych, w którym uruchamiam klaster elasticsearch złożony z różnych węzłów. Oznacza to, że każda maszyna elasticsearch ma dwa adresy IP, jeden do osiągnięcia z zewnętrznego komputera, a drugi do lokalnego połączenia z innymi maszynami w tej samej sieci.

Wewnętrzny adres IP (eth1) służy do tego, aby różne węzły elastycznego wyszukiwania komunikowały się, odkrywały itd. Siebie nawzajem, a zewnętrzny adres IP (eth0) jest tym, który moja aplikacja internetowa, która znajduje się w innej sieci, sprawia, że żąda.

Tak więc w prostych słowach bind_host (zarówno ip w moim przypadku, taka sama jak domyślna wartość 0.0.0.0, która łączy wszystkie interfejsy) to miejsce, w którym elasticsearch nasłuchuje, a publish_host (wewnętrzne IP w moim przypadku) to miejsce, w którym elasticsearch komunikuje się z innym klastrem składniki.

W ten sposób moja aplikacja internetowa znajdująca się w innej sieci może uzyskiwać dostęp do klastra ES z adresu adresu bind_host, a elasticsearch komunikuje się z klastrem za pomocą parametru publish_host.

7

Poniższe ustawienie powinno wystarczyć. Przyjmuje połączenia z dowolnego adresu IP (bind) i konfiguruje swoje self ip do pierwszego non_loopback w pierwszym dostępnym interfejsie sieciowym.

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

Aby zobaczyć więcej opcji, sprawdź numer docs.

+0

nie jestem w stanie znaleźć plik tam, gdzie jest network.bi nd_host rezyduje? –

+0

Sprawdź sekcję "Zaawansowane ustawienia sieci". https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-network.html#advanced-network-settings – mvallebr

0

Aby sprawdzić tę wartość, za pośrednictwem interfejsu API:

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

zwrócić uwagę, że nazwa hosta zostanie rozwiązany (tak nigdy narażony).

6

Z tego co rozumiem, i używać telefonu wzywając analogię:

  • publish_host oznacza: „Zadzwoń do mnie na ten numer”
  • bind_host oznacza: „Odpowiem na ten numer”

I publish_host: _non_loopback:ipv4_ można rozumieć jako: „Zadzwoń do mnie na numer cokolwiek Wołam cię od”