Guide étape par étape pour configurer un cluster de base à trois nœuds

Apprenez à configurer rapidement un cluster Elasticsearch de base résilient à trois nœuds. Ce tutoriel étape par étape couvre la configuration essentielle dans `elasticsearch.yml`, le démarrage de la découverte du cluster en utilisant `cluster.initial_master_nodes`, le lancement des services, et la vérification de la santé et de la réplication des shards sur les nœuds à l'aide de commandes cURL pratiques.

51 vues

Guide détaillé pour la configuration d'un cluster basique à trois nœuds

La mise en place d'un cluster Elasticsearch résilient est fondamentale pour atteindre une haute disponibilité et une évolutivité horizontale dans votre infrastructure de recherche et d'analyse. Un cluster à trois nœuds constitue un excellent point de départ, offrant la redondance nécessaire pour résister à la défaillance d'un seul nœud sans interruption de service. Ce guide complet vous accompagnera tout au long du processus d'installation, de configuration et de vérification d'un cluster Elasticsearch basique à trois nœuds, idéal pour les environnements de développement ou les déploiements de production à petite échelle.

À la fin de ce tutoriel, vous disposerez d'un cluster fonctionnel où les données pourront être distribuées et répliquées en toute sécurité, en tirant parti des capacités distribuées fondamentales d'Elasticsearch.


Prérequis

