Preparación del Entorno Java (JDK)
Aunque Elasticsearch incluye su propia distribución de Java embebida, en entornos de producción es una práctica recomendada utilizar un JDK gestionado de forma independiente. A continuación, se detalla la instalación de un JDK 8 alternativo.
# Crear directorio base para el JDK
sudo mkdir -p /opt/java/jdk
cd /opt/java/jdk
# Descargar y extraer el paquete (ejemplo con OpenJDK)
sudo tar -xvf openjdk-8u312-linux-x64.tar.gz
# Verificar la ruta exacta de extracción
pwd
Configuración de las variables de entorno a nivel de sistema:
sudo nano /etc/profile.d/java_env.sh
# Agregar las siguientes líneas al archivo:
export JAVA_BASE=/opt/java/jdk/jdk1.8.0_312
export PATH=$JAVA_BASE/bin:$PATH
Aplicar los cambios en la sesión actual y verificar la instalación:
source /etc/profile.d/java_env.sh
java -version
Instalación y Configuración de Elasticsearch
Procederemos a desplegar el motor de búsqueda y análisis. Por razones de seguridad estrictas, Elasticsearch prohíbe su ejecución bajo el usuario root.
1. Descarga y Extracción
sudo mkdir -p /srv/elasticsearch
cd /srv/elasticsearch
# Descargar el paquete tarball usando curl
curl -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.2-linux-x86_64.tar.gz
tar -xzf elasticsearch-7.10.2-linux-x86_64.tar.gz
2. Creación de Usuario Dedicado
Generamos un usuario y grupo específicos para gestionar el servicio y aislar sus permisos:
sudo groupadd elastic_group
sudo useradd -g elastic_group -m -s /bin/bash elastic_usr
sudo chown -R elastic_usr:elastic_group /srv/elasticsearch/elasticsearch-7.10.2
3. Ajustes de Configuración de Elasticsearch
Cambiam al usuario dedicado y preparamos los directorios personalizados para datos y logs:
su - elastic_usr
cd /srv/elasticsearch/elasticsearch-7.10.2
mkdir -p storage/data storage/logs
Editamos el archivo config/elasticsearch.yml para definir los parámetros básicos de red, clúster y almacenamiento:
cluster.name: "mi-cluster-produccion"
node.name: "nodo-01"
path.data: /srv/elasticsearch/elasticsearch-7.10.2/storage/data
path.logs: /srv/elasticsearch/elasticsearch-7.10.2/storage/logs
network.host: 0.0.0.0
http.port: 9200
discovery.type: single-node
4. Optimización del Sistema Operativo
Regresamos al usuario root (usando exit) para ajustar los límites del kernel y del sistema de archivos, requisitos indispensables para el rendimiento óptimo de Elasticsearch.
Editar /etc/security/limits.conf para aumentar los descriptores de archivo y procesos:
elastic_usr soft nofile 65535
elastic_usr hard nofile 65535
elastic_usr soft nproc 4096
elastic_usr hard nproc 4096
Editar /etc/sysctl.conf para aumentar el límite de mapas de memoria virtual:
vm.max_map_count=262144
Aplicar la configuración del kernel de inmediato:
sudo sysctl -p
5. Inicio del Servicio
Como usuario elastic_usr, iniciamos el proceso en segundo plano y generamos un archivo PID para su gestión:
cd /srv/elasticsearch/elasticsearch-7.10.2/bin
./elasticsearch -d -p pid_es.txt
El servicio expondrá el puerto 9300 para comunicación interna del clúster y el 9200 para la API REST. Se puede verificar el estado del nodo mediante:
curl -X GET "http://localhost:9200/"
Despliegue de Kibana
Kibana actúa como la capa de visualización, exploración y gestión para los datos indexados en Elasticsearch dentro del Elastic Stack.
1. Obtención del Binario
sudo mkdir -p /srv/kibana
cd /srv/kibana
curl -O https://artifacts.elastic.co/downloads/kibana/kibana-7.10.2-linux-x86_64.tar.gz
tar -xzf kibana-7.10.2-linux-x86_64.tar.gz
sudo chown -R elastic_usr:elastic_group /srv/kibana/kibana-7.10.2-linux-x86_64
2. Configuración de Kibana
Como usuario elastic_usr, editamos el archivo config/kibana.yml para vincularlo con nuestra instancia de Elasticsearch:
server.port: 5601
server.host: "0.0.0.0"
server.name: "kibana-dashboard"
elasticsearch.hosts: ["http://127.0.0.1:9200"]
i18n.locale: "es"
3. Ejecución del Dashboard
Para iniciar Kibana de forma desacoplada de la terminal actual y asegurar que persista tras cerrar la sesión SSH, utilizamos nohup redirigiendo la salida estándar:
cd /srv/kibana/kibana-7.10.2-linux-x86_64
nohup ./bin/kibana > /srv/kibana/kibana_output.log 2>&1 &
La interfaz web estará disponible en http://[IP_DEL_SERVIDOR]:5601, permitiendo la interacción con los índices, la creación de visualizaciones y la adimnistración general del clúster.