Perché lo stato del cluster Amazon OpenSearch Service è rosso o giallo?

Ultimo aggiornamento: 30/07/2021

Lo stato del cluster Amazon OpenSearch Service è rosso o giallo. Perché accade?

Breve descrizione

La scheda Monitoraggio nella console di OpenSearch Service indica lo stato dell'indice meno integro nel cluster. Lo stato di un cluster rosso non significa che il cluster non è attivo. Piuttosto, questo stato indica che almeno una partizione primaria e le relative repliche non sono allocate a un nodo. Se lo stato del cluster è giallo, le partizioni primarie per tutti gli indici vengono allocate ai nodi del cluster. Tuttavia, le partizioni di replica per almeno un indice non vengono allocate a nessuno dei nodi.

Nota: non riconfigurare il dominio fino a quando non si risolve per la prima volta lo stato del cluster rosso. Se si tenta di riconfigurare il dominio quando ha lo stato del cluster rosso, potrebbe rimanere bloccato in uno stato di “Elaborazione”. Per ulteriori informazioni sui cluster bloccati nello stato di “Elaborazione”, consulta Perché il mio dominio Amazon OpenSearch Service è bloccato nello stato di “Elaborazione”?

Il tuo cluster può entrare nello stato rosso per i seguenti motivi:

  • Errori multipli dei nodi dati
  • Utilizzo di una partizione danneggiata o rossa per un indice
  • Elevata pressione sulla memoria JVM o utilizzo della CPU
  • Spazio su disco insufficiente o distorsione del disco

Nota: in alcuni casi, potresti essere in grado di risolvere lo stato rosso del cluster eliminando e quindi ripristinando l'indice da uno snapshot automatico.

Il tuo cluster può entrare nello stato di integrità giallo per i seguenti motivi:

  • Creazione di un nuovo indice
  • Nodi insufficienti da assegnare alle partizioni o alla distorsione del disco
  • Elevata pressione sulla memoria JVM
  • Errore di nodo singolo
  • Superato il numero massimo di tentativi di assegnazione delle partizioni

Nota: se lo stato giallo del cluster non si risolve da solo, puoi risolverlo aggiornando le impostazioni dell'indice o reinstradando manualmente le partizioni non assegnate. Se lo stato giallo del cluster non si risolve automaticamente, identifica e risolvi la causa principale. Per evitare lo stato giallo del cluster, applica le best practice sull'integrità del cluster.

Risoluzione

Identificazione del motivo delle partizioni non assegnate

Per identificare le partizioni non assegnate, esegui i seguenti passaggi:

1.    Elenca la partizione non assegnata:

$ curl -XGET 'domain-endpoint/_cat/shards?h=index,shard,prirep,state,unassigned.reason' | grep UNASSIGNED

2.    Recupera i dettagli del motivo per cui la partizione non è assegnata:

$ curl -XGET 'domain-endpoint/_cluster/allocation/explain?pretty' -H 'Content-Type:application/json' -d'{"index": "<index name>", "shard": <shardId>, "primary":<true or false>}'

3.    (Facoltativo) Per lo stato rosso del cluster, elimina gli indici di preoccupazione e identifica e risolvi la causa principale:

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

Quindi, identifica gli snapshot disponibili e ripristina gli indici da uno snapshot:

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

Per lo stato giallo del cluster, affronta la causa principale affinché vengano assegnate le partizioni.

Risoluzione dei problemi relativi allo stato rosso o giallo del cluster

Nodi insufficienti da assegnare alle partizioni

Una partizione di replica non verrà assegnata allo stesso nodo della relativa partizione principale. Un cluster a nodo singolo con partizione di replica viene sempre inizializzato con lo stato giallo del cluster. I cluster a nodo singolo vengono inizializzati in questo modo perché non ci sono altri nodi disponibili a cui OpenSearch Service può assegnare una replica.

