Por que não consigo excluir um índice nem atualizar o meu cluster do Amazon OpenSearch Service?

Data da última atualização: 05/08/2021

Não consigo excluir um índice ou atualizar meu cluster do Amazon OpenSearch Service. Por que isso está acontecendo?

Breve descrição

Se você tentar excluir um índice ou atualizar o seu cluster do OpenSearch Service, a alteração poderá falhar pelos seguintes motivos:

  • O snapshot já está em execução.
  • O snapshot em execução está travado.
  • O snapshot em execução tem um cluster com status vermelho.
  • Tempo limite ou falha do snapshot.

Para obter mais informações sobre falhas na atualização do OpenSearch Service, consulte Troubleshooting an upgrade. Para obter mais informações sobre o status de integridade vermelho de um cluster do OpenSearch Service, consulte Status vermelho do cluster.

Resolução

O snapshot já está em execução

Enquanto um snapshot estiver em execução, pode ser que você receba uma das seguintes mensagens de erro:

  • “A operação de snapshot anterior ainda não foi concluída” (durante uma atualização de cluster)
  • “Não é possível excluir índices que estão sendo capturados” (ao excluir um índice)

Se você recebeu um erro, tente o seguinte:

1.    Para domínios criptografados, use a sintaxe a seguir para conferir se um snapshot automatizado está em execução:

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

2.    Para domínios não criptografados, use a sintaxe a seguir para conferir se um snapshot automatizado está em execução:

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

Se não houver snapshots em execução, a seguinte saída será exibida:

{  "snapshots" : [ ]}

Os colchetes vazios indicam se você pode excluir o índice com segurança ou fazer uma atualização. Se o OpenSearch Service não conseguir conferir se um snapshot está em execução, a operação poderá falhar.

O snapshot em execução está travado

1.    Use a sintaxe de comando a seguir para conferir os horários de início e término de seus snapshots por hora:

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

2.    Imprima os horários de início usando uma saída de cURL redirecionada para o comando awk:

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

A saída indica o horário de ocorrência dos snapshots por hora. Por exemplo, essa saída indica que a sua execução ocorre por volta do 52.º minuto 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.    Confira a elegibilidade de atualização do OpenSearch Service.

Importante: não execute a verificação de elegibilidade do upgrade até que o snapshot seja concluído.

Use a API snapshot status para verificar se o snapshot foi concluído. A API snapshot status retorna um conjunto vazio no momento em que o seu snapshot é capturado. Se o status atual indicar uma execução em andamento e permanecer assim por um tempo, pode ser que o seu snapshot trave. O mesmo se aplica aos snapshots que estão interrompidos, o que pode impedir que outros snapshots sejam tirados. Se o cluster estiver com um status vermelho ou se houver um bloco de gravação, limpe o status ou o bloco para solucionar a falha.

Observação: os dados do snapshot poderão ser alterados depois que as alterações de configurações forem feitas. Portanto, não use o snapshot para trabalhos agendados.

O snapshot em execução tem um cluster com status vermelho

1.    Para listar apenas os nomes de repositórios registrados no seu domínio, use a sintaxe a seguir:

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

2.    Para listar os nomes, tipos e outras configurações do repositório registradas no seu domínio, use a sintaxe a seguir:

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

3.    Confira se você pode listar snapshots em cada um dos repositórios, excluindo o repositório cs-automated ou cs-automated-enc. Se você tiver vários repositórios, use um script bash como este:

#!/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: os snapshots travados não podem ser excluídos manualmente no repositório cs-automated ou cs-automated-enc.

4.    Para exibir a saída na pasta /tmp/snapshot, use a sintaxe a seguir:

cat /tmp/snapshot

O comando retorna uma resposta semelhante a esta:

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

A mensagem de erro retornada indica que o bucket do Amazon Simple Storage (Amazon S3) já foi excluído e registrado como um repositório de snapshots:

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.    Verifique se o repositório de snapshots manuais foi excluído do bucket do Amazon S3:

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

Observação: substitua snapshot-manual-repo pelo nome do seu bucket.

6.    Exclua o repositório do seu cluster:

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

Tempo limite ou falha do snapshot

Se você recebeu um tempo limite ou falha de snapshot, execute as etapas a seguir:

1.    Confira se você pode capturar um snapshot manual. Se você receber um erro Can't take manual snapshot (Não é possível capturar um snapshot manual), chame a API _cat/snapshots:

curl -XGET/_cat/snapshots/s3_repository

2.    Substitua s3_repository pelo nome do seu bucket do Amazon S3. Essa sintaxe confere por quanto tempo o snapshot atual ficou em execução. Se a duração parecer razoável, aguarde a conclusão do snapshot e tente capturá-lo novamente.

Observação: a duração do seu snapshot pode ser um pouco mais longa, dependendo do tamanho dos seus índices ou do consumo de recursos do seu cluster.

3.    Confira o status de integridade do seu cluster:

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

Se o status de integridade do seu cluster estiver vermelho, primeiro identifique e solucione a causa-raiz do status vermelho do seu cluster. Se o OpenSearch Service estiver realocando ou inicializando fragmentos, aguarde a conclusão do processo antes de configurar qualquer política de acesso. Observe que a realocação de fragmentos pode sobrecarregar significativamente os recursos de computação do cluster. Para obter mais informações sobre como solucionar problemas de um cluster vermelho, consulte Status vermelho do cluster.

O Amazon OpenSearch Service é o sucessor do Amazon Elasticsearch Service.


Este artigo ajudou?


Precisa de ajuda com faturamento ou suporte técnico?