Por que meu cluster do Amazon OpenSearch Service apresenta status vermelho ou amarelo?

Última atualização: 30/07/2021

Meu cluster do Amazon OpenSearch Service está no status vermelho ou amarelo. Por que isso está acontecendo?

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 exibe status vermelho não significa que seu cluster está inativo. Em vez disso, esse status indica que pelo menos um fragmento primário e suas réplicas não estão alocados em um nó. Se o status de cluster exibir o status amarelo, os fragmentos primários de todos os índices estarão alocados em nós do seu cluster. No entanto, os fragmentos de réplica de pelo menos um índice não estão alocados em nenhum dos nós.

Observação: não reconfigure seu domínio antes de resolver primeiramente o status vermelho de cluster. Se você tentar reconfigurar seu domínio enquanto ele estiver no status vermelho de cluster, ele poderá ficar preso em um estado de “Processamento”. Para mais informações sobre clusters presos em um estado de “Processamento”, consulte Why is my Amazon OpenSearch Service domain stuck in the "Processing" state?

O cluster pode entrar no status vermelho pelos seguintes motivos:

  • Múltiplas falhas de nós de dados
  • Uso de um fragmento vermelho ou corrompido para um índice
  • Alta demanda de memória da JVM ou utilização de CPU
  • Pouco espaço em disco ou distorção do disco

Observação: em alguns casos, talvez seja possível resolver o status vermelho de cluster excluindo e restaurando o índice diretamente de um snapshot automatizado.

O cluster pode entrar no status de integridade amarelo pelos seguintes motivos:

  • Criação de um novo índice
  • Ausência de nós suficientes para alocar aos fragmentos ou distorção de disco
  • Alta demanda de memória da JVM
  • Falha de nó único
  • Exceção ao número máximo de novas tentativas de alocação de fragmento

Observação: se o status amarelo de cluster não apresentar resolução por conta própria, você poderá resolver o status atualizando as configurações de índice ou redirecionando manualmente os fragmentos não atribuídos. Se o status amarelo de cluster não apresentar resolução por conta própria, identifique e solucione o problema da causa raiz. Para evitar o status amarelo de cluster, aplique as melhores práticas para integridade do cluster.

Resolução

Identificar o motivo de seus fragmentos não atribuídos

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 o status vermelho de cluster, exclua os índices em questão e identifique e trate a causa-raiz:

curl -XDELETE 'domain-endpoint/<index names>'

Em seguida, identifique os snapshots disponíveis e restaure os índices diretamente de um snapshot:

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

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

Solução de problemas para status vermelho ou amarelo de cluster

Ausência de nós suficientes para alocar aos fragmentos

Um fragmento de réplica não será atribuído ao mesmo nó do fragmento principal. Um cluster de nó único com fragmentos de réplica sempre inicializa com o status amarelo de cluster. 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 o OpenSearch Service versões 7.x e posteriores. Uma das práticas recomendadas é manter a configuração cluster.max_shards_per_node com o valor padrão de “1000”. Se você definir 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 carência de nós, aumente sua quantidade de nós. Certifique-se de que o número de réplicas para cada fragmento primário seja menor que o número de nós de dados. Também é possível reduzir o número de fragmentos de réplica. Para mais informações, consulte Dimensionar domínios do Amazon OpenSearch Service e Desmistificando alocação de fragmentos no OpenSearch Service.

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

Se não houver espaço suficiente em disco, o cluster poderá entrar no status de integridade vermelho ou amarelo. É necessário que haja espaço suficiente em disco 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 mais informações sobre problemas de espaço de armazenamento, consulte How do I troubleshoot low storage space in my Amazon OpenSearch Service domain?

A distorção pesada do disco também pode levar a um problema de pouco espaço de armazenamento para alguns nós de dados. Se decidir realocar quaisquer fragmentos, os fragmentos podem vir a ficar não atribuídos durante a distribuição do respectivo fragmento. 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 baseada 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 fragmento.

Para verificar as configurações atuais de alocação de fragmentos baseada 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.
  • Amplie o volume do EBS.
  • Adicione mais nós de dados.