Esiste anche un limite predefinito di “1.000” per l'impostazione cluster.max_shards_per_node per OpenSearch Service versioni 7.x e successive. È consigliabile mantenere l'impostazione cluster.max_shards_per_node sul valore predefinito di “1.000". Se si impostano i filtri di assegnazione partizioni per controllare il modo in cui OpenSearch Service assegna le partizioni, la partizione può diventare non assegnata perché non dispone di un numero sufficiente di nodi filtrati. Per evitare questa carenza di nodi, aumenta il numero di nodi. Assicurarsi che il numero di repliche per ogni partizione primaria sia inferiore al numero di nodi di dati. È inoltre possibile ridurre il numero di partizioni di replica. Per ulteriori informazioni, consulta Dimensionamento dei domini di OpenSearch Service e Demistificazione dell'assegnazione delle partizioni di OpenSearch Service.

Spazio su disco insufficiente o distorsione del disco

Se lo spazio su disco non è sufficiente, il cluster può entrare nello stato di integrità rosso o giallo. Lo spazio su disco deve essere sufficiente per accogliere le partizioni prima che OpenSearch Service le distribuisca.

Per verificare la quantità di spazio di archiviazione disponibile per ogni nodo del cluster, utilizzare la seguente sintassi:

$ curl domain-endpoint/_cat/allocation?v

Per ulteriori informazioni sui problemi di spazio di archiviazione, consulta Se ho poco spazio di archiviazione nel dominio Amazon OpenSearch Service, come posso risolvere il problema?

La consistente distorsione del disco può anche causare problemi di spazio di archiviazione insufficiente per alcuni nodi di dati. Se decidi di riassegnare eventuali partizioni, le partizioni possono diventare non assegnate durante la distribuzione della partizione. Per risolvere il problema, consulta In che modo è possibile riequilibrare la distribuzione di partizioni irregolari nel mio cluster Amazon OpenSearch Service?

Le impostazioni di assegnazione delle partizioni basate su disco possono anche comportare partizioni non assegnate. Ad esempio, se il parametro cluster.routing.allocation.disk.watermark.low è impostato su 50 GB, la quantità di spazio su disco specificata deve essere disponibile per l'assegnazione della partizione.

Per verificare le impostazioni correnti di assegnazione delle partizioni basate su disco, utilizza la seguente sintassi:

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

Per risolvere i problemi relativi allo spazio su disco, adotta i seguenti approcci:

  • Elimina gli indici indesiderati.
  • Aumenta il volume EBS.
  • Aggiungi altri nodi di dati.

Elevata pressione sulla memoria JVM

Ogni assegnazione di partizioni utilizza CPU, spazio heap e risorse su disco e di rete. Livelli uniformemente elevati di pressione sulla memoria JVM potrebbero comportare un'assegnazione di partizioni non riuscita. Ad esempio, se la pressione sulla memoria JVM supera il 95%, verrà attivato un interruttore automatico principale della memoria. Il thread di assegnazione viene quindi annullato, lasciando partizioni non assegnate.

Per risolvere questo problema, riduci innanzitutto il livello di pressione sulla memoria JVM. Dopo avere ridotto la pressione sulla memoria JVM, prendi in considerazione questi suggerimenti aggiuntivi per riportare il cluster allo stato di integrità verde:

  • Aumenta il valore predefinito dei tentativi di partizione da “5” o superiore.
  • Disabilita e abilita la partizione di replica.
  • Riprova manualmente le partizioni non assegnate.

Per ulteriori informazioni sulla riduzione della pressione sulla memoria JVM, consulta Come posso risolvere i problemi relativi alla pressione elevata sulla memoria JVM sul cluster Amazon OpenSearch Service?

Errore di nodo

Quando nel cluster si verifica un errore di nodo, le partizioni assegnate a un nodo diventano non assegnate. Quando non sono disponibili partizioni di replica per un determinato indice, anche l’errore di un singolo nodo può causare lo stato di integrità rosso. La presenza di due partizioni di replica e di una distribuzione Multi-AZ protegge il tuo cluster dalla perdita di dati durante un guasto hardware.

