Discovery node in Elasticsearch 7.1.1

Je suis un débutant sur Elasticsearch, et fan de cette solution de moteur avancée BIG DATA.
Mais, j'ai un gros problème sur le passage à l'échelle.
En effet, j'ai installé elasticsearch 7.1.1 sur trois machines virtuelles: Windows 10, ubuntu 18.04 et centos 7. Les machines communiquent parfaitement via le ping. Mais les nodes elasticsearch sur les 3 machines ne communiquent pas. Voici la configuration du fichier elasticsearch.yml de la michine ubuntu 18.04, cette configuration est identique sur toutes les autres machines sauf le node.name qui diffère:

# ======================== Elasticsearch Configuration =========================

# NOTE: Elasticsearch comes with reasonable defaults for most settings.

# Before you set out to tweak and tune the configuration, make sure you

# understand what are you trying to accomplish and the consequences.

# The primary way of configuring a node is via this file. This template lists

# the most important settings you may want to configure for a production cluster.

# Please consult the documentation for further information on configuration options:

# https://www.elastic.co/guide/en/elasticsearch/reference/index.html

# ---------------------------------- Cluster -----------------------------------

# Use a descriptive name for your cluster:

cluster.name: NTEM

# ------------------------------------ Node ------------------------------------

# Use a descriptive name for the node:

node.name: "node-1"

# Add custom attributes to the node:

#node.attr.rack: r1

# ----------------------------------- Paths ------------------------------------

# Path to directory where to store the data (separate multiple locations by comma):

path.data: /var/lib/elasticsearch

# Path to log files:

path.logs: /var/log/elasticsearch

# ----------------------------------- Memory -----------------------------------

# Lock the memory on startup:

#bootstrap.memory_lock: true

# Make sure that the heap size is set to about half the memory available

# on the system and that the owner of the process is allowed to use this

# limit.

# Elasticsearch performs poorly when the system is swapping the memory.

# ---------------------------------- Network -----------------------------------

# Set the bind address to a specific IP (IPv4 or IPv6):

#xpack.security.enabled: true
network.host: 192.168.125.33
transport.port: 9300

# Set a custom port for HTTP:

#http.port: 9200

# For more information, consult the network module documentation.

# --------------------------------- Discovery ----------------------------------

# Pass an initial list of hosts to perform discovery when this node is started:

# The default list of hosts is ["127.0.0.1", "[::1]"]

discovery.seed_hosts: ["192.168.125.32:9300", "192.168.125.33:9300", "192.168.125.51"]

# Bootstrap the cluster using an initial set of master-eligible nodes:

cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]

# For more information, consult the discovery and cluster formation module documentation.

# ---------------------------------- Gateway -----------------------------------

# Block initial recovery after a full cluster restart until N nodes are started:

#gateway.recover_after_nodes: 3

# For more information, consult the gateway module documentation.

# ---------------------------------- Various -----------------------------------

# Require explicit names when deleting indices:

#action.destructive_requires_name: true

Merci de pour votre attention et j'espère trouver une solution a ce problème sur lequel je bloque depuis une semaine.
Cordialement a vous

Salut,

Pour information les machines elastic communiquent sur le port 9300 (par défaut). Quand tu dis

Tu parles de "ping 1.2.3.4"

Comment tu peux savoir que les 3 machines ne communiquent pas as-tu des logs qui affichent des erreurs?

Sur la machines centos tu peux utiliser cette syntaxe, ubuntu aussi peut être :
network.host: [eth0, local]
Ça évite de changer la conf si ton poste change d'IP.

discovery.seed_hosts: ["192.168.125.32:9300", "192.168.125.33:9300", "192.168.125.51"]

Tu peux enlever les :9300, d’après l’exemple en commentaire au dessus c'est juste l'IP, pas besoin du port.

Juste par curiosité pourquoi 3 machines avec des OS différents ?

Si j’étais toi j'essayerai en premier avec les 2 machines linux (Ubuntu et Centos) vu qu'il doivent avoir une configuration similaire et si les machines communiquent rajouter la machine windows.

Bonjour Gabriel,
ça ne marche toujours pas.
En fait 3 machines pour juste tester les limites du système Elasticsearch. Le passage à l'echelle ou le scalabilité horizontal se situe au niveau d'elasticsearch pas au niveau de L'OS Hote (Windows ou Linux), donc ça devrait pas causer de problème.
Le justement je parle du ping réseau "ping 192.168.125.33"
Les machines ne communiquent pas parce que quand je lance la commande REST suivant : "http://192.168.125.32:9200/_cluster/health",
j'ai ce resultat :
{"cluster_name":"NTEM","status":"yellow","timed_out":false,"number_of_nodes":1,"number_of_data_nodes":1,"active_primary_shards":8,"active_shards":8,"relocating_shards":0,"initializing_shards":0,"unassigned_shards":2,"delayed_unassigned_shards":0,"number_of_pending_tasks":0,"number_of_in_flight_fetch":0,"task_max_waiting_in_queue_millis":0,"active_shards_percent_as_number":80.0}
Si tu as essaye ça marche de ton coté, j'aimerais bien savoir comment tu as fais.
Merci

Pour la version 7.x j'ai suivi le tuto, j'ai pas eu de problèmes.
https://www.elastic.co/guide/en/elasticsearch/reference/7.1/docker.html

Généralement quand les machines ne forment pas de cluster:
1- vérifier que le service tourne sur toutes les machines et que le cluster.name est identique, que les node sont différents etc... bref suivre la configuration dans la doc en laissant tout ce que je ne comprends pas avec la valeur par défaut.
2- vérifie le réseau avec un ping.
2bis - vérifier qu'il n'y a pas de firewall qui bloquent des ports faire un curl ip-1:9200 a partir de la machine ip-2 etc... si le ping fonctionne les ports sont parfois bloqués.
3- faire un tail-f sur les logs pour voir si y'a pas d'erreurs généralement des plugin quand je fais des mises a jour (ce qui n'est pas ton cas) ou de quelques configuration ou modules non installes, versoin de Java non compatible etc...

En suivant ces trois points ça devrai marcher.

Comme je te l'ai dis plus haut vu que tu débutes avec elasticsearch le mieux c'est de commencer avec 2 machines identiques (même OS) une fois que la config est correct tu devrai juste a copier le fichier de conf et te concentrer sur les problèmes spécifique aux différents système.

Si tu peux partager tes fichiers de logs je suis sure qu'il y a un début de réponse dedans.

vu que t'as mis:

cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]

Si un des serveur n'est pas fonctionnel ton cluster ne se formera pas.
Regarde les logs de chaque machine.

Merci Gabriel, je vais tester

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.