Por que a ação do índice de sobreposição em minha política do ISM continua falhando no Amazon OpenSearch Service?
Desejo usar o Index State Management (ISM) para sobrepor os índices no cluster do Amazon OpenSearch Service. No entanto, meu índice falha ao reverter e recebo um erro. Por que isso está acontecendo e como soluciono?
Breve descrição
Se você recebeu um erro “Failed to rollover index” (Falha de sobreposição de índice), sua ação de sobreposição pode ter falhado por um dos seguintes motivos:
- O destino de sobreposição não existe
- O alias de sobreposição está ausente
- O nome do índice não corresponde ao padrão de índice
- O alias de sobreposição aponta para um alias duplicado em um modelo de índice
- Você atingiu a utilização máxima de recursos no seu cluster
Para solucionar esse problema, use a API explain para identificar a causa do erro que você recebe. Em seguida, confira a sua política do ISM. Para obter mais informações sobre como configurar a ação de sobreposição na sua política do ISM, consulte Como uso o Index State Management (ISM) para gerenciar espaço baixo de armazenamento no Amazon OpenSearch Service?
Observação: a resolução a seguir se aplica somente à API OpenSearch. Para a API herdada da Open Distro, consulte as ISM API operations (operações da API ISM) da Open Distro.
Resolução
Como usar a API explain
Para identificar a causa-raiz do erro “Failed to rollover index” (Falha de sobreposição de índice), use a API explain:
GET _plugins/_ism/explain/logs-000001?pretty
Aqui está um exemplo de saída da API explain:
{ "logs-000001": { "index.plugins.index_state_management.policy_id": "rollover-workflow", "index": "logs-000001", "index_uuid": "JUWl2CSES2mWYXqpJJ8qlA", "policy_id": "rollover-workflow", "policy_seq_no": 2, "policy_primary_term": 1, "rolled_over": false, "state": { "name": "open", "start_time": 1614738037066 }, "action": { "name": "rollover", "start_time": 1614739372091, "index": 0, "failed": true, "consumed_retries": 0, "last_retry_time": 0 }, "retry_info": { "failed": false, "consumed_retries": 0 }, "info": { "cause": "rollover target [rolling-indices] does not exist", "message": "Failed to rollover index [index=logs-000001]" } } }
Esse exemplo de saída mostra que os índices falharam ao se reverter porque o alias de rolagem de destino (rolling-indices) (índices contínuos) não existia.
O destino de sobreposição não existe
Se a API explain retornar a causa “rollover target [rolling-indices] does not exist” (o destino de sobreposição [rolling-indices] não existe), confira se o índice foi submetido à ação de bootstrap com o alias de sobreposição:
GET _cat/aliases
A saída lista todos os aliases atuais no cluster e seus índices associados. Se o ISM indicar que o seu destino de sobreposição não existe, não haverá nome de alias de sobreposição e associação do índice com falha.
Para solucionar a associação de índice com falha, anexe o alias de sobreposição ao índice:
POST /_aliases { "actions": [{ "add": { "index": "logs-000001", "alias": "my-data" } }] }
Depois de anexar o alias de sobreposição, tente executar a ação de sobreposição novamente no índice gerenciado no OpenSearch Service:
POST _plugins/_ism/retry/logs-000001
Para obter mais informações, consulte Retry failed index (Repetir o índice de falha) no site do OpenSearch.
Na sua nova tentativa para o índice com falha, você pode receber uma mensagem de status “Attempting to retry” (Tentando repetir a ação). Se o OpenSearch Service estiver tentando repetir a ação, aguarde a execução do próximo ciclo do ISM. Os ciclos do ISM são executados a cada 30 a 48 minutos. Se a ação de sobreposição for bem-sucedida, você receberá a seguinte mensagem: “Successfully rolled over index” (A sobreposição do índice foi realizada com sucesso).
O alias de sobreposição está ausente
Se a saída da API explain identificar que a causa da sua falha de sobreposição é a ausência de um alias de sobreposição, confira as configurações do índice com falha:
GET <failed-index-name>/_settings
Se você perceber que a configuração index.plugins.index_state_management.rollover_alias está ausente, adicione manualmente a configuração ao seu índice:
PUT /<failed-index-name>/_settings { "index.plugins.index_state_management.rollover_alias" : "<rollover-alias>" }
Use a API retry failed index para tentar executar a operação de sobreposição novamente no índice com falha. Durante a nova tentativa de execução da ação de sobreposição, atualize o seu modelo de política:
PUT _index_template/<template-name>
Certifique-se de usar as mesmas configurações do seu modelo de política existente para que o seu alias de sobreposição seja aplicado aos índices recém-criados. Por exemplo:
PUT _index_template/<existing-template> { "index_patterns": [ "<index-pattern*>" ], "template": { "settings": { "plugins.index_state_management.rollover_alias": "<rollover-alias>" } } }
O nome do índice não corresponde ao padrão de índice
Se a política do ISM indicar que a operação de sobreposição falhou porque o nome do seu índice e o padrão de índice não correspondem, confira o nome do índice com falha. Para sobreposições bem-sucedidas, os nomes dos índices devem corresponder ao seguinte padrão regex:
`^.*-\d+$`
Esse padrão regex estabelece que nomes de índices devem incluir textos acompanhados por um hífen (-) e um ou mais dígitos. Se o nome do índice não seguir esse padrão e o seu primeiro índice tiver dados gravados nele, considere fazer a reindexação dos dados. Ao reindexar os dados, use o nome correto para o seu novo índice. Por exemplo:
POST _reindex { "source": { "index": "<failed-index>" }, "dest": { "index": "my-new-index-000001" } }
Enquanto a API reindex data estiver em execução, desvincule o alias de sobreposição do índice com falha. Em seguida, adicione o alias de sobreposição ao novo índice para que a origem dos dados possa continuar a gravar os dados recebidos em um novo índice.
Por exemplo:
POST /_aliases { "actions": [{ "remove": { "index": "<failed-index>", "alias": "<rollover-alias>" } }, { "add": { "index": "my-new-index-000001", "alias": "<rollover-alias>" } }] }
Anexe manualmente a política do ISM ao novo índice usando a seguinte chamada de API:
POST _plugins/_ism/add/my-new-index-* { "policy_id": "<policy_id>" }
Atualize o modelo existente para refletir o novo nome do padrão de índice. Por exemplo:
PUT _index_template/<existing-template> { "index_patterns": ["<my-new-index-pattern*>"], }
Observação: a sua política do ISM e o alias de sobreposição devem refletir os índices sucessivos criados com o mesmo padrão de índice.
O alias de sobreposição aponta para um alias duplicado em um modelo de índice
Se a API explain API indicar que a sua sobreposição de índice falhou porque um alias de sobreposição aponta para um alias duplicado, confira as suas configurações do modelo de índice:
GET _index_template/<template-name>
Confira se o seu modelo contém uma seção adicional de aliases (com outro alias que aponte para o mesmo índice):
{ "index_patterns": ["my-index*"], "settings": { "index.plugins.index_state_management.rollover_alias": "<rollover-alias>" }, "aliases": { "another_alias": { "is_write_index": true } } }
A presença de um alias adicional confirma o motivo da falha da operação de sobreposição, pois a presença de vários aliases gera falha na sobreposição. Para solucionar essa falha, atualize as configurações do modelo sem especificar nenhum alias:
PUT _index_template/<template-name>
Em seguida, execute a API retry no índice com falha:
POST _plugins/_ism/retry/logs-000001
Importante: se um alias apontar para vários índices, certifique-se de que apenas um índice tenha acesso de gravação habilitado. A API rollover habilita automaticamente o acesso de gravação para o índice para o qual o alias de sobreposição aponta. Isso significa que você não precisa especificar qualquer alias para a configuração “is_write_index” ao executar a operação de sobreposição no ISM.
Você atingiu a utilização máxima de recursos no seu cluster
A utilização máxima de recursos no seu cluster pode ocorrer em função de uma exceção do disjuntor ou da falta de espaço de armazenamento.
Exceção de disjuntor
Se a API explain retornar uma exceção de disjuntor, pode ser que o seu cluster tenha enfrentado pressão alta de memória JVM quando a API rollover foi chamada. Para solucionar problemas de pressão de memória JVM, consulte Como solucionar problemas de alta demanda de memória da JVM em meu cluster do Amazon OpenSearch Service?
Depois que a pressão da memória JVM ficar abaixo de 75%, você poderá repetir a atividade no índice com falha com a seguinte chamada de API:
POST _plugins/_ism/retry/<failed-index-name>
Observação: você pode usar padrões de índice (*) para repetir as atividades em vários índices com falha.
Se enfrentar picos de JVM pouco frequentes no seu cluster, você também poderá update the ISM policy (atualizar a política do ISM) com o bloco a seguir de nova tentativa para a ação de sobreposição:
{ "actions": { "retry": { "count": 3, "backoff": "exponential", "delay": "10m" } } }
Na política do ISM, cada ação tem uma nova tentativa automatizada com base no parâmetro count. Se a operação anterior falhar, confira o parâmetro “delay” para saber quanto tempo você precisará aguardar para o ISM retry the action (repetir a ação).
Falta de espaço de armazenamento
Se o seu cluster estiver ficando sem espaço de armazenamento, o OpenSearch Service acionará um bloco de gravação no cluster, fazendo com que todas as operações de gravação retornem uma ClusterBlockException. Os seus valores de métrica ClusterIndexWritesBlocked mostrarão um valor de “1”, indicando que o cluster está bloqueando solicitações. Assim, qualquer tentativa de criar um novo índice falhará. A chamada da API explain também retornará um erro 403 IndexCreateBlockException, indicando que o cluster está sem espaço de armazenamento. Para solucionar o problema de exceção de bloco do cluster, consulte Como soluciono o erro 403 “index_create_block_exception” no Amazon OpenSearch Service?
Depois que a métrica ClusterIndexWritesBlocked retornar a “0”, tente executar a ação do ISM novamente no índice com falha. Se a pressão de memória JVM exceder 92% por mais de 30 minutos, um bloco de gravação poderá ser acionado. Se você encontrar um bloco de gravação, deverá solucionar o problema da demanda de memória JVM. Para obter mais informações sobre como solucionar a demanda de memória JVM, consulte Como solucionar problemas de alta demanda de memória da JVM em meu cluster do Amazon OpenSearch Service?
Conteúdo relevante
- AWS OFICIALAtualizada há 2 anos
- Como reequilibrar a distribuição desigual de fragmentos em meu cluster do Amazon OpenSearch Service?AWS OFICIALAtualizada há 2 anos