Avant de commencer la configuration, assurez-vous d'avoir les éléments suivants :

  1. Trois serveurs/machines virtuelles distincts : Chacun hébergera un nœud. Pour ce guide, nous supposons que vous avez trois machines distinctes ou conteneurs Docker prêts.
  2. Java Development Kit (JDK) : Elasticsearch nécessite un JDK compatible installé sur tous les nœuds (par exemple, JDK 17, selon votre version d'Elasticsearch).
  3. Connectivité réseau : Assurez-vous que les trois nœuds peuvent communiquer entre eux sur les ports nécessaires (port HTTP par défaut : 9200, port de transport par défaut : 9300).
  4. Installation identique d'Elasticsearch : Téléchargez et extrayez la même version d'Elasticsearch sur les trois nœuds.

Étape 1 : Configuration du fichier elasticsearch.yml de chaque nœud

Le fichier de configuration, elasticsearch.yml, situé dans le répertoire config/ de votre installation Elasticsearch, est crucial pour définir le comportement de chaque nœud au sein du cluster. Vous devez ajuster les paramètres spécifiques à chaque nœud.

Nous définirons implicitement trois rôles : un nœud éligible au rôle de maître et trois nœuds éligibles au rôle de données. Pour un cluster à trois nœuds, il est courant de permettre à tous les nœuds de détenir les rôles de maître, de données et d'ingestion.

Paramètres communs à tous les nœuds

Assurez-vous que ces paramètres sont identiques dans les trois fichiers de configuration :

# Nom du cluster : Doit être identique sur tous les nœuds
cluster.name: my-three-node-cluster

# Paramètres de découverte (Cruciaux pour l'intégration initiale)
# Utilisez une liste de graines de nœuds connus pour amorcer la découverte
discovery.seed_hosts: ["node1_ip:9300", "node2_ip:9300", "node3_ip:9300"]

# Requis pour le quorum (N/2 + 1). Pour 3 nœuds, nous avons besoin de 2 votes.
cluster.initial_master_nodes: ["node1_name", "node2_name", "node3_name"]

# Paramètres réseau (Assurez-vous de la liaison à la bonne IP)
network.host: 0.0.0.0 # Ou l'IP privée spécifique de l'hôte

# Port HTTP (Accès externe)
http.port: 9200

# Port de transport (Communication interne du cluster)
transport.port: 9300

Paramètres uniques par nœud

Chaque nœud nécessite un node.name unique et potentiellement un path.data unique s'il fonctionne sur la même machine ou partage le stockage.

Configuration du Nœud 1 (node1_ip)

# Identifiant unique pour le Nœud 1
node.name: node-1

# Si les chemins diffèrent
# path.data: /var/lib/elasticsearch/data_node1

Configuration du Nœud 2 (node2_ip)

# Identifiant unique pour le Nœud 2
node.name: node-2

Configuration du Nœud 3 (node3_ip)

# Identifiant unique pour le Nœud 3
node.name: node-3

Note importante sur cluster.initial_master_nodes : Ce paramètre est uniquement utilisé lorsque le cluster démarre pour la toute première fois. Une fois le cluster formé, Elasticsearch gère l'élection du maître en interne. Si vous devez un jour redémarrer un cluster complètement inactif, vous devez vous assurer que ces noms correspondent à la configuration initiale.


Étape 2 : Configuration des rôles (facultatif mais recommandé)

Bien que la configuration par défaut permette aux nœuds d'assumer tous les rôles (maître, données, ingestion, coordination), dans les déploiements plus importants, les rôles sont séparés. Pour une configuration robuste à trois nœuds, nous nous assurons que tous les nœuds sont éligibles pour devenir le maître.

Ajoutez la configuration des rôles suivante à tous les trois fichiers elasticsearch.yml :

# Activez tous les rôles standard sur tous les nœuds pour cette configuration initiale
node.roles: [ master, data, ingest, remote_cluster_client ]

Gestion du quorum pour la résilience

Avec trois nœuds, le cluster peut tolérer la perte d'un nœud tout en maintenant le quorum (2 nœuds sur 3 restent). Ceci est géré par la liste cluster.initial_master_nodes fournie à l'Étape 1.


Étape 3 : Démarrage des nœuds du cluster

Démarrez Elasticsearch séquentiellement sur chaque nœud. Il est généralement plus sûr de démarrer en premier les nœuds listés en tête dans cluster.initial_master_nodes, bien qu'Elasticsearch moderne gère bien un démarrage désordonné.

Sur le Nœud 1, le Nœud 2 et le Nœud 3 :

Naviguez vers votre répertoire d'installation d'Elasticsearch et exécutez :

# Pour l'exécution au premier plan (utile pour le débogage)
bin/elasticsearch

# Pour l'exécution en arrière-plan (recommandé en production)
bin/elasticsearch -d

Surveillez les journaux (logs/elasticsearch.log) sur chaque nœud pour les messages de démarrage réussis, en particulier ceux indiquant qu'ils ont rejoint le cluster avec succès.


Étape 4 : Vérification de l'état de santé du cluster

Une fois tous les nœuds démarrés, utilisez l'API _cat/health, accessible via le port HTTP de n'importe quel nœud (par défaut 9200), pour confirmer l'état du cluster.

Accédez-y depuis une machine pouvant atteindre les nœuds (par exemple, via curl) :

Vérifier l'état de santé :

curl -X GET "http://node1_ip:9200/_cat/health?v"

Extrait de la sortie attendue :

epoch timestamp cluster status node.total node.data shards pri relo init unassigned unpersisted
1701331200 12:00:00 my-three-node-cluster green 3 3 0 0 0 0 0 0

Si status est green et node.total est 3, votre cluster est opérationnel et fonctionne correctement.

Vérification de l'appartenance des nœuds

Pour confirmer que tous les nœuds se voient, vérifiez la liste des nœuds :

curl -X GET "http://node1_ip:9200/_cat/nodes?v"

Vous devriez voir trois entrées distinctes correspondant à node-1, node-2 et node-3, chacune affichant leurs adresses IP et leurs rôles (m pour éligible au rôle de maître, d pour données).


Étape 5 : Création d'un index de test avec réplication

Pour vérifier la capacité du cluster à distribuer les données et à gérer la réplication, nous devons créer un index spécifiant au moins une réplique.

Dans un cluster à trois nœuds, le fait de définir number_of_replicas sur 1 garantit que chaque shard primaire a une copie (réplique) distribuée sur un nœud différent, offrant une tolérance aux pannes immédiate.

Commande de création d'index :

```bash
curl -X PUT "http://node1_ip:9200/test_data_index?pretty" -H 'Content-Type: application/json' -d'
{
"settings": {
"number_of_shards": 3