Perché il mio cluster Amazon OpenSearch Service è rosso o giallo?

9 minuti di lettura
0

Il mio cluster Amazon OpenSearch Service ha lo stato di cluster rosso o giallo.

Breve descrizione

La scheda Monitoraggio nella console di OpenSearch Service indica lo stato dell'indice meno integro del cluster. Uno stato del cluster che mostra uno stato rosso non significa che il cluster sia inattivo. Questo stato indica che almeno una partizione primaria e le relative repliche non sono allocati a un nodo. Se lo stato del cluster è giallo, le partizioni primarie per tutti gli indici vengono allocati ai nodi del cluster. Tuttavia, uno o più frammenti di replica non sono allocati a nessuno dei nodi.

Nota: Non riconfigurare il dominio finché non risolvi per la prima volta lo stato del cluster rosso. Se tenti di riconfigurare il dominio quando lo stato del cluster è rosso, questo potrebbe rimanere bloccato in stato di "Elaborazione in corso". Per ulteriori informazioni sui cluster bloccati nello stato di "Elaborazione in corso", consulta Perché il mio dominio del servizio OpenSearch è bloccato nello stato di "Elaborazione in corso"?

Il tuo cluster può inserire uno stato rosso per i seguenti motivi:

  • Guasti multipli dei nodi dati
  • Utilizzo di un frammento danneggiato o rosso per un indice
  • Elevata pressione della memoria JVM o utilizzo della CPU
  • Spazio su disco insufficiente o inclinazione del disco
  • Nessun frammento di replica per la partizione non assegnata

Nota: In alcuni casi, potresti riuscire a risolvere lo stato del cluster rosso eliminando e quindi ripristinando l'indice da un'istantanea automatica.

Il tuo cluster può inserire uno stato di salute giallo per i seguenti motivi:

  • Creazione di un nuovo indice
  • Nodi insufficienti da allocare alle partizione o all'inclinazione del disco
  • Elevata pressione di memoria JVM
  • Guasto a un singolo nodo
  • È stato superato il numero massimo di tentativi di assegnazione delle partizioni
  • Il numero di partizione di replica è superiore al numero di nodi di dati
  • Implementazione continua di colore blu o verde dovuta al trasferimento di frammenti di dati

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

Risoluzione

Identificazione del motivo delle tue partizione non assegnati

Per identificare i frammenti non assegnati, effettuate le seguenti operazioni:

1.    Elenca la partizione non assegnato:

$ 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 è assegnato:

$ 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 status di cluster rosso, elimina gli indici di preoccupazione e identifica e affronta 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 di cluster giallo, affronta la causa principale in modo che le partizioni vengano assegnate.

Risoluzione dei problemi relativi allo stato del cluster rosso o giallo

Nodi insufficienti da allocare alle partizioni

Una partizione di replica non verrà assegnato allo stesso nodo della partizione primaria. Un cluster a nodo singolo con partizione di replica viene sempre inizializzato con lo stato di cluster giallo. 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 "1000". 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. Assicurati che il numero di repliche per ogni partizione primario sia inferiore al numero di nodi di dati. È inoltre possibile ridurre il numero di frammenti 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 inclinazione del disco

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

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

$ curl domain-endpoint/_cat/allocation?v

Per ulteriori informazioni sui problemi relativi allo spazio di archiviazione, consulta Come faccio a risolvere i problemi relativi allo spazio di archiviazione insufficiente nel mio dominio OpenSearch Service?

Una forte inclinazione del disco può anche causare problemi di spazio di archiviazione insufficiente per alcuni nodi di dati. Se decidi di riassegnare dei frammenti, questi possono non essere assegnati durante la distribuzione delle partizioni. Per risolvere il problema, consulta Come faccio a riequilibrare la distribuzione di partizioni irregolari nel mio cluster del servizio OpenSearch?

Le impostazioni di assegnazione delle partizioni basate su disco possono comportare anche 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 delle partizioni.

Per verificare le attuali impostazioni di allocazione delle partizioni basate sul disco, utilizza la seguente sintassi:

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

Per risolvere i problemi di spazio su disco, prendi in considerazione i seguenti approcci:

  • Elimina tutti gli indici indesiderati per i cluster gialli e rossi.
  • Elimina gli indici rossi per i cluster rossi
  • Aumenta il volume EBS.
  • Aggiungi altri nodi di dati.

