¿Por qué no puedo eliminar un índice o actualizar mi clúster de Amazon OpenSearch Service?

Última actualización: 05-08-2021

No puedo eliminar un índice ni actualizar mi clúster de Amazon OpenSearch Service (sucesor de Amazon Elasticsearch Service). ¿Por qué sucede esto?

Descripción breve

Si intenta eliminar un índice o actualizar el clúster de OpenSearch Service, el cambio puede fallar por los siguientes motivos:

  • La instantánea ya está en curso.
  • La instantánea en curso está atascada.
  • La instantánea en curso tiene un clúster en estado rojo.
  • Se agota el tiempo de espera de la instantánea o se produce un error con ella.

Para obtener más información acerca de los errores de actualización de OpenSearch Service, consulte Solución de problemas de una actualización. Para obtener más información acerca del estado rojo de un clúster de OpenSearch Service, consulte Estado rojo del clúster.

Resolución

La instantánea ya está en curso

Mientras una instantánea está en curso, es posible que aparezca alguno de los siguientes mensajes de error:

  • “Prior snapshot operation has not yet completed” (La operación de instantánea anterior aún no se ha completado) (durante la actualización de un clúster)
  • “Cannot delete indices that are being snapshotted” (No se pueden eliminar los índices de los que se están creando instantáneas) (durante la eliminación de un índice)

Si recibió un error, pruebe lo siguiente:

1.    En el caso de dominios cifrados, utilice la siguiente sintaxis para verificar si hay una instantánea automatizada en curso:

curl -X GET  'https://domain-endpoint/_snapshot/cs-automated-enc/_status

2.    En el caso de dominios sin cifrar, utilice la siguiente sintaxis para verificar si hay una instantánea automatizada en curso:

curl -X GET 'https://domain-endpoint/_snapshot/cs-automated/_status'

Si no hay instantáneas en ejecución, aparecerá el siguiente resultado:

{  "snapshots" : [ ]}

Los corchetes vacíos indican si se puede eliminar el índice o realizar una actualización de forma segura. Si OpenSearch Service no puede verificar si hay una instantánea en curso, la operación puede fallar.

La instantánea en curso está atascada

1.    Utilice la siguiente sintaxis de comando para verificar las horas de inicio y finalización de las instantáneas por hora:

curl -X GET  'https://domain-endpoint/_cat/snapshots/cs-automated?v&s=id'

2.    Imprima las horas de inicio mediante un resultado cURL canalizado hacia el comando awk:

curl -X GET  'https://domain-endpoint/_cat/snapshots/cs-automated?v&s=id' |awk -F" " ' { print $4  } '

El resultado indicará las horas en que se produjeron las instantáneas por hora. Por ejemplo, este resultado indica que el resultado se ejecuta alrededor del minuto 52 de cada hora:

22:51:11
23:51:18
00:51:19
01:51:14
02:51:16
03:51:18
04:51:16
05:51:11

3.    Verifique su elegibilidad para la actualización de OpenSearch Service.

Importante: No ejecute la comprobación de elegibilidad de actualización hasta que se complete la instantánea.

Utilice la API snapshot status (de estado de instantáneas) para verificar si la instantánea se completó. La API snapshot status (de estado de instantáneas) devuelve un conjunto vacío cuando se captura la instantánea. Si el estado actual está en curso y no cambia durante un tiempo, es posible que la instantánea esté atascada. Lo mismo se aplica a las instantáneas detenidas que pueden impedir que se tomen otras instantáneas. Si el clúster está en estado rojo o hay un bloque de escritura, borre el estado o el bloque para resolver el error.

Nota: Los datos de la instantánea pueden cambiar después de realizar cambios en la configuración. Por lo tanto, no utilice la instantánea para los trabajos programados.

La instantánea en curso tiene un clúster en estado rojo

1.    Para enumerar solo los nombres de los repositorios registrados en su dominio, use la siguiente sintaxis:

curl -XGET "http://domain-endpoint/_cat/repositories?v&h=id"

2.    Para enumerar los nombres, los tipos y otras configuraciones de los repositorios registrados en su dominio, use la siguiente sintaxis:

curl -XGET "http://domain-endpoint/_snapshot?pretty"
curl -XGET "https://domain-endpoint/_cluster/state/metadata"

