Comment configurer votre premier cluster Elasticsearch pour le développement
Configurez un cluster Elasticsearch de développement local, vérifiez son état de santé et évitez les erreurs courantes de configuration mono-nœud et multi-nœuds.
Comment configurer votre premier cluster Elasticsearch pour le développement
Configurer votre premier cluster Elasticsearch consiste principalement à choisir une configuration de développement sécurisée et à vérifier que le nœud a bien rejoint le cluster attendu. Une configuration mono-nœud suffit pour des tests de base d'indexation et de recherche ; une configuration multi-nœuds locale vous aide à apprendre la découverte et l'allocation de fragments.
L'accent est mis ici sur le développement local. Ne réutilisez pas ces paramètres assouplis pour un cluster public ou de production.
Prérequis
Avant de commencer, assurez-vous de remplir les conditions préalables suivantes :
- Environnement d'exécution Java : Les distributions récentes d'Elasticsearch incluent un JDK intégré. Si vous utilisez un package ou une distribution qui n'en inclut pas, installez la version Java requise par cette version d'Elasticsearch.
- Téléchargement d'Elasticsearch : Obtenez la distribution binaire de la version souhaitée d'Elasticsearch depuis le site officiel d'Elastic.
- Ressources système : Pour les tests de développement de base, 2 Go de RAM sont généralement suffisants, bien que davantage soit recommandé pour les tests multi-nœuds.
Étape 1 : Téléchargement et extraction d'Elasticsearch
Une fois téléchargé (généralement sous forme de fichier .zip ou .tar.gz), extrayez l'archive dans un répertoire où vous souhaitez héberger vos fichiers de cluster (par exemple, ~/elasticsearch-8.12.0). Ce répertoire est appelé le Répertoire d'accueil d'Elasticsearch.
Étape 2 : Configuration d'un cluster mono-nœud (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 mono-nœud. Cependant, les versions modernes nécessitent souvent une configuration explicite, notamment en ce qui concerne les paramètres de sécurité et de mémoire, même pour le développement local.
Les fichiers de configuration se trouvent dans le répertoire config/ de votre répertoire d'accueil Elasticsearch.
Configuration essentielle (config/elasticsearch.yml)
Le fichier de configuration principal est elasticsearch.yml. Pour une configuration mono-nœud locale, 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 (Utilisez 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é : La désactivation de
xpack.security.enabledest courante pour la configuration de développement initiale afin de simplifier les tests. N'exécutez jamais cette configuration dans un environnement accessible publiquement. Pour les versions modernes d'Elasticsearch (7.x+), vous devrez souvent exécuter des commandes de configuration d'abord pour générer les mots de passe initiaux 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 avec 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 mono-nœud sain.
Vérification des informations du nœud
Vous pouvez également vérifier les informations du nœud :
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 de l'allocation de fragments, vous avez besoin d'au moins deux nœuds. Cela nécessite l'exécution de plusieurs instances distinctes d'Elasticsearch, chacune avec des configurations distinctes.
Structure des répertoires
Créez des répertoires séparés pour chaque nœud dans votre espace de travail principal (par exemple, es_data/node1, es_data/node2). Copiez la distribution de base d'Elasticsearch dans chacun de ces répertoires, ou créez des liens vers 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
transport.port: 9300
path.data: node1_data # Chemin de données unique
xpack.security.enabled: false
discovery.seed_hosts: ["127.0.0.1:9300", "127.0.0.1:9301"]
# 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
transport.port: 9301 # Doit utiliser un port de transport différent
path.data: node2_data # Chemin de données unique
xpack.security.enabled: false
discovery.seed_hosts: ["127.0.0.1:9300", "127.0.0.1:9301"]
# 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
- Démarrez le nœud 1 : Accédez à
es_data/node1et exécutez./bin/elasticsearch. - Démarrez le nœud 2 : Accédez à
es_data/node2et exécutez./bin/elasticsearch.
Vérification du cluster multi-nœuds
Vérifiez le nombre de nœuds à l'aide de l'API sur n'importe quel 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
- Utilisez des chemins de données dédiés : Configurez toujours
path.dataexplicitement pour chaque nœud, en particulier dans les configurations multi-nœuds, pour éviter toute contamination accidentelle des données entre les instances. - Ports uniques : Utilisez des ports HTTP (
http.port) et des ports de transport (transport.port) uniques pour chaque nœud local afin qu'ils n'entrent pas en conflit. - 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
Avec votre cluster en cours d'exécution, l'étape logique suivante 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 de base vous permet de commencer à interagir avec Elasticsearch à l'aide de bibliothèques clientes ou de Kibana.