Nota: Evita di apportare modifiche alla configurazione del tuo cluster quando lo stato di integrità è rosso. Se tenti di riconfigurare il dominio quando lo stato del cluster è rosso, questo potrebbe rimanere bloccato in stato di "Elaborazione in corso".

Elevata pressione di memoria JVM

Ogni allocazione di partizioni utilizza CPU, spazio heap e risorse su disco e di rete. Livelli costantemente elevati di pressione della memoria JVM potrebbero portare a un'allocazione degli shard non riuscita. Ad esempio, se la pressione della memoria JVM supera il 95%, viene attivato un interruttore automatico principale della memoria. Il thread di allocazione viene quindi annullato, lasciando alle partizioni non assegnate.

Per risolvere questo problema, riduci prima il livello di pressione della memoria JVM. Dopo aver ridotto la pressione della memoria JVM, prendi in considerazione questi suggerimenti aggiuntivi per riportare il tuo cluster a uno stato di integrità verde:

  • Aumenta il valore predefinito per i tentativi della partizione da "5" o superiore.
  • Disattiva e attiva la partizione di replica.
  • Riprova manualmente le partizione non assegnati.

Esempio di API per aumentare il valore di riprova:

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

Per ulteriori informazioni sulla riduzione della pressione sulla memoria JVM, consulta Come faccio a risolvere i problemi relativi alla pressione elevata sulla memoria JVM sul cluster del servizio OpenSearch?

Guasto del nodo

Quando il cluster presenta un errore di un nodo, le partizioni allocate a un nodo non vengono assegnati. Quando non sono disponibili partizioni di replica per un determinato indice, anche un errore di un singolo nodo può causare lo stato di integrità rosso. La disponibilità di due partizioni di replica e di un'installazione Multi-AZ protegge il cluster dalla perdita di dati durante un guasto hardware.

Se tutti gli indici hanno una partizione di replica, un errore di un singolo nodo può far sì che il cluster entri temporaneamente in uno stato di integrità giallo. Se il tuo cluster entra temporaneamente in uno stato di integrità giallo, OpenSearch Service verrà ripristinato automaticamente non appena il nodo sarà nuovamente integro. In alternativa, OpenSearch Service verrà ripristinato quando le partizioni vengono assegnati a un nuovo nodo.

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

Nota: È inoltre consigliabile assegnare una partizione di replica per ogni indice o utilizzare nodi primari dedicati e attivare la consapevolezza 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'allocazione delle partizioni. Se il cluster ha raggiunto le soglie massime, è necessario attivare manualmente un'allocazione delle partizioni. Per attivare manualmente un'allocazione delle partizioni, disattiva e riattiva le partizioni di replica per i tuoi indici.

Una modifica alla configurazione del cluster può anche attivare l'allocazione delle partizioni. Per ulteriori informazioni sull'allocazione delle partizioni, consulta Ogni partizione merita una casa sul sito Elasticsearch.

Nota: Non è consigliabile attivare manualmente l'allocazione delle partizioni se il cluster ha un carico di lavoro elevato. Se rimuovi tutte le repliche da un indice, l'indice deve basarsi solo sulle partizioni primarie. Quando un nodo fallisce, il cluster passa allo stato di integrità rosso perché le partizioni primarie non vengono assegnate.

Per disattivare 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 verde, puoi reimpostare il valore index.number_of_replicas sul valore desiderato per attivare l'allocazione delle partizioni di replica. Se l'allocazione delle partizioni ha esito positivo, il cluster entrerà in uno stato di integrità verde.

Le migliori pratiche sanitarie 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 un'istantanea per ripristinare gli indici da quando il cluster entra in rosso.
  • Se il tuo cluster è sottoposto a un carico di lavoro intenso e prolungato, ridimensiona il cluster. Per ulteriori informazioni sul dimensionamento del cluster, consulta Come faccio ad aumentare un dominio del servizio OpenSearch?
  • Monitora l'utilizzo del disco, la pressione della 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 tutti le partizioni primarie dispongano di partizioni di replica per proteggerti dai guasti dei nodi.

Per ulteriori informazioni, consulta le best practice operative per Amazon OpenSearch Service.

AWS UFFICIALE
AWS UFFICIALEAggiornata 10 mesi fa