Cómo crear un clúster Elasticsearch en AWS

Clase 42 de 52Curso de Big Data en AWS

Resumen

Aprende a desplegar y asegurar un clúster de Elasticsearch en AWS con un enfoque práctico: creación de dominio, elección de instancias, zonas de disponibilidad, cifrado con KMS, control de acceso con Cognito, uso de VPC o acceso público, y manejo de endpoints para Kibana e integraciones. Todo con recomendaciones claras para dimensionamiento, costos y operación sin interrupciones.

¿Cómo crear un dominio de Elasticsearch en AWS paso a paso?

Para iniciar, se busca el servicio de Elasticsearch en la consola de AWS y se crea un nuevo dominio. Se elige el tipo de implementación personalizado para ver cada detalle. La versión soportada por el servicio es 6.4, aunque la versión open source puede ir más adelante.

  • Asigna un nombre al dominio: Platzi Domain.
  • Define zonas de disponibilidad: tres, dos o una. Para productivo, se recomienda tres zonas.
  • Selecciona tipo de instancia: Amazon sugiere series I; también se pueden usar optimizadas en memoria como R4.2xlarge.
  • Ejemplo elegido: I3.2xlarge con tres instancias como nodos de datos.
  • Considera instancias maestras dedicadas: recomendadas cuando el clúster es muy grande. Si se deshabilitan, habrá una maestra por defecto.
  • Costo: con tres instancias, el pricing se triplica frente a una.
  • Almacenamiento: en instancias tipo I viene predeterminado; en tipo R se especifica a detalle.
  • Seguridad: habilita cifrado de nodo a nodo y en reposo; en reposo integra automáticamente con KMS.
  • Ventana horaria: configura la hora preferida para los snapshots automáticos.
  • Opciones avanzadas: se pueden ajustar parámetros de caché para consultas.

Al continuar, se elige el despliegue dentro de una VPC (recomendado) o con acceso público. Con VPC, Amazon sugiere un proxy reverso para consultar Kibana. Si se usa acceso público, lo más recomendado es integrarlo con Amazon Cognito y un pool de usuarios para mayor seguridad.

Para la política de acceso, se parte de una plantilla JSON. Puede configurarse acceso libre al dominio aceptando el riesgo. La política resultante define: efecto permitir, recurso del dominio y acciones sobre el servicio de Elasticsearch. Tras el resumen, se confirma el despliegue. Al finalizar, se entregan dos endpoints: uno para Elasticsearch y otro para Kibana.

¿Qué configuraciones de instancias, almacenamiento y seguridad importan?

El éxito del despliegue depende de un dimensionamiento y controles bien definidos. Estas decisiones impactan desempeño, estabilidad y costos.

  • Tipo de instancia: series I para rendimiento general. Series R optimizadas en memoria. Series M pueden limitar características como cifrado con KMS.
  • Nodos y maestros: comenzar con una instancia maestra y redimensionar al crecer. Para clústeres muy grandes, maestras dedicadas.
  • Almacenamiento: predeterminado en tipo I. En tipo R debe detallarse.
  • Cifrado: habilitar nodo a nodo y en reposo siempre en productivo.
  • Acceso: VPC recomendado; acceso público viable con Cognito para autenticación de usuarios.
  • Costos: más nodos implican pricing proporcionalmente mayor.
  • Integración: Elasticsearch está integrado con Logstash y Kibana para visualización.
  • Variables de capacidad: cantidad de charts, almacenamiento y número de índices definen el dimensionamiento.

¿Cómo operar, monitorear y actualizar el clúster?

Tras el despliegue, se puede observar el estado, nodos y métricas clave. Un ejemplo operativo muestra un clúster con versión 6.3, un único nodo y dos endpoints. Ese endpoint se usa para integrar con Kinesis Firehose o con funciones Lambda para ingesta.

  • Panel del dominio: estado activo, cantidad de nodos y uso de CPU.
  • Índices: visualiza cuántos hay. En un entorno de ejemplo, pueden no existir índices aún.
  • Registros e historial: disponible para auditoría y seguimiento.
  • Actualizaciones: es posible hacer un upgrade domain administrado a versiones más recientes sin downtime de data.
  • Reubicación de datos: antes de actualizar, el dimensionamiento de charts debe estar adecuado para evitar demoras al mover información.

¿Tienes dudas sobre la elección de instancias, seguridad con Cognito o el uso de Kinesis Firehose y Lambda? Comparte tus preguntas y cuéntanos tu escenario para ayudarte a afinar el despliegue.