Alta demanda de memória da JVM

Cada alocação de fragmento usa CPU, espaço de heap, além de recursos de disco e rede. Níveis consistentemente altos de demanda de memória da JVM podem resultar em uma falha na alocação de fragmento. Por exemplo, se a demanda de memória da JVM exceder 95%, um disjuntor principal de memória será acionado. Posteriormente, a thread de alocação é cancelada, deixando os fragmentos sem atribuição.

Para resolver esse problema, primeiramente reduza o nível de demanda de memória da JVM. Após ter reduzido a demanda de memória da JVM, considere estas dicas adicionais para fazer o cluster retornar ao status verde de integridade:

  • Aumente o valor padrão de nova tentativa de fragmento para “5” ou mais.
  • Desabilite e habilite o fragmento de réplica.
  • Execute uma nova tentativa manual para os fragmentos não atribuídos.

Para mais informações sobre como reduzir a demanda de memória da JVM, consulte How do I troubleshoot high JVM memory pressure on my Amazon OpenSearch Service cluster?

Falha de nó

Quando seu cluster enfrenta uma falha de nó, os fragmentos que estão alocados a um nó perdem a atribuição. Quando não há fragmentos de réplica disponíveis para um determinado índice, até mesmo uma só falha de nó pode resultar em um status vermelho de integridade. A presença de dois fragmentos de réplica e de uma implantação multi-AZ protege seu cluster contra perda de dados durante uma falha de hardware.

Se todos os seus índices tiverem um fragmento de réplica, uma falha única de nó pode fazer com que o cluster entre temporariamente no status de integridade amarelo. Se o cluster entrar temporariamente no status de integridade amarelo, o OpenSearch Service se recuperará automaticamente assim que o nó estiver íntegro novamente. Como alternativa, o OpenSearch Service se recuperará quando os fragmentos forem atribuídos a um novo nó.

Você pode confirmar qualquer falha de nó verificando suas métricas do Amazon CloudWatch. Para 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 principais dedicados e habilitar o reconhecimento de zona. Para mais informações, consulte Copiar com falha no site do Elasticsearch.

O número máximo de novas tentativas foi excedido

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 fragmento. Se o cluster tiver atingido os limites máximos, você deverá acionar a alocação de fragmento manualmente. Para acionar manualmente uma alocação de fragmento, desabilite e reabilite os fragmentos de réplica para seus índices.

Uma alteração de configuração no cluster também pode acionar a alocação de fragmento. No entanto, evite fazer alterações de configuração em seu cluster quando ele estiver com status de integridade vermelho. Para mais informações sobre a alocação de fragmentos, consulte Every shard deserves a home no site do Elasticsearch.

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

Para desabilitar um fragmento de réplica, atualize o valor de 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 o cluster retornar ao status verde de integridade, você pode definir o valor de index.number_of_replicas de volta para o valor desejado a fim de acionar a alocação de fragmentos de réplica. Se a alocação de fragmento for bem-sucedida, o cluster entrará no status verde de integridade.

Práticas recomendadas para integridade do cluster

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

  • Defina um alarme recomendado do Amazon CloudWatch para AutomatedSnapshotFailure. Com o alarme, você pode garantir a disponibilidade de um snapshot para usar na restauração de seus índices quando o cluster entrar no status vermelho.
  • Se o cluster estiver sob uma workload pesada e constante, dimensione o cluster. Para mais informações sobre como escalar seu cluster, consulte How can I scale up an Amazon OpenSearch Service domain?
  • Monitore o uso do disco, a demanda de memória da JVM e o uso da CPU, e verifique se eles não estão ultrapassando os limites definidos. Para mais informações, consulte Alarmes recomendados do CloudWatch e Métricas de cluster.
  • Certifique-se de que todos os fragmentos primários tenham fragmentos de réplica para proteção contra falhas de nó.

Para mais informações sobre as práticas recomendadas para o OpenSearch Service, consulte Práticas recomendadas do Amazon OpenSearch Service.

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


Este artigo ajudou?


Precisa de ajuda com faturamento ou suporte técnico?