Configuración de un clúster OpenSearch para Pandora FMS

Introducción

Esta es una guía de configuración para instalar varios nodos de trabajo OpenSearch, de manera opcional con certificados autofirmados y conexión SSL. Se puede partir de un nodo ya existente con datos o un cluster completamente nuevo.

Ha sido probado en:

  1. CentOS® 8.4 y 8.5.
  2. Rocky Linux® 8.4, 8.5, 8.6, 8.7 y 9.5 .
  3. RedHat® 8.5 y 9.5 .

Es recomendable distribuir a Pandora FMS server y OpenSearch en servidores independientes.

Instalación mediante script

El proceso de instalación necesario para cada nodo que trabajará con Pandora FMS se realiza mediante la ejecución (que se puede personalizar) del siguiente comando:

curl -Ssl https://pfms.me/pandorafms-opensearch-el | bash

Variables de entorno por defecto

  • [ “$CLUSTER_NAME” ], valor por defecto: CLUSTER_NAME='pandora_opensearch' .
  • [ “$OPENSEARCH_PASS” ], valor por defecto: OPENSEARCH_PASS=“P4nd0r4!FMS” .
env CLUSTER_NAME="pandora_opensearch" \
OPENSEARCH_PASS="P4nd0r4!FMS" \
bash -c "$(curl -SsL https://pfms.me/pandorafms-opensearch-el)"

Configuración en todos los nodos

Aunque se deben seguir estas instrucciones para todos y cada uno de los nodos, se debe personalizar algunos aspectos para cada uno de ellos: la memoria de cada equipo y si es un nodo ya existente con datos.

  • Desactivar el cortafuegos de red en cada nodo:
systemctl stop firewalld
  • Con el editor de texto favorito se debe abrir el fichero /etc/opensearch/opensearch.yml y efectuar varios cambios.

Comentar (o borrar) la siguiente línea:

discovery.type: single-node                                                    │

Agregar al final del la siguiente línea para deshabilitar de manera temporal la seguridad:

plugins.security.disabled: true

Configurar los discovery hosts por dirección IP o DNS. La línea debe tener la siguiente estructura, sustituyendo, agregando o borrando según cada caso de red y hasta completar todos sus elementos de red:

discovery.seed_hosts: ["172.42.42.101", "172.42.42.102", "172.42.42.103"]

Configurar cada manager host según cada caso de red. La línea debe tener la siguiente estructura, sustituyendo, borrando o agregando cada uno de ellos (se debe colocar el hostname de la máquina que se usa por defecto como indicador de nodo o el identificador de nodo personalizado del YAML, si es el caso):

cluster.initial_cluster_manager_nodes: ["rocky8-node1", "rocky8-node2", "rocky8-node3"]

Se deben guardar los cambios y salir del editor de texto.

  • Configuración de memoria en cada nodo.

La configuración de memoria debe ser inferior a la memoria disponible menos la memoria que necesita el sistema, por lo que si se necesita configurar 4 gigabytes para OpenSearch el sistema debe tener al menos 6 GB (4 para OpenSearch y 2 libres para el sistema).

Hecho este cálculo, se especifica el tamaño de la memoria en el fichero /etc/opensearch/jvm.options, sustituyendo con el valor numérico obtenido:

-Xms4g
-Xmx4g

Se deben guardar los cambios y salir del editor de texto.

  • Borrar directorio de datos en los nodos limpios.

Si el clúster está creciendo a partir de un único nodo con datos, basta con limpiar el directorio de datos para los nuevos nodos, no el que tiene datos.

Detener el servicio OpenSearch y borrar los datos si el nodo es nuevo:

systemctl stop opensearch
rm -rf /var/lib/opensearch/*

Reiniciar el servicio OpenSearch:

systemctl restart opensearch
  • Comprobación de cada nodo localmente:
curl "http://127.0.0.1:9200/_cat/nodes?v"

Se debe obtener un resultado similar a:

Configuración de seguridad para conexión con SSL

  • Activar cortafuego y añadir reglas.
systemctl start firewalld
firewall-cmd --zone=public --add-port=9300/tcp --permanent
firewall-cmd --zone=public --add-port=9200/tcp --permanent  
firewall-cmd --reload
  • Habilitar la seguridad en OpenSearch.

Con el editor de texto favorito abrir el fichero /etc/opensearch/opensearch.yml y establecer el valor a false en la siguiente línea:

plugins.security.disabled: false

Para certificados autofirmados, añadir al final del archivo la siguiente línea:

plugins.security.ssl.transport.enforce_hostname_verification: false

Se deben guardar los cambios y salir del editor de texto.

  • Copia de certificados.

Se utilizarán los certificados autofirmados que se generaron en el paso de instalación. Copiar los certificados del nodo principal a los demás.

En el nodo 1 (sustituir node_n con cada uno de los demás nodos):

tar cvzf certs.tar.gz /etc/opensearch/*.pem
scp certs.tar.gz root@node_n:

Luego ejecutar en cada uno de los demás nodos:

tar xvzf certs.tar.gz
cp etc/opensearch/* /etc/opensearch/

En cada uno de los demás nodos se debe reiniciar el servicio OpenSearch:

systemctl restart opensearch

Verificación de nodos:

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

Se debe hacer una verificación de llamada al cluster similar a la anterior utilizando tanto HTTPS como autenticación con usuario y contraseña.

En este punto se debe tener el cluster OpenSearch con conexión SSL totalmente funcional. Para configurar Pandora FMS con OpenSearch consulte “Recolección y monitorización de logs”.

Volver al índice de documentación de Pandora FMS