Se tutti gli indici hanno una partizione di replica, l’errore di un singolo nodo può far sì che il cluster entri temporaneamente nello stato di integrità giallo. Se il cluster entra temporaneamente nello stato di integrità giallo, OpenSearch Service si ripristinerà automaticamente non appena il nodo sarà di nuovo integro. Oppure, OpenSearch Service si ripristina quando le partizioni vengono assegnate a un nuovo nodo.

Puoi confermare eventuali errori del nodo controllando i parametri di Amazon CloudWatch. Per ulteriori informazioni sull'identificazione di un errore del nodo, consulta Errori dei nodi cluster.

Nota: una best practice consiste nell’assegnare una partizione di replica per ogni indice o utilizzare nodi principali dedicati e abilitare il riconoscimento della zona. Per ulteriori informazioni, consulta Affrontare gli errori sul sito web di Elasticsearch.

Superato il numero massimo di tentativi

In OpenSearch Service, il cluster non deve superare il limite di tempo massimo (5.000 ms) o il numero di tentativi (5) per l'assegnazione di partizioni. Se il cluster ha raggiunto le soglie massime, è necessario attivare manualmente un'assegnazione di partizione. Per attivare manualmente un'assegnazione di partizione, disabilita e riabilita le partizioni di replica per i tuoi indici.

Una modifica della configurazione del cluster può anche attivare l'assegnazione delle partizioni. Evita tuttavia di apportare modifiche alla configurazione del cluster quando è in stato di integrità rosso. Per ulteriori informazioni sull'assegnazione di partizioni, consulta Ogni frammento merita una casa sul sito web di Elasticsearch.

Nota: non è consigliabile attivare manualmente l'assegnazione delle partizioni se il cluster ha un carico di lavoro pesante. Se rimuovi tutte le repliche da un indice, l'indice deve basarsi solo su partizioni primarie. Quando si verifica un errore di nodo, il cluster entra nello stato di integrità rosso perché le partizioni primarie vengono lasciate non assegnate.

Per disabilitare una partizione di replica, aggiorna il valore number_of_replicas a “0":

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

Inoltre, verifica che l'impostazione index.auto_expand_replicas sia impostata su “false”. Quando il cluster torna allo stato di integrità verde, puoi impostare di nuovo il valore index.number_of_replicas sul valore desiderato per attivare l'assegnazione delle partizioni di replica. Se l'assegnazione delle partizioni ha esito positivo, il cluster entra nello stato di integrità verde.

Best practice sull'integrità dei cluster

Per risolvere lo stato del cluster giallo o rosso, prendi in considerazione le seguenti best practice:

  • Imposta un allarme Amazon CloudWatch consigliato per AutomatedSnapshotFailure. Con l'allarme, puoi assicurarti di avere a disposizione uno snapshot per ripristinare gli indici da quando il cluster entra nello stato rosso.
  • Se il cluster è sottoposto a un carico di lavoro pesante e prolungato, ridimensionalo. Per ulteriori informazioni sul dimensionamento del cluster, consulta Come posso dimensionare un dominio Amazon OpenSearch Service?
  • Monitora l'utilizzo del disco, la pressione sulla memoria JVM e l'utilizzo della CPU e assicurati che non superino le soglie impostate. Per ulteriori informazioni, consulta Allarmi CloudWatch consigliati e Parametri dei cluster.
  • Assicurati che tutte le partizioni primarie siano dotate di partizioni di replica per proteggerli da eventuali errori dei nodi.

Per ulteriori informazioni sulle best practice di OpenSearch Service, consulta le best practice di Amazon OpenSearch Service.

Amazon OpenSearch Service è il successore di Amazon Elasticsearch Service.


Questo articolo è stato utile?


Hai bisogno di supporto tecnico o per la fatturazione?