¿Por qué mi clúster de Amazon OpenSearch Service aparece en rojo o amarillo?

9 minutos de lectura
0

Mi clúster de Amazon OpenSearch Service tiene un estado de clúster rojo o amarillo.

Descripción breve

La pestaña Monitorización de la consola de OpenSearch Service indica el estado del índice en peor estado del clúster. Un estado de clúster que muestre un estado rojo no significa que el clúster esté inactivo. 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 un estado amarillo, las particiones principales de todos los índices se asignan a los nodos del clúster. Sin embargo, una o más particiones de réplica no están asignadas a ninguno de los nodos.

Nota: No reconfigure su dominio hasta que haya resuelto por primera vez el estado del clúster rojo. Si intenta reconfigurar su dominio cuando está en estado de clúster rojo, es posible que se quede atascado en el estado de «Procesamiento». Para obtener más información sobre los clústeres bloqueados en el estado de «Procesamiento», consulte ¿Por qué mi dominio de OpenSearch Service está atascado en el estado de «Procesamiento»?

Para conocer los motivos por los que su clúster puede entrar en estado rojo, consulte Red cluster status.

Nota: En algunos casos, es posible que pueda resolver el estado del clúster rojo eliminando y restaurando el índice a partir de una instantánea automática.

Para conocer las razones por las que su clúster puede entrar en estado amarillo, consulta Yellow cluster status.

Nota: Si el estado del clúster amarillo no se resuelve por sí solo, puede resolverlo actualizando la configuración del índice o redireccionando manualmente las particiones no asignadas. Si el estado del clúster amarillo no se resuelve automáticamente, identifique y solucione la causa principal. Para evitar el estado amarillo del clúster, aplique las prácticas recomendadas sobre el estado del clúster.

Resolución

Identificar la causa de sus fragmentos no asignados

Puede usar un libro de ejecución de AWS Systems Manager Automation o comandos curl manuales para identificar la causa de los fragmentos no asignados.

Usar el manual de automatización

Navegue hasta el clúster AWSSupport-TroubleshootOpenSearchRedYellowCluster de AWS Systems Manager. A continuación, siga estos pasos para configurar la automatización.

Usar los comandos curl

Para identificar las particiones no asignadas, realice los siguientes pasos:

  1. Enumere 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é la partición no está asignada:

    $ 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) Si el estado del clúster es rojo, elimine los índices de preocupación e identifique y aborde la causa principal:

    curl -XDELETE 'domain-endpoint/<index names>'
  4. A continuación, identifique las instantáneas disponibles y restaure los índices a partir de una instantánea:

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

Si el estado del clúster es amarillo, aborde la causa raíz para que se asignen las particiones.

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

No hay suficientes nodos para asignarlos a las particiones

No se asignará un fragmento de réplica al mismo nodo que su partición principal. Un clúster de un solo nodo con particiones de réplica siempre se inicializa con el estado de clúster amarillo. Los clústeres de nodo único se inicializan de esta manera porque no hay otros nodos disponibles a los que OpenSearch Service pueda asignar a 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 configura filtros de asignación de particiones para controlar la forma en que OpenSearch Service asigna las particiones, la partición puede dejar de estar asignada porque no tiene suficientes nodos filtrados. Para evitar esta escasez de nodos, aumente el número 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, consulte Dimensionamiento de los dominios de OpenSearch Service y Desmitificar la asignación de particiones de OpenSearch Service.

Bajo espacio en disco o sesgo del disco

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

Para comprobar 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 los problemas de espacio de almacenamiento, consulte ¿Cómo soluciono problemas de poco espacio de almacenamiento en mi dominio de OpenSearch Service?

La gran inclinación del disco también puede provocar problemas de poco espacio de almacenamiento en algunos nodos de datos. Si decide reasignar algún fragmento, es posible que este quede sin asignar durante la distribución de la partición. Para resolver este problema, consulte ¿Cómo puedo reequilibrar la distribución desigual de particiones en mi clúster de OpenSearch Service?

