Comment configurer votre premier cluster Elasticsearch pour le développement

Découvrez les étapes essentielles pour déployer et configurer rapidement un cluster Elasticsearch basique à nœud unique ou multi-nœuds, adapté au développement local. Ce guide couvre le téléchargement des binaires, la configuration de `elasticsearch.yml` pour désactiver la sécurité à des fins de test, le démarrage des nœuds et la vérification de la santé du cluster à l'aide d'outils de vérification simples en ligne de commande.

42 vues

Comment configurer votre premier cluster Elasticsearch pour le développement

Commencer avec Elasticsearch peut sembler intimidant en raison de sa nature distribuée, mais la configuration d'un cluster de base pour le développement local est simple. Ce guide vous expliquera les étapes essentielles requises pour déployer et configurer rapidement un cluster Elasticsearch fonctionnel, que vous optiez pour une configuration simple à nœud unique ou un environnement multi-nœuds plus représentatif. Comprendre cette configuration initiale est crucial pour indexer, interroger et explorer vos données en toute transparence à l'aide des puissantes capacités de recherche et d'analyse d'Elasticsearch.

Nous nous concentrerons sur les aspects de configuration essentiels nécessaires pour un environnement de développement, vous assurant d'avoir une base solide avant de passer aux considérations de production.

Prérequis

Avant de commencer, assurez-vous de satisfaire les prérequis suivants :

  1. Java Development Kit (JDK) : Elasticsearch nécessite un JDK compatible installé sur votre système. Les versions d'Elasticsearch 7.x et ultérieures nécessitent généralement le JDK 11 ou une version ultérieure.
  2. Télécharger Elasticsearch : Obtenez la distribution binaire de la version d'Elasticsearch souhaitée depuis le site officiel d'Elastic.
  3. Ressources système : Pour les tests de développement de base, 2 Go de RAM sont généralement suffisants, bien qu'une quantité plus importante soit recommandée pour les tests multi-nœuds.

Étape 1 : Téléchargement et extraction d'Elasticsearch

Une fois téléchargée (généralement sous forme de fichier .zip ou .tar.gz), extrayez l'archive dans un répertoire où vous souhaitez héberger les fichiers de votre cluster (par exemple, ~/elasticsearch-8.12.0). Ce répertoire est appelé Répertoire d'accueil Elasticsearch.

Étape 2 : Configuration d'un cluster à nœud unique (par défaut pour le développement)

Par défaut, lorsque vous exécutez Elasticsearch pour la première fois, il tente de démarrer en tant que cluster à nœud unique. Cependant, les versions modernes nécessitent souvent une configuration explicite, notamment en ce qui concerne la sécurité et les paramètres de mémoire, même pour le développement local.

Les fichiers de configuration sont situés dans le répertoire config/ au sein de votre répertoire d'accueil Elasticsearch.

Configuration essentielle (config/elasticsearch.yml)

Le fichier de configuration principal est elasticsearch.yml. Pour une configuration locale à nœud unique, vous devez configurer au moins le nom du cluster et le nom du nœud.

# Configuration du cluster
cluster.name: dev-cluster

# Configuration du nœud
node.name: node-1

# Paramètres réseau (utiliser localhost pour le développement)
network.host: 127.0.0.1

# Port HTTP (par défaut 9200)
http.port: 9200

# Important pour le développement : Désactiver la sécurité initialement (À utiliser avec prudence en production !)
xpack.security.enabled: false

Avertissement sur la sécurité : Désactiver xpack.security.enabled est courant pour la configuration de développement initiale afin de simplifier les tests. Ne jamais exécuter cette configuration dans un environnement accessible publiquement. Pour les versions modernes d'Elasticsearch (7.x+), vous devrez souvent exécuter des commandes de configuration initiales pour générer des mots de passe si la sécurité reste activée.

Démarrage du nœud unique

Accédez à la racine de votre répertoire extrait et exécutez le script de démarrage approprié. Sous Linux/macOS :

./bin/elasticsearch

Sous Windows (en utilisant PowerShell) :

.\bin\elasticsearch.bat

Attendez que les journaux indiquent que le nœud a démarré avec succès, affichant généralement un message comme started.

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

