Balanceo de clúster OpenSearch con HAProxy
Introducción
Este tema describe la configuración de un cluster de OpenSearch previamente configurado agregando un balanceo de carga y alta disponibilidad usando HAProxy.
Para ello se configurará un servidor primario el cual repartirá las solicitudes que hagan los usuarios de manera equitativa (o como se necesite) entre los nodos del cluster en cuestión. Esto se conoce como balanceo de carga y, además, se pueden añadir servidores secundarios que comenzarán a trabajar si el principal falla: Esta característica es conocida como alta disponibilidad.
Instalación y configuración de clúster OpenSearch
Luego de la instalación y configuración de un cluster OpenSearch siguiendo esta documentación oficial se tendrá una arquitectura multinodo con un cluster plenamente funcional.
Como arquitectura didáctica acá se describe un cluster de tres nodos con los siguientes nombres:
os-node1.os-node2.os-node3.
Instalación y configuración de HAProxy
Es recomendable distribuir a Pandora FMS Server, OpenSearch y HAProxy en servidores independientes.
En este tutorial se instalará y configurará en la propia máquina donde se tiene el nodo de Pandora FMS Server con Rocky Linux 9 como sistema operativo. Recuérdese que en producción debe de ser una máquina independiente para este propósito.
Para instalar el paquete de HAProxy (y el editor de texto Vim, probablemente instalado por defecto en el OS):
dnf install -y haproxy vim
Una vez instalado se hace una copia del fichero de configuración por defecto de HAProxy:
cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.default
Editar dicho fichero con la siguiente configuración:
- /etc/haproxy/haproxy.cfg
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 -- HTTPS node with auth # ==================================== backend opensearch_backend balance roundrobin # Connect to HTTPS backends 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!
Se debe sustituir <ip-nodeX> por la dirección IP de cada nodo de OpenSearch en el cluster. Se deben añadir más nodos siguiendo el mismo formato en caso de tener un cluster más grande. Guardar y salir del editor de texto utilizado.
Esto es un fichero de configuración de referencia, por lo que algunas opciones se pueden configurar en función a las necesidades del entorno, como los timeouts y/o los retries y/o la verificación de los certificados SSL.
Página de estadísticas
En la configuración ha sido expuesta una URL la cual es útil para monitorizar el estado del HAProxy y sus estadísticas. Es opcional y se puede desactivar borrando (o marcando dichas líneas como comentarios) en el bloque a partir de Stats page optional:
- /etc/haproxy/haproxy.cfg
# ==================================== # Stats page optional # ==================================== #listen stats # bind *:8404 # mode http # stats enable # stats uri /haproxy?stats # stats refresh 10s # stats auth admin:Pandor4!
También es posible restringir su acceso limitando la dirección IP expuesta y/o cambiando el puerto y/o cambiando las credenciales de acceso.
En este caso la web de estadísticas quedará en:
http://<pandorafms_node_URL>:8404/haproxy?stats
Para acceder con las credenciales admin:Pandor4!:
Certificado HTTPS para HAProxy
En la siguiente línea de la configuración se hace referencia a un certificado para el cifrado de la transmisión de comandos y datos:
- /etc/haproxy/haproxy.cfg
bind *:9200 ssl crt /etc/haproxy/certs/haproxy.pem
En producción lo ideal es usar un certificado oficial y firmado por un CA confiable.
Para estas pruebas de laboratorio se usará un certificado autogenerado y almacenado con los comandos:
sudo mkdir -p /etc/haproxy/certs cd /etc/haproxy/certs 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"
Ahora se debe combinar el certificado autogenerado con clave en un único archivo (requerido por HAProxy):
sudo \ cat /etc/haproxy/certs/haproxy.key \ /etc/haproxy/certs/haproxy.crt > \ /etc/haproxy/certs/haproxy.pem
Si se utiliza un certificado oficial y firmado por un CA confiable los pasos serán similares, salvo el uso los ficheros del certificado oficial.
Se debe reiniciar el servicio de HAProxy:
systemctl restart haproxy
Para comprobar que se tiene accesibilidad a los nodos de OpenSearch, ejecutando desde la terminal del nodo donde se instaló HAProxy:
curl \ -XGET \ -ku admin:'P4nd0r4!FMS' \ "https://127.0.0.1:9200/_cat/nodes?v"
Si se hace un par de llamadas a la raíz de la API se podrá comprobar que las llamadas se balancean entre nodos:
curl -XGET -ku admin:'P4nd0r4!FMS' "https://127.0.0.1:9200/
Resultados:
Configuración en la Consola web de Pandora FMS
Menú Management → Settings → System Settings → Log collector
.
Los valores mostrados corresponden al caso expuesto donde se instaló HAProxy en el mismo nodo del PFMS Server (en producción se deben colocar los valores reales):
Es recomendable distribuir a Pandora FMS Server, OpenSearch y HAProxy en servidores independientes.
Si aparece la verificación de conexión en color verde (cuadro OpenSearch status) indica que se tiene configurado y conectado OpenSearch y HAProxy con Pandora FMS.




