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

6 minuto de leitura
0

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 -XGET "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 -XGET "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 -XGET "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 -XGET "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": "repository_exception",
            "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 "https://domain-endpoint/_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.


Informações relacionadas

Como melhorar a performance de indexação em meu cluster do Amazon OpenSearch Service?

AWS OFICIAL
AWS OFICIALAtualizada há 3 anos