¿Por qué el clúster de Amazon OpenSearch Service está en estado rojo o amarillo?

Actualización más reciente: 30 de julio de 2021

El clúster de Amazon OpenSearch Service (sucesor de Amazon Elasticsearch Service) está en estado de clúster rojo o amarillo. ¿Por qué sucede esto?

Descripción corta

La pestaña Monitoring (Monitoreo) de la consola de OpenSearch Service indica el peor estado del índice del clúster. Un estado de clúster que muestra el estado rojo no significa que el clúster esté inactivo. En cambio, este estado indica que al menos una partición principal y sus réplicas no están asignadas a un nodo. Si el estado del clúster muestra el estado amarillo, las particiones principales de todos los índices se asignan a los nodos del clúster. Sin embargo, las particiones de réplica de al menos un índice no se asignan a ninguno de los nodos.

Nota: No reconfigure su dominio sin antes resolver el estado de clúster rojo. Si intenta reconfigurar su dominio cuando está en estado de clúster rojo, podría quedarse bloqueado en el estado “Processing” (Procesando). Para obtener más información sobre los clústeres bloqueados en el estado “Processing” (Procesando), consulte ¿Por qué mi dominio de Amazon OpenSearch Service está bloqueado en el estado “Processing” (Procesando)?

El clúster puede entrar en el estado rojo por los siguientes motivos:

  • Varios errores de nodos de datos
  • Utilizar una partición corrupta o roja para un índice
  • Alta presión de memoria de la JVM o uso de CPU
  • Espacio en disco reducido o sesgo del disco

Nota: En algunos casos, es posible que pueda resolver el estado rojo del clúster al eliminar y restaurar el índice a partir de una instantánea automatizada.

El clúster puede entrar en estado amarillo debido a los siguientes motivos:

  • Creación de un nuevo índice
  • No hay suficientes nodos para asignar a las particiones o sesgo del disco
  • Alta presión de memoria de la JVM
  • Error de nodo único
  • Se ha superado el número máximo de reintentos de asignación de particiones

Nota: Si el estado amarillo del clúster no se resuelve solo, puede resolverlo si actualiza la configuración del índice o redirecciona manualmente las particiones no asignadas. Si el estado amarillo del clúster no se resuelve automáticamente, identifique y solucione los problemas de la causa raíz. Para evitar el estado amarillo del clúster, aplique las prácticas recomendadas para el estado del clúster.

Resolución

Identificar el motivo de sus particiones sin asignar

Para identificar las particiones no asignadas, lleve a cabo los siguientes pasos:

1.    Listar la partición sin asignar:

$ curl -XGET 'domain-endpoint/_cat/shards?h=index,shard,prirep,state,unassigned.reason' | grep UNASSIGNED

2.    Recupere los detalles de por qué no se ha asignado la partición:

$ curl -XGET 'domain-endpoint/_cluster/allocation/explain?pretty' -H 'Content-Type:application/json' -d'{"index": "<index name>", "shard": <shardId>, "primary":<true or false>}'

3.    (Opcional) Para el estado de clúster rojo, elimine los índices preocupantes e identifique y aborde la causa principal:

curl -XDELETE 'domain-endpoint/<index names>'

A continuación, identifique las instantáneas disponibles y restaure los índices a partir de una instantánea:

curl -XGET 'domain-endpoint/_snapshot?pretty'

Para solucionar el estado amarillo del clúster, aborde la causa raíz de modo que se asignen las particiones.

Solución de problemas de estado rojo o amarillo de clúster

No hay suficientes nodos para asignar a las particiones

Un partición de réplica no se asignará al mismo nodo que su partición principal. Un clúster de nodo único con particiones de réplica siempre se inicializa con el estado de clúster amarillo. Los clústeres de un solo nodo se inician de esta manera porque no hay otros nodos disponibles a los que OpenSearch Service pueda asignar una réplica.

También hay un límite predeterminado de “1000” para la configuración cluster.max_shards_per_node para las versiones 7.x y posteriores de OpenSearch Service. Se recomienda mantener la configuración cluster.max_shards_per_node en el valor predeterminado de “1000”. Si establece filtros de asignación de particiones para controlar cómo OpenSearch Service asigna las particiones, se puede anular la asignación de la partición por no tener suficientes nodos filtrados. Para evitar esta escasez de nodos, aumente el recuento de nodos. Asegúrese de que el número de réplicas de cada partición principal sea inferior al número de nodos de datos. También puede reducir el número de particiones de réplica. Para obtener más información, consulteAjustar el tamaño de los dominios de OpenSearch Service y Desmitificación de la asignación de particiones del servicio OpenSearch.

Espacio en disco reducido o sesgo del disco

Si no hay suficiente espacio en disco, el clúster puede entrar en el estado rojo o amarillo. Debe haber suficiente espacio en disco para acomodar las particiones antes de que OpenSearch Service las distribuya.

Para verificar cuánto espacio de almacenamiento hay disponible para cada nodo del clúster, utilice la siguiente sintaxis:

$ curl domain-endpoint/_cat/allocation?v

Para obtener más información sobre problemas de espacio de almacenamiento, consulte ¿Cómo puedo solucionar un problema de baja capacidad de almacenamiento en mi dominio de Amazon OpenSearch Service?