Une fois le processus en cours d'exécution, vous pouvez vérifier l'état du cluster à l'aide de curl sur le port HTTP par défaut (9200).

Vérification de la santé du cluster

Cette commande vérifie la santé globale du cluster :

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

Extrait de sortie attendu :

epoch      timestamp cluster     status node.total node.data shards prio initialized
1678886400 10:00:00  dev-cluster green    1          1        0   0           1

Le champ status doit être green, indiquant un cluster à nœud unique sain.

Vérification des informations sur les nœuds

Vous pouvez également vérifier les informations sur les nœuds :

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

Étape 4 : Configuration d'un cluster multi-nœuds (pour des tests réalistes)

Pour un développement ou des tests plus réalistes d'allocation de shards, vous avez besoin d'au moins deux nœuds. Cela nécessite l'exécution de plusieurs instances séparées d'Elasticsearch, chacune avec des configurations distinctes.

Structure de répertoires

Créez des répertoires séparés pour chaque nœud dans votre zone de travail principale (par exemple, es_data/node1, es_data/node2). Copiez la distribution Elasticsearch de base dans chacun de ces répertoires, ou liez-les à l'installation principale.

Différences de configuration des nœuds

Pour chaque nœud, créez un fichier config/elasticsearch.yml unique :

Configuration du nœud 1 (es_data/node1/config/elasticsearch.yml)

cluster.name: dev-cluster
node.name: node-1
network.host: 127.0.0.1
http.port: 9200
path.data: node1_data  # Chemin de données unique
xpack.security.enabled: false
# Cette ligne indique au nœud 1 comment trouver les autres membres
cluster.initial_master_nodes: ["node-1", "node-2"]

Configuration du nœud 2 (es_data/node2/config/elasticsearch.yml)

cluster.name: dev-cluster
node.name: node-2
network.host: 127.0.0.1
http.port: 9201  # Doit utiliser un port HTTP différent
path.data: node2_data  # Chemin de données unique
xpack.security.enabled: false
# Cette ligne indique au nœud 2 comment trouver les autres membres
cluster.initial_master_nodes: ["node-1", "node-2"]

Démarrage du cluster multi-nœuds

  1. Démarrer le nœud 1 : Accédez à es_data/node1 et exécutez ./bin/elasticsearch.
  2. Démarrer le nœud 2 : Accédez à es_data/node2 et exécutez ./bin/elasticsearch.

Vérification du cluster multi-nœuds

Vérifiez le nombre de nœuds à l'aide de l'API sur tout port HTTP en cours d'exécution (par exemple, 9200) :

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

Extrait de sortie attendu :

ip           heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
127.0.0.1    15           50       0   0.01    0.02    0.01    mdi        *      node-1
127.0.0.1    16           51       0   0.00    0.01    0.01    mdi        -      node-2

Si vous voyez deux entrées sous name, votre cluster multi-nœuds est correctement formé.

Bonnes pratiques pour les environnements de développement

  • Utiliser des chemins de données dédiés : Configurez toujours path.data explicitement pour chaque nœud, en particulier dans les configurations multi-nœuds, afin d'éviter la contamination accidentelle des données entre les instances.
  • Ports éphémères : Utilisez des ports HTTP uniques (http.port) pour chaque nœud afin qu'ils n'entrent pas en conflit lorsqu'ils s'exécutent localement.
  • Verrouillage de la mémoire : Pour le développement, assurez-vous de ne pas rencontrer de limitations de taille de tas. Si vous rencontrez des erreurs de démarrage liées à la mémoire, vous devrez peut-être ajuster la taille du tas JVM dans le fichier jvm.options (bien que les valeurs par défaut soient généralement suffisantes pour les tests de base).

Prochaines étapes : Indexation des données

Une fois votre cluster en cours d'exécution, la prochaine étape logique consiste à créer un index et à mapper les paramètres. Par exemple, pour créer un index simple nommé products :

curl -X PUT "http://localhost:9200/products?pretty"

Cette configuration fondamentale vous permet de commencer à interagir avec Elasticsearch à l'aide de bibliothèques clientes ou de Kibana.