La configuración de asignación de particiones basada en discos también puede provocar que no se asignen particiones. Por ejemplo, si la métrica de cluster.routing.allocation.disk.watermark.low está establecida en 50 GB, la cantidad de espacio en disco especificada debe estar disponible para la asignación de particiones.

Para comprobar la configuración actual de 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 sus problemas de espacio en disco, considere los siguientes enfoques:

  • Elimine los índices no deseados de los clústeres amarillos y rojos.
  • Eliminar índices rojos para clústeres rojos
  • Aumente el volumen de EBS.
  • Añada más nodos de datos.

Nota: No realice cambios de configuración en su clúster cuando esté en estado rojo. Si intenta reconfigurar su dominio cuando está en estado de clúster rojo, es posible que se quede atascado en el estado de «Procesamiento».

Alta presión de memoria JVM

Cada asignación de fragmentos utiliza la CPU, el espacio de almacenamiento y los recursos de disco y red. Los niveles altos y constantes de presión en la memoria de la JVM pueden provocar errores en la asignación de particiones. Por ejemplo, si la presión de la memoria de la JVM supera el 95 %, se activa 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 memoria de la JVM, tenga en cuenta estos consejos adicionales para que el clúster vuelva a tener un estado de buen funcionamiento:

  • Aumente el valor predeterminado de reintento de partición de «5» o superior.
  • Desactive y active la partición de réplica.
  • Vuelva a intentar manualmente las particiones no asignadas.

Ejemplo de API para aumentar el valor del reintento:

PUT <index-name>/_settings{
 "index.allocation.max_retries" : <value>
}

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

Fallo de nodo

Cuando el clúster experimenta un error de nodo, las particiones que están asignadas a un nodo quedan sin asignar. Cuando no hay particiones de réplica disponibles para un índice determinado, incluso un fallo de un solo nodo puede provocar un buen estado rojo. Use dos fragmentos de réplica y una implementación Multi-AZ para proteger su clúster contra la pérdida de datos por fallas de hardware.

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

Compruebe las métricas de Amazon CloudWatch para confirmar los errores de los nodos. Para obtener más información sobre cómo identificar un error de nodo, consulte Failed cluster nodes.

Nota: También se recomienda asignar una partición de réplica para cada índice o utilizar nodos principales dedicados y activar el reconocimiento de zonas. Para obtener más información, consulte Cómo sobrellevar 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 iniciar manualmente una asignación de particiones. Para iniciar manualmente una asignación de particiones, desactive y vuelva a activar las particiones de réplica para sus índices.

Un cambio de configuración en el clúster también puede iniciar la asignación de particiones. Para obtener más información sobre la asignación de particiones, consulte Todas las particiones merecen un lugar en el sitio web de Elasticsearch.

Nota: No se recomienda iniciar 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 las particiones principales. Cuando un nodo falla, el clúster pasa a un estado rojo porque las particiones principales quedan sin asignar.

Para desactivar un fragmento de réplica, actualice el valor del número_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». Cuando el clúster vuelva a estar en verde, puede volver a establecer el valor index.number_of_replicas en el valor deseado para iniciar la asignación de particiones de réplicas. Si la asignación de particiones se realiza correctamente, el clúster pasará a un estado verde.

Mejores prácticas de condición de clústeres

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

  • Configure una alarma recomendada de Amazon CloudWatch para AutomatedSnapshotFailure. Con la alarma, puede asegurarse de tener disponible una instantánea para restaurar los índices cuando el clúster entre en estado rojo.
  • Si su clúster está sometido a una carga de trabajo pesada y sostenida, amplíe su clúster. Para obtener más información sobre cómo escalar un clúster, consulte ¿Cómo puedo escalar un dominio de OpenSearch Service?
  • Supervise el uso del disco, la presión de la memoria de la JVM y el uso de la CPU y asegúrese de que no superen los umbrales establecidos. Para obtener más información, consulte las alarmas recomendadas de CloudWatch y las métricas del clúster.
  • Asegúrese de que todas las particiones principales tengan particiones de réplica para protegerse contra los errores de los nodos.

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