Équilibrage de charge du cluster OpenSearch avec HAProxy

Introduction

Ce document décrit la configuration d'un cluster OpenSearch équilibré à l'aide de HAProxy.

Installation et configuration du cluster OpenSearch

Pour l'installation et la configuration d'un cluster OpenSearch, nous suivrons la documentation officielle disponible à l'adresse suivante :

Configuration d'un cluster OpenSearch pour Pandora FMS

Une fois cette opération terminée, vous disposerez d'une architecture multi-nœuds avec un cluster fonctionnel. À titre d'exemple d'architecture, nous décrirons un cluster à 3 nœuds, par exemple :

  • os-node1
  • os-node2
  • os-node3

Installation et configuration de HAProxy

Sur une autre machine, nous allons installer et configurer le répartiteur HAProxy.
Dans notre cas, nous allons le faire sur la même machine où se trouve le nœud Pandora FMS avec le système d'exploitation Rocky Linux 9. Cependant, il peut s'agir d'une machine distincte à cette fin.

Nous allons installer les paquets HAProxy et Vim pour modifier les fichiers de configuration (s'il s'agit d'un nœud Pandora FMS, Vim devrait déjà être installé par défaut).

dnf install -y haproxy vim

Une fois installé, nous ferons une copie du fichier de configuration HAProxy par défaut.

cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.default

Nous allons maintenant modifier le fichier /etc/haproxy/haproxy.cfg avec la configuration suivante :

global
   #log /dev/log local0
   log /dev/log local1 notice
   maxconn 4096
   user haproxy
   group haproxy
   daemon
   tune.ssl.default-dh-param 2048

defaults
   log     global
   mode    http
   #option  httplog
   option  dontlognull
   timeout connect 5s
   timeout client  30s
   timeout server  30s
   retries 3

# ====================================
# Frontend -- HTTP 
# ====================================
frontend opensearch_frontend
   #bind *:9200
   bind *:9200 ssl crt /etc/haproxy/certs/haproxy.pem
   default_backend opensearch_backend

# ====================================
# Backend -- Nodos HTTPS con auth
# ====================================
backend opensearch_backend
   balance roundrobin
  

   # Conectar a backends HTTPS
   server node1 <ip-node1>:9200 ssl verify none check
   server node2 <ip-node2>:9200 ssl verify none check
   server node3 <ip-node3>:9200 ssl verify none check

# ====================================
# Stats page optional
# ====================================
listen stats
   bind *:8404
   mode http
   stats enable
   stats uri /haproxy?stats
   stats refresh 10s
   stats auth admin:Pandor4!

Remplacez <ip-nodex> par l'adresse IP de chaque nœud OpenSearch de notre cluster et ajoutez d'autres nœuds en suivant le même format si vous disposez d'un cluster plus important.
Enregistrez et quittez.

Il s'agit d'un fichier de configuration de référence, certaines options peuvent donc être configurées en fonction des besoins de l'environnement, telles que les délais d'attente, les tentatives de reconnexion ou la vérification des certificats SSL.

Stats page

Nous avons ajouté une URL de statistiques à la configuration, qui sera utile pour surveiller l'état de HAProxy. Cette option est facultative et peut être désactivée en supprimant le bloc commençant par Stats page optional (Page de statistiques facultative).

Il est également possible de restreindre l'accès en limitant l'adresse IP exposée, en modifiant le port ou en changeant les identifiants d'accès.
Dans notre cas, le site web statics restera à l'adresse

http://<nodo.pandorafms>:8404/haproxy?stats

Avec les informations d'identification admin:Pandor4!.

Certificat pour HTTPS HAProxy

Comme nous pouvons le voir, nous faisons référence à un certificat.

bind *:9200 ssl crt /etc/haproxy/certs/haproxy.pem

dans le fichier de configuration. En production, il est préférable d'utiliser un certificat officiel signé par une autorité de certification de confiance. Pour les tests en laboratoire, nous utiliserons un certificat auto-généré que nous créerons à l'aide des commandes suivantes :

sudo mkdir -p /etc/haproxy/certs

# Generate private key and self-signed certificate
sudo openssl req -x509 -nodes -days 365 \
   -newkey rsa:2048 \
   -keyout /etc/haproxy/certs/haproxy.key \
   -out /etc/haproxy/certs/haproxy.crt \
   -subj "/CN=haproxy.local"

Nous allons maintenant créer un fichier .pem en concaténant la clé et le certificat. Si vous utilisez un certificat valide, les étapes seront similaires, mais vous utiliserez les fichiers de certificat.

# Combine certificate and key into a single file (required by HAProxy)
sudo cat /etc/haproxy/certs/haproxy.key /etc/haproxy/certs/haproxy.crt > /etc/haproxy/certs/haproxy.pem

Nous avons redémarré le service HAProxy.

systemctl restart haproxy

Nous vérifions que nous pouvons attaquer les nœuds OpenSearch à l'aide du protocole HTTPS en exécutant depuis le terminal du nœud sur lequel nous avons installé HAProxy :

curl -XGET -ku admin:'P4nd0r4!FMS' "https://127.0.0.1:9200/_cat/nodes?v"

Si nous effectuons quelques appels à la racine de l'API, nous pouvons vérifier que les appels sont équilibrés entre les nœuds.

curl -XGET -ku admin:'P4nd0r4!FMS' "https://127.0.0.1:9200/

Configuration dans la console Pandora FMS

HAProxy peut se trouver dans n'importe quelle autre instance, mais pour éviter d'avoir à ajouter d'autres machines à notre cluster, nous l'avons installé directement sur le nœud Pandora FMS lui-même. Nous utiliserons donc localhost pour notre configuration. Cependant, s'il a été configuré sur une autre machine, vous devez utiliser l'adresse IP de cette machine.

Accédez à la console Pandora FMS, à la section des paramètres Management → Settings → System Settings → Log collector, et remplissez les champs obligatoires, en activant Utiliser HTTPS si vous avez configuré un certificat.

Nous verrons apparaître une coche verte indiquant que nous avons configuré et connecté notre OpenSearch à Pandora FMS.

← Retour à l'index de la documentation de Pandora FMS