Para configurar Elasticsearch en un servidor Linux en 2026, instale Elasticsearch 8.x, ajuste el kernel y los descriptores de archivo, edite el archivo elasticsearch.yml para la red y la seguridad, habilite el servicio systemd, abra los puertos del firewall, verifique con curl sobre TLS y, por último, configure las contraseñas y ajuste el rendimiento (heap, fragmentos y almacenamiento). Los pasos a continuación funcionan en Ubuntu/Debian y RHEL/Rocky/AlmaLinux.
En esta guía paso a paso, aprenderá a configurar Elasticsearch en un servidor Linux desde cero, incluyendo valores predeterminados seguros, conceptos básicos de clústeres y optimización del rendimiento. Ya sea que indexe registros, impulse la búsqueda o cree análisis, este tutorial le ofrece una ruta práctica y lista para producción, alineada con las mejores prácticas de 2026.
Lo que aprenderás
- Instalar Elasticsearch 8.x en Ubuntu/Debian y RHEL/Rocky/AlmaLinux
- Aplicar ajustes esenciales del kernel y límites de Linux
- Configurar elasticsearch.yml para un solo nodo o clúster
- Proteja Elasticsearch con TLS y contraseñas
- Abra el firewall de forma segura y verifique con curl
- Optimice el montón, los fragmentos y el almacenamiento de JVM para mejorar el rendimiento
- Solucionar problemas comunes de arranque y de inicio
Requisitos previos y requisitos del sistema
- Linux: Ubuntu 22.04+/24.04+, Debian 12+, RHEL/Rocky/AlmaLinux 8/9, Amazon Linux 2+
- CPU/RAM: 2+ vCPU, 4–8 GB RAM mínimo (cuanto más, mejor)
- Disco: SSD/NVMe muy recomendado
- Red: Abrir los puertos 9200 (HTTP) y 9300 (transporte para clusters)
- Privilegios: acceso sudo/root
- Java: Elasticsearch 8.x se entrega con un JDK incluido (no se necesita Java por separado)
Instalar Elasticsearch en Ubuntu/Debian (la forma más rápida)
Utilice el repositorio oficial de Elastic APT para la última versión 8.x. Esto garantiza actualizaciones estables y seguridad integrada.
sudo apt update
sudo apt install -y apt-transport-https curl gnupg
curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elastic.gpg
echo "deb [signed-by=/usr/share/keyrings/elastic.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" |
sudo tee /etc/apt/sources.list.d/elastic-8.x.list
sudo apt update
sudo apt install -y elasticsearchInstalar Elasticsearch en RHEL/Rocky/AlmaLinux/Amazon Linux
Utilice el repositorio oficial de YUM/DNF. Los pasos a continuación funcionan con los principales derivados de RHEL.
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
cat <<'EOF' | sudo tee /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-8.x]
name=Elasticsearch repository for 8.x packages
baseurl=https://artifacts.elastic.co/packages/8.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF
sudo dnf install -y elasticsearch || sudo yum install -y elasticsearchAjuste esencial del sistema (necesario para la producción)
Aplique estas configuraciones de kernel y límites para evitar fallas en la verificación de arranque y garantizar un rendimiento estable.
1) Aumentar vm.max_map_count
echo "vm.max_map_count=262144" | sudo tee /etc/sysctl.d/99-elasticsearch.conf
sudo sysctl --system2) Descriptores de archivos y bloqueo de memoria
echo -e "elasticsearch soft nofile 65535nelasticsearch hard nofile 65535nelasticsearch soft memlock unlimitednelasticsearch hard memlock unlimited" |
sudo tee /etc/security/limits.d/50-elasticsearch.conf
# Lock memory in Elasticsearch JVM (avoids swapping)
sudo sed -i 's/^#?bootstrap.memory_lock:.*/bootstrap.memory_lock: true/' /etc/elasticsearch/elasticsearch.ymlAsegúrese de que su unidad systemd permita el bloqueo de memoria (las unidades empaquetadas suelen hacerlo). El intercambio debe estar deshabilitado en los nodos de producción.
sudo swapoff -a
# Optional: make persistent by commenting swap in /etc/fstabConfigurar elasticsearch.yml (nodo único seguro)
Elasticsearch 8 habilita la seguridad por defecto y genera un certificado CA HTTP local. Para un nodo único y seguro, comience con la configuración mínima que se indica a continuación.
sudo cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak
sudo bash -c 'cat > /etc/elasticsearch/elasticsearch.yml' <<'EOF'
cluster.name: youstable-es
node.name: node-1
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
# Bind to specific interface(s); 0.0.0.0 enables remote access
network.host: 0.0.0.0
http.port: 9200
# Single-node discovery mode
discovery.type: single-node
# Security is enabled by default in 8.x
xpack.security.enabled: true
xpack.security.http.ssl:
enabled: true
keystore.path: certs/http.p12
EOFNota: La instalación de paquetes suele ubicar la CA HTTP en /etc/elasticsearch/certs/http_ca.crt y el almacén de claves en /etc/elasticsearch/certs/http.p12. Mantenga los permisos estrictos (pertenecientes al usuario de elasticsearch).
Iniciar Elasticsearch y verificar
sudo systemctl daemon-reload
sudo systemctl enable --now elasticsearch
sudo systemctl status elasticsearch --no-pagerEstablezca o restablezca la contraseña de superusuario elástica integrada y guárdela de forma segura.
# Interactive reset (8.x)
sudo /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elasticVerificar a través de HTTPS utilizando el certificado CA generado.
curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic https://localhost:9200
# Expected: JSON with cluster_name, version.number (8.x), taglineAbra el firewall de forma segura
Exponga solo lo necesario. El puerto 9200 sirve HTTPS; para clústeres multinodo, el transporte usa el 9300.
UFW (Ubuntu/Debian)
sudo ufw allow 9200/tcp # HTTP(S)
sudo ufw allow 9300/tcp # Transport (cluster only)
sudo ufw statusfirewalld (RHEL/Rocky/AlmaLinux)
sudo firewall-cmd --permanent --add-port=9200/tcp
sudo firewall-cmd --permanent --add-port=9300/tcp
sudo firewall-cmd --reloadOpcional: Instalar y conectar Kibana
Kibana ofrece una interfaz de usuario basada en managemento, paneles de control y herramientas de desarrollo.
# Ubuntu/Debian
sudo apt install -y kibana
# RHEL family
sudo dnf install -y kibana || sudo yum install -y kibana
# Configure Kibana
sudo sed -i 's/^#?server.host:.*/server.host: "0.0.0.0"/' /etc/kibana/kibana.yml
sudo sed -i 's|^#?elasticsearch.hosts:.*|elasticsearch.hosts: ["https://localhost:9200"]|' /etc/kibana/kibana.yml
sudo systemctl enable --now kibanaCrear un clúster de varios nodos (descripción general)
Para más de 3 nodos, deberá configurar los hosts de origen, los nodos maestros iniciales y los certificados TLS de la capa de transporte. El esquema a continuación muestra una base segura.
1) Generar certificados de transporte
# On a secure workstation or one node:
sudo /usr/share/elasticsearch/bin/elasticsearch-certutil cert --silent --pem --in instances.yml --out es-certs.zip
# instances.yml example:
# instances:
# - name: node-1
# ip: ["10.0.0.11"]
# - name: node-2
# ip: ["10.0.0.12"]
# - name: node-3
# ip: ["10.0.0.13"]Distribuya el par de certificado/clave correcto a cada nodo (restrinja los permisos) y luego haga referencia a ellos en elasticsearch.yml.
2) Configuración del clúster (edite elasticsearch.yml en cada nodo)
cluster.name: youstable-es
node.name: node-1
network.host: 0.0.0.0
discovery.seed_hosts: ["10.0.0.11","10.0.0.12","10.0.0.13"]
cluster.initial_master_nodes: ["node-1","node-2","node-3"]
xpack.security.enabled: true
xpack.security.transport.ssl:
enabled: true
verification_mode: certificate
key: /etc/elasticsearch/certs/node-1.key
certificate: /etc/elasticsearch/certs/node-1.crt
certificate_authorities: ["/etc/elasticsearch/certs/ca.crt"]
xpack.security.http.ssl:
enabled: true
keystore.path: certs/http.p12Inicie cada nodo y verifique que el estado del clúster esté en verde.
curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic https://10.0.0.11:9200/_cluster/health?prettyMejores prácticas para optimizar el rendimiento
- Tamaño del montón: Establezca Xms=Xmx en ~50% del sistema. RAM, máximo ~31g para conservar los archivos comprimidos.
- Almacenamiento: Utilice unidades SSD/NVMe dedicadas. Evite volúmenes en red para datos principales, a menos que tengan baja latencia.
- Fragmentos: Comience con 1 a 3 fragmentos principales por índice; evite la fragmentación excesiva. Configure las réplicas en al menos 1 en los clústeres.
- Ciclo de vida del índice: utilice ILM para renovar y eliminar índices antiguos (registros, métricas).
- Intervalo de actualización: aumente para una ingesta intensa (por ejemplo, 30 s) para reducir la sobrecarga.
- MMap: Ya configuramos vm.max_map_count. Mantenga los descriptores de archivo altos.
- Ingesta: utilice canalizaciones de ingesta o Logstash/Beats para analizar; mantenga las canalizaciones eficientes.
- Monitoreo: Realice un seguimiento de JVM, GC, índices de aciertos de caché, latencia de E/S y tiempos de consulta a través de Kibana o monitoreo externo.
Establecer el montón de JVM en las instalaciones de paquetes
# Create an override file without editing the main jvm.options
echo "-Xms8g" | sudo tee /etc/elasticsearch/jvm.options.d/heap.options
echo "-Xmx8g" | sudo tee -a /etc/elasticsearch/jvm.options.d/heap.options
sudo systemctl restart elasticsearchComandos comunes y controles de salud
# Cluster health
curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic https://localhost:9200/_cluster/health?pretty
# Node stats (verbose)
curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic https://localhost:9200/_nodes/stats?pretty
# List indices
curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic https://localhost:9200/_cat/indices?v
# Create a test index with sane defaults
curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic -X PUT https://localhost:9200/test-index
-H "Content-Type: application/json"
-d '{"settings":{"number_of_shards":1,"number_of_replicas":0,"refresh_interval":"30s"}}'Copias de seguridad y actualizaciones (lista de verificación de producción)
Instantáneas a S3 (ejemplo)
# Install plugin if not bundled
sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install repository-s3
sudo systemctl restart elasticsearch
# Register repository
curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic -X PUT https://localhost:9200/_snapshot/my_s3_repo
-H "Content-Type: application/json"
-d '{"type":"s3","settings":{"bucket":"my-es-backups","region":"us-east-1"}}'
# Create snapshot
curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic -X PUT https://localhost:9200/_snapshot/my_s3_repo/snap-`date +%F`?wait_for_completion=trueActualizaciones (de la versión 8.x a la más reciente 8.x)
- Lea las notas de la versión y ejecute el Asistente de actualización en Kibana.
- Primero, tome una instantánea. Verifique que la restauración funcione en un entorno de prueba.
- Para los clústeres, realice actualizaciones sucesivas: detenga un nodo, actualice el paquete, inicie, espere a que esté en verde y repita.
- Vuelva a ejecutar cualquier refuerzo personalizado después de las actualizaciones del paquete.
Solución de problemas y registros
- El servicio no se puede iniciar: verifique /var/log/elasticsearch/ y journalctl.
- Comprobaciones de arranque: garantizar vm.max_map_count, memlock, sin intercambio y con permisos correctos.
- Errores de seguridad: Confirme las rutas de CA/almacén de claves y la propiedad de los archivos por parte del usuario de elasticsearch.
- Clúster rojo/amarillo: inspeccione la asignación de fragmentos, las marcas de agua del disco y los registros de nodos.
journalctl -u elasticsearch -e --no-pager
sudo tail -n 200 /var/log/elasticsearch/elasticsearch.logCuándo elegir hosting administrado
Si prefiere centrarse en su aplicación en lugar de en el ajuste de JVM, los fragmentos y TLS, manageLos servidores d pueden ayudar. En YouStable, nuestro VPS optimizado y los servidores dedicados se entregan con almacenamiento SSD/NVMe, red robusta y asistencia opcional para la pila ELK, de modo que obtiene un entorno Elasticsearch seguro y ajustado sin conjeturas.
Preguntas frecuentes: Cómo configurar Elasticsearch en un servidor Linux
¿Es necesario Java para instalar Elasticsearch 8 en Linux?
No. Elasticsearch 8.x incluye un JDK compatible, por lo que no necesita instalar Java por separado. Utilice los paquetes oficiales para garantizar un tiempo de ejecución correcto y actualizaciones sin problemas.
¿Cómo puedo exponer Elasticsearch de forma segura en Internet?
Utilice HTTPS con la CA generada o sus propios certificados, aplique contraseñas y roles seguros, restrinja las IP con un firewall o proxy inverso y nunca ejecute sin seguridad. Considere un WAF y limite la exposición directa siempre que sea posible.
¿Cuál es el tamaño de montón recomendado para Elasticsearch?
Establezca Xms y Xmx en aproximadamente el 50% del sistema. RAMLimitado a cerca de 31 GB para conservar los punteros de objetos comprimidos. Supervise la recolección de basura y la presión de memoria, y luego ajústelo según las cargas de trabajo reales.
¿Cuántos fragmentos debo utilizar por índice?
Empiece con poco. Para la mayoría de los casos de uso, basta con 1 a 3 fragmentos primarios. El exceso de fragmentos desperdicia memoria y manejadores de archivos. Escale los fragmentos según el tamaño de los datos y los patrones de consulta, y utilice ILM para... manage ciclos de vida del índice.
¿Por qué obtengo errores de verificación de arranque al iniciar?
En entornos de producción, Elasticsearch aplica comprobaciones como vm.max_map_count, descriptores de archivo, bloqueo de memoria y ausencia de intercambio. Aplique los pasos de ajuste de esta guía, corrija los permisos y reinicie el servicio.
Conclusión
Ha instalado y configurado Elasticsearch en Linux con seguridad Valores predeterminados, un ajuste adecuado del kernel y una configuración optimizada para producción. Continúe añadiendo Kibana, automatizando las instantáneas y refinando el montón, los fragmentos e ILM. Si necesita ayuda, YouStable, manageservidor d El equipo puede preconfigurar Elasticsearch para su carga de trabajo exacta y su plan de crecimiento.
