====== Configuración de un clúster Elasticsearch ======
{{indexmenu_n>37}}
===== Requisitos =====
* Primero debe seguir los pasos de [[:es:documentation:pandorafms:monitoring:09_log_monitoring#configuracion|instalación y configuración en cada nodo]].
* El tamaño mínimo de un clúster de servidores Elasticsearch es de 3 nodos y siempre debe ir creciendo en números impares para poder hacer uso del sistema de //quorum// y garantizar la integridad de los datos.
* Asegúrese de que tiene conectividad entre los 3 nodos y que los puertos 9200 y 9300 son accesibles entre todos y cada uno de los nodos.
Recuerde configurar el cortafuegos (//firewall//) de cada nodo para que permita conexión por dichos números de puertos.
===== Configuración =====
Detenga el servicio Elasticsearch en todos y cada uno de los nodos:
systemctl stop elasticsearch.service
Modifique en el fichero de configuración ''/etc/elasticsearch/elasticsearch.yml'' las siguientes líneas:
#discovery.seed_hosts: ["host1", "host2"]
#cluster.initial_master_nodes: ["host1", "host2"]
//[[:es:documentation:pandorafms:introduction:03_glossary#comentar_o_descomentar_un_parametro|Descomente]]// las líneas y agregue las direcciones IP o URL de cada uno de los nodos :
discovery.seed_hosts: ["host1", "host2", "host3"]
cluster.initial_master_nodes: ["host1", "host2", "host3"]
Ejemplo con direcciones IP:
discovery.seed_hosts: ["172.42.42.101", "172.42.42.102", "172.42.42.103"]
cluster.initial_master_nodes: ["172.42.42.101", "172.42.42.102", "172.42.42.103"]
\\
Asegúrese que la línea ''cluster.initial_master_nodes'' esté definida solo una vez en el fichero de configuración, **en algunos casos la misma línea aparece en dos bloques diferentes del mismo fichero.** \\
Antes de iniciar el servicio, debido a que los nodos se iniciaron por primera vez por sí solos (//standalone//), debe borrarse el contenido de la carpeta data (por defecto ''/var/lib/elasticsearch/'') para poder iniciar por primera vez el clúster. Hágalo con el comando:
rm -rf /var/lib/elasticsearch/*
Ahora es momento de iniciar los servicios en todos y cada uno de los nodos. Inicie y compruebe que se están ejecutando con los comandos:
systemctl start elasticsearch.service && systemctl status elasticsearch.service
Debe obtener una salida similar a:
{{ :wiki:pfms-systemctl_status_elasticsearch.service.png }}
Una vez iniciados los servicios debe confirmar que los 3 nodos están unidos al clúster correctamente, por lo que al ejecutar en cualquiera de los nodos el siguiente comando debe dar la misma respuesta:
curl -XGET http://127.0.0.1:9200/_cat/nodes
{{ :wiki:pfms-elasticsearch-curl-x-get-_cat-nodes.png }}
Vuelva a revisar la configuración del //firewall// siempre tomando en cuanta que los nodos deben comunicarse por los puertos ''9200'' y ''9300'' y que desde el servidor PFMS y la Consola web PFMS debe poder accederse al puerto ''9200'' también. Con estos pasos ya tendrá instalado y configurado el clúster de Elasticsearch para ser usado como motor de almacenamiento de //logs// de Pandora FMS.
===== Modelos de datos y plantillas =====
Antes de poner en producción un entorno, bien sea de un solo nodo o un clúster de datos, se recomienda aplicar las configuraciones correspondientes a este nodo o clúster en función a su utilización. En el caso de los índices generados por **Pandora FMS** la forma más efectiva de hacerlos es definiendo una plantilla (//template//) para definir la configuración de los campos y los datos almacenados.
Las plantillas o //templates// son configuraciones que solo se aplican en el momento de la creación del índice. Cambiar un //template// no tendrá ningún impacto en los índices ya existentes.
* Para crear un ** //template// básico** siga los instrucciones en "[[:es:documentation:pandorafms:monitoring:09_log_monitoring#modelos_de_datos_y_plantillas|Modelos de datos y plantillas para un nodo]]":
* Para definir un **//template// multinodo** debe tener en cuenta la siguiente información:
* Cuando realice la configuración del //template// (formato JSON), **necesita configurar tantos //search// como nodos tenga**, sin embargo para configurar correctamente las réplicas **debe restar 1 al número de nodos del entorno**.
Por ejemplo, en un entorno de Pandora FMS con Elasticsearch con 3 nodos configurados, cuando modifique los campos ''number_of_search'' y ''number_of_replicas'' debe quedar de la siguiente manera:
{
"index_patterns": ["pandorafms*"],
"settings": {
"number_of_shards": 3,
"auto_expand_replicas" : "0-1",
"number_of_replicas" : "2"
},
\\ Esto es una definición muy básica, para poder definir correctamente el dimensionamiento del entorno de Elasticsearch es recomendable tener en cuenta los factores descritos en este artículo:
* [[https://www.elastic.co/blog/how-many-shards-should-i-have-in-my-elasticsearch-cluster|https://www.elastic.co/blog/how-many-shards-should-i-have-in-my-elasticsearch-cluster]]
Desde la línea de comando puede listar los templates del entorno ejecutando:
curl -X GET "localhost:9200/_cat/templates/*?v=true&s=name&pretty"
También puede ver los detalles de un, template, por ejemplo el que hemos creado para pandorafms ejecutando:
curl -X GET "localhost:9200/_template/pandorafms*?pretty"
el cual devolverá en formato JSON la configuración que tenga definida.
Puede realizar estas operaciones a través de la interfaz de Elasticsearch en Pandora FMS utilizando los comandos nativos de Elasticsearch.
* **PUT _template/ {json_data}**: permite introducir los datos del //template// a crear.
* **GET _template/>**: permite visualizar el //template// creado.
{{ :wiki:getinterface.png }}
[[:es:documentation:start| Volver al índice de documentación de Pandora FMS]]