Por que meu cluster do Amazon OpenSearch Service está com o status vermelho ou amarelo?

9 minuto de leitura
0

Meu cluster do Amazon OpenSearch Service está em um status de cluster vermelho ou amarelo.

Breve descrição

A guia Monitoring (Monitoramento) no console do OpenSearch Service indica o status do índice menos íntegro em seu cluster. Um status de cluster que mostra um status vermelho não significa que seu cluster está inativo. Esse status indica que pelo menos um fragmento primário e suas réplicas não estão alocados para um nó. Se o status do cluster mostrar um status amarelo, os fragmentos primários de todos os índices serão alocados aos nós do cluster. No entanto, um ou mais fragmentos de réplica não são alocados para nenhum dos nós.

Observação: não reconfigure seu domínio até resolver primeiro o status do cluster vermelho. Se você tentar reconfigurar seu domínio quando ele estiver em um status de cluster vermelho, ele poderá ficar preso no estado “Em processamento”. Para obter mais informações sobre clusters presos em um estado “Processing”, consulte Por que meu domínio do Amazon OpenSearch Service está preso no estado "Em processamento"?

Para saber por que seu cluster pode entrar em um status vermelho, consulte Status de cluster vermelho.

Observação: em alguns casos, talvez você consiga resolver o status do cluster vermelho excluindo e restaurando o índice a partir de um snapshot automatizado.

Para saber por que seu cluster pode inserir um status amarelo, consulte Status de cluster amarelo.

Observação: se o status do seu cluster amarelo não se resolver sozinho, você pode resolver o status atualizando as configurações do índice ou redirecionando manualmente os fragmentos não atribuídos. Se o status do seu cluster amarelo não se resolver automaticamente, identifique e solucione a causa raiz. Para evitar o status de cluster amarelo, aplique as melhores práticas de integridade do cluster.

Resolução

Identifique a causa de seus fragmentos não atribuídos

Você pode usar um runbook de automação do AWS Systems Manager ou comandos manuais de curl para identificar a causa de seus fragmentos não atribuídos.

Use o runbook de automação

Navegue até o cluster AWSSupport-TroubleshootoOpenSearchredYellowCluster no console do AWS Systems Manager. Em seguida, siga estas etapas para configurar a automação.

Use comandos curl

Para identificar os fragmentos não atribuídos, execute as seguintes etapas:

  1. Liste o fragmento não atribuído:

    $ curl -XGET 'domain-endpoint/_cat/shards?h=index,shard,prirep,state,unassigned.reason' | grep UNASSIGNED
  2. Recupere os detalhes do motivo pelo qual o fragmento não está atribuído:

    $ 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) Para obter um status de cluster vermelho, exclua os índices de preocupação e identifique e resolva a causa raiz:

    curl -XDELETE 'domain-endpoint/<index names>'
  4. Em seguida, identifique os snapshots disponíveis e restaure seus índices a partir de um instantâneo:

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

Para o status de cluster amarelo, resolva a causa raiz para que seus fragmentos sejam atribuídos.

Solucionar problemas do status do seu cluster vermelho ou amarelo

Não há nós suficientes para alocar para os fragmentos

Um fragmento de réplica não será atribuído ao mesmo nó de seu fragmento primário. Um cluster de nó único com fragmentos de réplica sempre é inicializado com o status de cluster amarelo. Os clusters de nó único são inicializados dessa forma porque não há outros nós disponíveis aos quais o OpenSearch Service possa atribuir uma réplica.

Também há um limite padrão de “1.000" para a configuração cluster.max_shards_per_node para as versões 7.x e posteriores do OpenSearch Service. É uma prática recomendada manter a configuração cluster.max_shards_per_node com o valor padrão de “1000". Se você definir os filtros de alocação de fragmentos para controlar como o OpenSearch Service aloca fragmentos, o fragmento pode ficar sem atribuição por não ter nós filtrados suficientes. Para evitar essa escassez de nós, aumente sua contagem de nós. Verifique se o número de réplicas para cada fragmento primário seja menor que o número de nós de dados. Você também pode reduzir o número de fragmentos de réplica. Para obter mais informações, consulte Dimensionamento de domínios do OpenSearch Service e Desmistificar a alocação de fragmentos do OpenSearch Service.

Pouco espaço em disco ou distorção do disco

Se não houver espaço em disco suficiente, seu cluster poderá inserir um status de integridade vermelho ou amarelo. Deve haver espaço em disco suficiente para acomodar fragmentos antes que o OpenSearch Service distribua os fragmentos.

Para verificar quanto espaço de armazenamento está disponível para cada nó em seu cluster, use a seguinte sintaxe:

$ curl domain-endpoint/_cat/allocation?v

Para obter mais informações sobre problemas de espaço de armazenamento, consulte Como soluciono problemas de pouco espaço de armazenamento no meu domínio do OpenSearch Service?

A forte distorção do disco também pode causar problemas de pouco espaço de armazenamento para alguns nós de dados. Se você decidir realocar quaisquer fragmentos, os fragmentos poderão não ser atribuídos quando os fragmentos forem distribuídos. Para resolver esse problema, consulte Como reequilibrar a distribuição desigual de fragmentos em meu cluster do Amazon OpenSearch Service?

As configurações de alocação de fragmentos com base em disco também podem resultar em fragmentos não atribuídos. Por exemplo, se a métrica cluster.routing.allocation.disk.watermark.low estiver definida como 50 GB, a quantidade especificada de espaço em disco deverá estar disponível para alocação de fragmentos.

