¿Por qué se bloqueó mi nodo de Amazon OpenSearch Service?

Última actualización: 30-07-2021

Uno de los nodos de mi clúster de Amazon OpenSearch Service (sucesor de Amazon Elasticsearch Service) está inactivo. ¿Por qué se produjo un error en el nodo y cómo puedo evitar que esto vuelva a suceder?

Descripción breve

Cada nodo de OpenSearch Service se ejecuta en una instancia independiente de Amazon Elastic Compute Cloud (Amazon EC2). Un error en el nodo es una instancia que no responde a las señales de latido de los demás nodos. Las señales de latido son señales periódicas que monitorean la disponibilidad de los nodos de datos del clúster.

Estas son las causas comunes de los nodos de clúster con errores:

  • Presión de memoria elevada de la máquina virtual Java (JVM)
  • Error de hardware

Resolución

Verificación de errores de nodos

1.    Abra la consola de OpenSearch Service.

2.    Elija el nombre de su dominio de OpenSearch Service.

3.    Elija la pestaña Estado del clúster y, a continuación, elija la métrica Nodos. Si el número de nodos es inferior al número que configuró para el clúster, esto indica que un nodo está inactivo.

Nota: la métrica Nodos puede ser inexacta durante los cambios en la configuración del clúster o cualquier mantenimiento rutinario del servicio. Este comportamiento es esperado.

Identificación y solución de problemas de alta presión de memoria de JVM

La presión de memoria de JVM se refiere al porcentaje de montón de Java que se utiliza para todos los nodos de datos de un clúster de OpenSearch Service. La alta presión de memoria de JVM puede provocar un uso elevado de la CPU y otros problemas de rendimiento del clúster.

Los siguientes factores determinan la presión de la memoria JVM:

  • Cantidad de datos del clúster en proporción a la cantidad de recursos.
  • Carga de consultas del clúster.

Esto es lo que sucede a medida que aumenta la presión de la memoria de JVM:

  • Al 75 %: OpenSearch Service desencadena el recolector de basura Concurrent Mark Sweep (CMS). El recolector CMS se ejecuta junto con otros procesos para reducir al mínimo las pausas y las interrupciones. Nota: OpenSearch Service publica varias métricas de recolección de basura en Amazon CloudWatch. Estas métricas pueden ayudar a monitorear el uso de la memoria de JVM. Para obtener más información, consulte Monitoreo de las métricas del clúster con Amazon CloudWatch.
  • Por encima del 75 %: si el recolector CMS no recupera suficiente memoria y el uso permanece por encima del 75 %, la JVM de OpenSearch Service intenta liberar memoria. La JVM de OpenSearch Service también intenta evitar una excepción JVM OutOfMemoryError (OOM) mediante la ralentización o detención de los procesos.
  • Si la JVM no deja de crecer y el espacio no se recupera, entonces la JVM de OpenSearch Service detiene los procesos que intentan asignar memoria. Si se detiene un proceso crítico, se podría producir un error en uno o varios nodos del clúster. Mantener el uso de la CPU por debajo del 80 % es una práctica recomendada.

Para evitar una presión elevada en la memoria de la JVM, siga estas prácticas recomendadas:

  • Evite las consultas en rangos amplios, como las consultas con caracteres comodín.
  • Evite enviar un gran número de solicitudes al mismo tiempo.
  • Asegúrese de tener el número adecuado de particiones. Para obtener más información sobre la estrategia de indexación, consulte Selección del número de particiones.
  • Asegúrese de que las particiones se distribuyan uniformemente entre los nodos.
  • Evite hacer agregaciones en los campos de texto. Esto ayuda a evitar aumentos en los datos de campo. Cuantos más datos de campo tenga, más espacio del montón se consume. Utilice la operación de la API GET _cluster/stats para verificar los datos de campo. Para obtener más información, consulte fielddata en el sitio web de Elasticsearch.
  • Si debe hacer agregaciones en los campos de texto, cambie el tipo de mapeo a palabra clave. Si la presión de la memoria de JVM es demasiado alta, utilice las siguientes operaciones de API para borrar la caché de datos de campo: POST /index_name/_cache/clear (caché de nivel de índice) y POST */_cache/clear (caché de nivel de clúster).
    Nota: Borrar la memoria caché puede interrumpir las consultas que están en curso.

Identificación y solución de problemas de errores de hardware

A veces, los errores de hardware pueden afectar a la disponibilidad de los nodos. Para limitar el impacto de los posibles errores de hardware, verifique lo siguiente:

  • Asegúrese de tener más de un nodo en el clúster. Un clúster de un solo nodo es un punto de error único. No se pueden usar particiones de réplica para hacer copias de seguridad de los datos, porque las particiones primarias y de réplica no se pueden asignar al mismo nodo. Si el nodo se desactiva, puede restaurar los datos a partir de una instantánea. Para obtener más información sobre las instantáneas, consulte Crear instantáneas de índice en Amazon OpenSearch Service. Tenga en cuenta que no puede recuperar ningún dato que no se haya capturado en la última instantánea. Para obtener más información, consulte Ajustar los tamaños de los dominios de OpenSeach Service y Crear y administrar dominios de OpenSearch Service.
  • Asegúrese de tener al menos una réplica. Un clúster multinodo puede experimentar la pérdida de datos si no hay particiones de réplica.
  • Habilite el reconocimiento de zonas. Cuando el reconocimiento de zonas está habilitado, OpenSearch Service lanza nodos de datos en varias zonas de disponibilidad. OpenSearch Services intenta distribuir particiones primarias y sus correspondientes particiones de réplica a diferentes zonas. Si se produce un error en un nodo o zona de disponibilidad, los datos se mantienen disponibles. Para obtener más información, consulte Configurar un dominio Multi-AZ.