Skip to main content

📂 Detall del Servei 🔍 Elasticsearch (es01)

El motor de cerca i analítica central del servidor ymir. Aquest servei gestiona la indexació de dades massives i l'explotació mitjançant scripts de Python i eines de visualització.

Aquest contenidor s'executa en mode root. Queda pendent valorar i migrar-lo a rootless. L'accés exterior es realitza a través del port 8008, protegit pel firewall del host.

A. Cicle de Vida i Reconstrucció

Elasticsearch és un servei exigent en recursos. En cas de recreació o actualització a la versió 8.17.3, s'ha d'utilitzar la següent comanda per mantenir la coherència del clúster i el rendiment de la memòria:

podman run -d \
--name es01 \
--net elastic \
--restart on-failure \
-p 8008:9200 \
-e "discovery.type=single-node" \
-e "ES_JAVA_OPTS=-Xms16g -Xmx16g" \
-e "xpack.security.enabled=false" \
-v /dades/elasticsearch_data:/usr/share/elasticsearch/data:Z \
elasticsearch:8.17.3

Nota d'Arquitectura:

  • Memòria: S'assignen 16 GiB fixos al "Heap" de Java (-Xms16g -Xmx16g) per evitar la fragmentació i pauses del Garbage Collector.
  • Xarxa: Connectat a la xarxa elastic per aïllament i resolució de noms interna.
  • Seguretat: En aquest entorn de laboratori, la seguretat nativa (xpack) està desactivada per simplificar l'accés des de scripts interns de Python.

B. Configuració del Servei (Systemd)

El servei s'automatitza mitjançant la unitat /etc/systemd/system/container-elasticsearch.service.

  • Tipus: simple (amb RemainAfterExit=yes).
  • Dependències: Requereix local-fs.target i el muntatge de /dades.
  • Límits del Sistema: Donat que Elasticsearch obre molts fitxers, el servei hereta els límits de l'usuari jordih (configurats a /etc/security/limits.conf).
[Unit]
Description=Podman container-elasticsearch.service
After=network-online.target local-fs.target
RequiresMountsFor=/dades/elasticsearch_data

[Service]
Environment=PODMAN_SYSTEMD_UNIT=%n
Environment=CONTAINERS_CONF_LOG_LEVEL=error
Restart=on-failure
RestartSec=30s
Type=simple

ExecStartPre=-/usr/bin/podman stop -t 20 es01
ExecStart=/usr/bin/podman --log-level=error start es01
RemainAfterExit=yes

ExecStop=/usr/bin/podman stop -t 20 es01

[Install]
WantedBy=multi-user.target

C. Receptes d'Operació (Cheat Sheet)

Gestió del Servei

  • Estat del servei: systemctl status container-elasticsearch.service
  • Logs del contenidor: podman logs -f es01
  • Reiniciar el motor: systemctl restart container-elasticsearch.service

Salut del Clúster (API)

Des del propi servidor ymir, es pot verificar l'estat d'Elasticsearch:

# Verificar que el node està actiu
curl -X GET "localhost:8008/_cluster/health?pretty"

# Llistar els índexs i l'espai que ocupen
curl -X GET "localhost:8008/_cat/indices?v"

Manteniment de Dades

  • Ocupació en disc: du -sh /dades/elasticsearch_data
  • Persistent Storage: Les dades sobreviuen a la recreació del contenidor gràcies al volum vinculat a /dades/elasticsearch_data.