Para verificar as configurações atuais de alocação de fragmentos com base em disco, use a seguinte sintaxe:

$ curl -XGET domain-endpoint/_cluster/settings?include_defaults=true&flat_settings=true

Para resolver seus problemas de espaço em disco, considere as seguintes abordagens:

  • Exclua quaisquer índices indesejados para clusters amarelos e vermelhos.
  • Excluir índices vermelhos para clusters vermelhos
  • Aumente o volume do EBS.
  • Adicione mais nós de dados.

Observação: não faça nenhuma alteração na configuração do seu cluster quando ele estiver em um status de integridade vermelho. Se você tentar reconfigurar seu domínio quando ele estiver em um status de cluster vermelho, ele poderá ficar preso no estado “Em processamento”.

Alta pressão de memória JVM

Cada alocação de fragmentos usa CPU, espaço na pilha e recursos de disco e rede. Níveis consistentemente altos de pressão de memória da JVM podem levar a uma falha na alocação de fragmentos. Por exemplo, se a pressão da memória JVM exceder 95%, um disjuntor principal da memória será acionado. O segmento de alocação é então cancelado, deixando os fragmentos sem atribuição.

Para resolver esse problema, primeiro reduza o nível de pressão da memória da JVM. Depois que a pressão de memória da JVM for reduzida, considere estas dicas adicionais para trazer seu cluster de volta a um status de integridade verde:

  • Aumente o valor padrão de nova tentativa do fragmento de "5" ou superior.
  • Desative e ative o fragmento de réplica.
  • Repita manualmente os fragmentos não atribuídos.

Exemplo de API para aumentar o valor da nova tentativa:

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

Para obter mais informações sobre como reduzir a pressão de memória da JVM, consulte Como soluciono problemas de alta pressão de memória de JVM no meu cluster do OpenSearch Service?

Falha no nó

Quando seu cluster sofre uma falha de nó, os fragmentos alocados para um nó não são atribuídos. Quando não há fragmentos de réplica disponíveis para um determinado índice, até mesmo uma falha em um único nó pode causar um estado de saúde vermelho. Use dois fragmentos de réplica e uma implantação Multi-AZ para proteger seu cluster contra perda de dados devido a falhas de hardware.

Se todos os seus índices tiverem um fragmento de réplica, uma falha em um único nó pode fazer com que seu cluster insira temporariamente um status de integridade amarelo. Se seu cluster inserir temporariamente um status de integridade amarelo, o OpenSearch Service se recuperará automaticamente assim que o nó estiver saudável novamente. Ou, o OpenSearch Service se recuperará quando os fragmentos forem atribuídos a um novo nó.

Verifique suas métricas do Amazon CloudWatch para confirmar falhas nos nós. Para obter mais informações sobre como identificar uma falha de nó, consulte Nós de cluster com falha.

Observação: também é uma prática recomendada atribuir um fragmento de réplica para cada índice ou usar nós primários dedicados e ativar o reconhecimento de zona. Para obter mais informações, consulte Como lidar com falhas no site do Elasticsearch.

Excedeu o número máximo de tentativas

No OpenSearch Service, seu cluster não deve exceder o limite máximo de tempo (5.000 ms) ou o número de novas tentativas (5) para alocação de fragmentos. Se seu cluster atingiu os limites máximos, acione uma alocação de fragmentos manualmente. Para acionar manualmente uma alocação de fragmentos, desative e reative os fragmentos de réplica para seus índices.

Uma alteração na configuração do cluster também pode acionar a alocação de fragmentos. Para obter mais informações sobre alocação de fragmentos, consulte Every shard deserves a home no site do Elasticsearch.

Observação: não é uma prática recomendada acionar manualmente a alocação de fragmentos se seu cluster tiver uma workload pesada. Se você remover todas as suas réplicas de um índice, o índice deverá depender somente de fragmentos primários. Quando um nó falha, seu cluster entra em um status de integridade vermelho porque os fragmentos primários não são atribuídos.

Para desativar um fragmento de réplica, atualize o valor do number_of_replicas para “0":

$ curl -XPUT 'domain-endpoint/<indexname>/_settings' -H 'Content-Type: application/json' -d'{
     "index" : {
          "number_of_replicas" : 0
     }
}

Além disso, verifique se a configuração index.auto_expand_replicas está definida como “false”. Quando seu cluster retornar ao status verde, você poderá definir o valor index.number_of_replicas novamente para o valor desejado para acionar a alocação de fragmentos de réplica. Se a alocação do fragmento for bem-sucedida, seu cluster entrará com um status de integridade verde.

Práticas recomendadas de integridade do cluster

Para resolver seu status de cluster amarelo ou vermelho, considere as seguintes práticas recomendadas:

  • Defina um alarme recomendado do Amazon CloudWatch para AutomatedSnapshotFailure. Com o alarme, você pode garantir que tenha um snapshot disponível para restaurar seus índices quando o cluster entrar no status vermelho.
  • Se seu cluster estiver sob uma workload pesada e sustentada, escale-o. Para obter mais informações sobre como escalar seu cluster, consulte Como posso escalar um domínio do OpenSearch Service?
  • Monitore o uso do disco, a pressão da memória da JVM e o uso da CPU e verifique se eles não estão excedendo os limites definidos. Para obter mais informações, consulte Recommended CloudWatch alarms e Métricas de cluster.
  • Certifique-se de que todos os fragmentos primários tenham fragmentos de réplica para se proteger contra falhas nos nós.

Para obter mais informações, consulte Melhores práticas operacionais para o Amazon OpenSearch Service.