web-dev-qa-db-fra.com

Quelle est la différence entre bind_Host et publish_Host dans ElasticSearch?

Dans ce document paramètres réseau , je sais que publish_Host est l'hôte avec lequel les autres nœuds du cluster vont communiquer. Mais je ne comprends pas la fonctionnalité de bind_Host, ce qui signifie que:

Le paramètre network.bind_Host permet de contrôler l'hôte sur lequel différents composants du réseau seront liés. Par défaut, l'hôte de liaison sera anyLocalAddress (généralement 0.0.0.0 ou :: 0). 

Et le network.Host définira network.bind_Host et network.publish_Host sur la même valeur. 

Je veux donc savoir pourquoi il est nécessaire de définir network.bind_Host et s'il est possible de définir network.bind_Host et network.publish_Host sur des valeurs différentes?

25
flyer

Il est possible de leur attribuer des valeurs différentes et utiles dans certains cas. Voici mon usage: 

J'ai un réseau local dans un centre de données où je gère le cluster elasticsearch composé de différents nœuds. Cela signifie que chaque machine elasticsearch a deux adresses IP, l'une pour la joindre depuis une machine externe et l'autre pour se connecter localement à d'autres machines du même réseau. 

L'adresse IP interne (eth1) permet aux différents nœuds d'elasticsearch de communiquer, de se découvrir, etc., et l'adresse IP externe (eth0) est celle à laquelle mon application Web, située dans un autre réseau, adresse les requêtes. 

Donc, en termes simples, bind_Host (ip dans mon cas, identique à la valeur par défaut 0.0.0.0 qui lie toutes les interfaces) est l'endroit où elasticsearch écoute et publish_Host (ip interne dans mon cas) est l'endroit où elasticsearch communique avec d'autres composants du cluster.

Ainsi, mon application Web se trouvant sur un autre réseau peut accéder au cluster ES à partir de l'adresse bind_Host, tandis qu'elasticsearch communique avec le cluster via publish_Host.

11
ibai

Le réglage suivant devrait faire l'affaire. Il accepte les connexions à partir de n’importe quelle adresse IP (liaison) et configure son adresse IP automatique sur le premier non-loopback de la première interface réseau disponible.

network.bind_Host: "0.0.0.0"
network.publish_Host: _non_loopback:ipv4_

Pour voir plus d'options, consultez la docs .

11
mvallebr

D'après ce que je comprends et pour utiliser une analogie avec un appel téléphonique:

  • publish_Host signifie: "Appelle-moi sur ce numéro"
  • bind_Host signifie: "je répondrai sur ce numéro"

Et publish_Host: _non_loopback:ipv4_ peut être compris comme: "Appelez-moi quel que soit le numéro depuis lequel je vous appelle"

10
user3638471

Le paramètre bind_Host contrôle l'interface d'interface réseau écoutée par Elasticsearch. Ainsi, sur une machine disposant de plusieurs cartes d'interface réseau, cela vous permettra de contrôler le serveur auquel l'ES se liera. La valeur par défaut de 0.0.0.0 signifie fondamentalement "lier à tous".

Le paramètre publish_Host contrôle l'adresse IP que Elasticsearch communique aux autres membres. Il doit s'agir d'une adresse IP réelle et est ce que les autres membres du cluster utiliseront pour communiquer avec le nœud ES.

Vous pouvez définir bind_Host et publish_Host sur des valeurs différentes si vous devez effectuer quelque chose de spécial sur un serveur multi-hébergé. La plupart des cas d’utilisation ne seront cependant pas nécessaires, d’où le paramètre network.Host contrôlant les deux. 

6
deverton

Pour vérifier cette valeur, via l'API:

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

Faites attention à ce que le nom d'hôte soit résolu (donc jamais exposé).

0
Thomas Decaux