3.    Verifique si puede mostrar las instantáneas que se encuentran en cada uno de los repositorios, excluidos los repositorios cs-automated o cs-automated-enc. Si tiene varios repositorios, use un script bash como el siguiente:

#!/bin/bash
repos=$(curl -s https://domain-endpoint/_cat/repositories 2>&1 |grep  -v "cs-automated" | awk '{print $1}')

for i in $repos; do
echo "Snapshots in ... :" $i >>/tmp/snapshot
`curl -s -XGET https://domain-endpoint/_cat/snapshots/$i >> /tmp/snapshot`
\echo "done..."
done

Importante: Las instantáneas atascadas no se pueden eliminar de forma manual del repositorio cs-automated o del cs-automated-enc.

4.    Para ver el resultado en la carpeta /tmp/snapshot, utilice la siguiente sintaxis:

cat /tmp/snapshot

El comando devolverá una respuesta similar a la que figura a continuación:

Snapshots in ... : snapshot-manual-repo
axa_snapshot-1557497454881 SUCCESS 1557639400 05:36:40 1557639405 05:36:45  4.6s  7 31 0 31
2019-05-15                 SUCCESS 1560503610 09:13:30 1560503622 09:13:42 11.8s  4 16 0 16
epoch_test                 SUCCESS 1569151317 11:21:57 1569151335 11:22:15 18.1s 15 56 0 56

El mensaje de error devuelto indica que el bucket de Amazon Simple Storage Service (Amazon S3) ya se ha eliminado y registrado como repositorio de instantáneas:

Snapshots in ... : snapshot-manual-repo
{"error":{"root_cause":[{"type":n","reason":"[snapshot-manual-repo] could not read repository data from index blob"}],"type":"repository_exception","reason":"[snapshot-manual-repo] could not read repository data from index blob","caused_by":{"type":"i_o_exception","reason":"Exception when listing blobs by prefix [index-]","caused_by":{"type":"a_w_s_security_token_service_exception","reason":"a_w_s_security_token_service_exception: User: arn:aws:sts::999999999999:assumed-role/cp-sts-grant-role/swift-us-east-1-prod-666666666666 is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::666666666666:policy/my-manual-es-snapshot-creator-policy (Service: AWSSecurityTokenService; Status Code: 403; Error Code: AccessDenied; Request ID: 6b9374fx-11xy-11yz-ff66-918z9bb08193)"}}},"status":500}

5.    Compruebe que el repositorio de instantáneas manuales se haya eliminado del bucket de Amazon S3:

aws s3 ls | grep -i "snapshot-manual-repo"

Nota: Reemplace snapshot-manual-repo por el nombre de su bucket.

6.    Elimine el repositorio del clúster:

curl -XDELETE "https://domain-endpoint/_snapshot/snapshot-example-manual-repo"

Se agota el tiempo de espera de la instantánea o se produce un error con ella

Si se agota el tiempo de espera de la instantánea o se produce un error con ella, lleve a cabo los pasos que se indican a continuación:

1.    Verifique si puede tomar una instantánea manual. Si recibe un error Can't take manual snapshot (No se puede tomar una instantánea manual), llame a la API _cat/snapshots:

curl -XGET/_cat/snapshots/s3_repository

2.    Reemplace s3_repository por el nombre de su bucket de Amazon S3. Esta sintaxis verifica cuánto tiempo lleva ejecutándose la instantánea actual. Si la duración parece razonable, espere a que se complete la instantánea y, a continuación, intente tomarla de nuevo.

Nota: La duración de la instantánea puede demorar más en función del tamaño de los índices o del consumo de recursos del clúster.

3.    Compruebe el estado de su clúster:

curl -XGET "https://domain-endpoint/_cluster/health?pretty"

Si el estado del clúster es rojo, primero identifique y aborde la causa raíz del estado rojo del clúster. Si OpenSearch Service está reubicando o inicializando particiones, espere a que se complete el proceso antes de configurar cualquier política de acceso. Tenga en cuenta que la reasignación de particiones puede afectar considerablemente los recursos informáticos del clúster. Para obtener más información acerca de la solución de problemas de un clúster rojo, consulte Estado rojo del clúster.


¿Le resultó útil este artículo?


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