Elasticsearch est un moteur de recherche et d'analyse de données distribué, très utilisé pour indexer et interroger des volumes importants de données. Maintenir la continuité de service impose de déployer Elasticsearch en cluster haute disponibilité (HA).
Prérequis
- Au moins 3 serveurs (VM ou physiques)
- 8 Go de RAM minimum par nœud, CPU récent
- Connexion réseau rapide et stable entre les nœuds
Note : Elasticsearch 8.x inclut son propre JDK bundled. Aucune installation Java séparée n'est requise.
Architecture recommandée
- 3 nœuds master-eligible pour garantir le quorum
- 2+ nœuds data pour répartir la charge et la redondance
- 1 nœud client/ingest pour l'accès applicatif (facultatif)
- Réplication des shards (indice par défaut : 1 réplica)
Installation
1. Ajout du dépôt officiel
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg
sudo apt-get install apt-transport-https
echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list
sudo apt update && sudo apt install elasticsearch -y
2. Configuration du cluster (/etc/elasticsearch/elasticsearch.yml)
cluster.name: 'mon-cluster-ha'
node.name: 'es-node-1'
network.host: 0.0.0.0
discovery.seed_hosts: ['ip_node_1', 'ip_node_2', 'ip_node_3']
cluster.initial_master_nodes: ['es-node-1', 'es-node-2', 'es-node-3']
node.roles: [master, data]
- Adapter
node.rolespour chaque serveur selon le rôle.
3. Optimisation de la mémoire
# /etc/elasticsearch/jvm.options.d/jvm.options
-Xms8g
-Xmx8g
4. Démarrage et test
sudo systemctl enable --now elasticsearch
curl http://localhost:9200/_cluster/health?pretty
- Le statut
greenindique un cluster sain.
Déploiement de la haute disponibilité
- Les données sont répliquées sur plusieurs nœuds (sharding + replication)
- Si un nœud tombe, l'accès reste possible via les autres nœuds
- Prévoyez un load balancer (HAProxy, Nginx) pour accéder à l'API de manière tolérante aux pannes
Exemple de configuration HAProxy
Pour une implémentation complète d'un load balancer, consultez notre guide sur HAProxy.
frontend es_api
bind *:9200
default_backend es_nodes
backend es_nodes
balance roundrobin
server es1 10.0.0.1:9200 check
server es2 10.0.0.2:9200 check
server es3 10.0.0.3:9200 check
Bonnes pratiques
- Sécurisez le cluster (TLS, mots de passe, X-Pack Security)
- Surveillez l'état avec Kibana ou Prometheus
- Sauvegardez les snapshots via ILM (Index Lifecycle Management) et SLM (Snapshot Lifecycle Management) intégrés
- Ne laissez pas de nœud master seul (toujours un nombre impair)
- Documentez la procédure de restauration
Avantages
- Scalabilité horizontale simple
- Reprise automatique après incident
- Performances élevées pour la recherche temps réel
Limites
- Nécessite une bonne gestion des ressources système
- La cohérence dépend du quorum (attention aux split-brain)
- Un cluster sous-dimensionné peut perdre des données lors d'une panne
Conclusion
Un cluster Elasticsearch en haute disponibilité tient la résilience et la continuité de service à mesure que vos volumes de recherche, d'analytics et de logs grandissent.
Complétez votre infrastructure avec une stack monitoring Prometheus pour superviser votre cluster et un reverse proxy Nginx pour sécuriser l'accès à Elasticsearch.