Un sesgo acusado del disco también puede provocar problemas de espacio de almacenamiento bajo para algunos nodos de datos. Si decide reasignar particiones, las particiones pueden ser desasignadas durante la distribución de particiones. Para resolver este problema, consulte ¿Cómo equilibro la distribución desigual de particiones en el clúster de Amazon OpenSearch Service?

La configuración de asignación de particiones basada en disco también puede dar lugar a particiones sin asignar. Por ejemplo, si la métrica cluster.routing.allocation.disk.watermark.low se establece en 50 GB, la cantidad especificada de espacio en disco debe estar disponible para la asignación de particiones.

Para verificar la configuración actual de la asignación de particiones basada en disco, utilice la siguiente sintaxis:

$ curl -XGET domain-endpoint/_cluster/settings?include_defaults=true&flat_settings=true

Para resolver los problemas de espacio en disco, tenga en cuenta los siguientes enfoques:

  • Elimine los índices no deseados.
  • Escale verticalmente el volumen de EBS.
  • Agregue más nodos de datos.

Alta presión de memoria de la JVM

Cada asignación de particiones utiliza CPU, espacio de pila y recursos de disco y red. Niveles altos y constantes de presión de memoria de la JVM podrían dar lugar a errores en la asignación de particiones. Por ejemplo, si la presión de la memoria de la JVM supera el 95 %, se activará un disyuntor principal de memoria. A continuación, el subproceso de asignación se cancela, dejando las particiones sin asignar.

Para resolver este problema, reduzca primero el nivel de presión de la memoria de la JVM. Una vez que se haya reducido la presión de la memoria de la JVM, tenga en cuenta estos consejos adicionales para que su clúster recupere el estado verde:

  • Aumente el valor de reintento de particiones predeterminado a “5” o más.
  • Desactive y habilite la partición de réplica.
  • Vuelva a intentar asignar manualmente las particiones sin asignar.

Para obtener más información sobre cómo reducir la presión de memoria de la JVM, consulte ¿Cómo puedo solucionar problemas de presión elevada de memoria de la JVM en mi clúster de Amazon OpenSearch Service?

Error de nodo

Cuando el clúster experimenta un error de nodo, se anulan las asignaciones de las particiones asignadas a un nodo. Cuando no hay particiones de réplica disponibles para un índice determinado, incluso un error de un solo nodo puede provocar que el estado sea rojo. Tener dos particiones de réplica y una implementación Multi-AZ protege al clúster contra la pérdida de datos en caso de error de hardware.

Si todos los índices tienen una partición de réplica, un error de un solo nodo puede provocar que el clúster entre temporalmente en estado amarillo. Si el clúster entra temporalmente en el estado amarillo, OpenSearch Service se recuperará automáticamente en cuanto el nodo vuelva a estar en buen estado. O bien, OpenSearch Service se recuperará cuando se asignen particiones a un nuevo nodo.

Puede confirmar los errores de los nodos si consulta las métricas de Amazon CloudWatch. Para obtener más información sobre cómo identificar un error de nodo, consulte Nodos de clúster con errores.

Nota: También es una práctica recomendada asignar una partición de réplica para cada índice o utilizar nodos maestros dedicados y habilitar el reconocimiento de zonas. Para obtener más información, consulte Gestionar los errores en el sitio web de Elasticsearch.

Se ha superado el número máximo de reintentos

En OpenSearch Service, el clúster no debe superar el límite de tiempo máximo (5000 ms) ni el número de reintentos (5) para la asignación de particiones. Si el clúster ha alcanzado los umbrales máximos, debe activar manualmente una asignación de particiones. Para activar manualmente una asignación de particiones, desactive y vuelva a habilitar las particiones de réplica para sus índices.

Un cambio en la configuración del clúster también puede desencadenar la asignación de particiones. Sin embargo, evite realizar cambios en la configuración del clúster cuando este se encuentre en el estado rojo. Para obtener más información sobre la asignación de particioes, consulte Cada partición merece un hogar en el sitio web de Elasticsearch.

Nota: No es recomendable activar manualmente la asignación de particiones si el clúster tiene una gran carga de trabajo. Si elimina todas las réplicas de un índice, el índice debe basarse únicamente en particiones principales. Cuando un nodo falla, el clúster entra en el estado rojo porque las particiones principales se quedan sin asignación.

Para desactivar una partición de réplica, actualiza el valor number_of_replicas a “0”:

$ curl -XPUT 'domain-endpoint/<indexname>/_settings' -H 'Content-Type: application/json' -d'
{
  "index" : {
    "number_of_replicas" : 0
  }
}'

Además, compruebe que la configuración index.auto_expand_replicas esté establecida en “false” (falso). Cuando el clúster vuelva al estado verde, puede volver a establecer el valor index.number_of_replicas en el valor deseado para desencadenar la asignación de particiones de réplica. Si la asignación de particiones se realiza correctamente, el clúster entrará en el estado verde.

Prácticas recomendadas para los estados de clústeres

Para resolver el estado amarillo o rojo del clúster, tenga en cuenta las siguientes prácticas recomendadas:

Para obtener más información sobre las prácticas recomendadas de OpenSearch Service, consulte Prácticas recomendadas de Amazon OpenSearch Service.


¿Le resultó útil este artículo?


¿Necesita asistencia técnica o con la facturación?