Salta al contenuto

Perché il mio cluster del Servizio OpenSearch è in uno stato rosso o giallo?

8 minuti di lettura
0

Il mio cluster del Servizio OpenSearch di Amazon è in uno stato rosso o giallo.

Breve descrizione

La scheda Monitoraggio della console Servizio OpenSearch mostra lo stato dell'indice meno integro del cluster. Lo stato rosso si verifica quando il Servizio OpenSearch non ha allocato uno o più shard primari e le relative repliche. Lo stato giallo si verifica quando il Servizio OpenSearch ha allocato tutti gli shard primari ma non ha allocato uno o più shard di replica.

Importante: lo stato rosso del cluster indica l'indisponibilità parziale dei dati. Sebbene uno stato giallo non indichi una perdita di dati, comunque indica che il cluster non ha una ridondanza completa. In caso di errore di un nodo, è possibile che si verifichi una perdita di dati.

Risoluzione

Importante: per riconfigurare un dominio, devi prima risolvere lo stato rosso del cluster. Se provi a riconfigurare un dominio nello stato rosso, potrebbe rimanere bloccato nello stato "Modifica in corso".

Identifica la causa per cui alcuni shard non sono assegnati

Per identificare e risolvere la causa principale della mancata assegnazione di alcuni shard, utilizza il runbook AWSSupport-TroubleshootOpenSearchRedYellowCluster. Per istruzioni, consulta Instructions (Istruzioni) in AWSSupport-TroubleshootOpenSearchRedYellowCluster.

Oppure, per identificare manualmente gli shard non assegnati, esegui questo comando:

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

Nota: sostituisci domain-endpoint con l'endpoint del tuo dominio. Nell'output, annota l'ID dello shard.

Quindi esegui questo comando per ottenere i dettagli sul motivo per cui lo shard non è assegnato:

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

Nota: sostituisci domain-endpoint con l'endpoint del tuo dominio, index-name con il nome del tuo indice e shardID con l'ID dello shard non assegnato. Se lo shard è uno shard primario, sostituisci false con true.

Risolvi i problemi relativi di uno stato rosso o giallo

Per identificare il motivo per cui lo stato del cluster è giallo o rosso, intraprendi le seguenti azioni:

  • Controlla le metriche di Amazon CloudWatch ClusterStatus.yellow, ClusterStatus.red, Shards.unassigned, CPUUtilization, JVMMemoryPressure e FreeStorageSpace .

  • Esegui questa query per identificare gli indici interessati:

    GET /_cat/indices?v&health=yellow
    GET /_cat/indices?v&health=red
  • Esegui questa query per capire perché gli shard non sono assegnati in tutti gli indici:

    GET /_cluster/allocation/explain

    Nota: l'output di questo comando mostra una visione completa degli shard non assegnati e del loro stato di allocazione nell'intero cluster. Puoi utilizzare queste informazioni per ottenere una panoramica generale dei problemi di allocazione.

Per risolvere uno stato rosso del cluster, esegui questo comando per eliminare gli indici rossi:

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

Nota: sostituisci domain-endpoint con l'endpoint del tuo dominio e index-names con il nome del tuo indice.

Quindi ripristina gli indici da uno snapshot.

Se lo stato giallo del cluster non si risolve automaticamente, utilizza le informazioni sul motivo per cui lo shard non è assegnato per risolvere la causa principale.

Nodi insufficienti da allocare agli shard

Gli shard primari e di replica devono risiedere su nodi diversi. Di conseguenza, i cluster a nodo singolo con shard di replica vengono inizializzati sempre con uno stato giallo perché il Servizio OpenSearch non è in grado di allocare shard di replica.

Le versioni 7.x e successive del Servizio OpenSearch hanno una quota predefinita di 1.000 per cluster.max_shards_per_node. È consigliabile utilizzare il valore predefinito per cluster.max_shards_per_node. Per ulteriori informazioni, consulta Cluster-level shard, block, and task settings (Impostazioni di shard, blocchi e attività a livello di cluster) sul sito web OpenSearch.

Se imposti filtri di allocazione degli shard, lo shard può non essere assegnato perché non ha abbastanza nodi filtrati. Per ulteriori informazioni sui filtri di allocazione degli shard, consulta Index-level index settings (Impostazioni degli indici a livello di indice) sul sito web OpenSearch.

Per evitare il problema, intraprendi le seguenti azioni:

Per ulteriori informazioni, consulta Dimensionamento dei domini del Servizio OpenSearch di Amazon e Demystifying Elasticsearch shard allocation (Demistificazione dell'assegnazione degli shard del Servizio OpenSearch).

Problemi di spazio di archiviazione

Se lo spazio su disco non è sufficiente, il cluster può passare a uno stato di integrità rosso o giallo. Il nodo deve avere spazio su disco sufficiente per contenere gli shard prima che il Servizio OpenSearch li distribuisca.

Per verificare la quantità di spazio di archiviazione disponibile per ogni nodo del cluster, esegui questo comando:

curl domain-endpoint/_cat/allocation?v

Nota: sostituisci domain-endpoint con l'endpoint del tuo dominio.

Se distribuisci gli shard in modo non uniforme, alcuni nodi potrebbero esaurire lo spazio mentre altri hanno capacità. Ciò può causare problemi durante la riallocazione degli shard, impedendo al Servizio OpenSearch di assegnare nuovi shard durante il processo di riequilibratura.

Per controllare le impostazioni di distribuzione degli shard, esegui questo comando:

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

Nota: sostituisci domain-endpoint con l'endpoint del tuo dominio.

È consigliabile monitorare regolarmente lo spazio su disco e risolvere in modo proattivo i problemi di disallineamento del disco per risolvere i problemi di integrità del cluster.

Per ulteriori informazioni, consulta Come posso risolvere i problemi di spazio di archiviazione insufficiente nel mio dominio del Servizio OpenSearch?e Come posso riequilibrare la distribuzione irregolare degli shard nel mio cluster del Servizio OpenSearch?

Pressione elevata della memoria JVM

L'allocazione degli shard è un processo ad alta intensità di risorse che consuma CPU, spazio heap, disco e risorse di rete. Una pressione costantemente elevata della memoria Java Virtual Machine (JVM) può interferire con la corretta allocazione degli shard. Per risolvere il problema, risolvi la pressione elevata della memoria JVM. Dopo aver ridotto la pressione della memoria JVM, intraprendi le seguenti azioni per ripristinare lo stato verde del cluster:

  • Esegui questo comando per aumentare il numero predefinito di tentativi di sharding:
    PUT /index-name/_settings
    {
      "index.allocation.max_retries": 10
    }
    
    Nota: sostituisci index-name con il nome del tuo indice e 10 con il tuo numero di tentativi.
  • Modifica il numero di tentativi di sharding impostandolo su 0 per disattivare gli shard di replica. Quindi modificalo impostandolo su un valore positivo per riattivare gli shard.

Errori dei nodi

In caso di errori dei nodi, i loro shard allocati diventano non assegnati. Se mancano shard di replica, anche l'errore di un singolo nodo può causare uno stato di integrità rosso. Tuttavia, quando configuri gli indici con shard di replica, un errore del nodo in genere comporta uno stato giallo temporaneo. Lo stato giallo si determina quando il Servizio OpenSearch si ripristina automaticamente e cessa quando il nodo che ha generato l'errore ritorna integro o quando il Servizio OpenSearch riassegna gli shard ad altri nodi.

Per proteggerti dagli errori hardware, intraprendi le seguenti azioni:

Per ulteriori informazioni sull'identificazione di un errore del nodo, consulta Nodi di cluster con errori.

Stato di integrità giallo ricorrente del cluster

I cluster potrebbero essere spesso nello stato di integrità giallo per i seguenti motivi:

  • Errori o riavvii transitori dei nodi che si verificano quando i nodi generano errori temporanei e gli shard di replica diventano non assegnati.
    Nota: il cluster potrebbe ripristinarsi da solo quando il nodo torna normale o quando il Servizio OpenSearch riequilibra gli shard.
  • Superamento della quota di errori o tentativi nell'allocazione degli shard o a causa di vincoli di risorse o problemi di configurazione.
  • Manutenzione programmata, processi di backup o picchi di carico elevati su cluster con un elevato utilizzo di risorse, per cui i nodi fluttuano o rifiutano le allocazioni degli shard.
  • Aggiornamento ricorrente o indice creato automaticamente, che ha creato nuove repliche superiori alla capacità del cluster.

Per prevenire e risolvere i problemi relativi allo stato di integrità giallo ricorrente, intraprendi le seguenti azioni:

  • Per i cluster a nodo singolo, assicurati che tutti gli indici abbiano 0 repliche.
    Nota: per i cluster a nodo singolo, il Servizio OpenSearch gestisce e configura automaticamente gli indici di sistema come opendistro_security. Non puoi modificare le impostazioni per gli indici di sistema.
  • Per i cluster multi-nodo, mantieni almeno un nodo di replica. Per una maggiore ridondanza, aumenta il numero di nodi e repliche.
  • Configura un dominio Multi-AZ per un'elevata disponibilità e tolleranza ai guasti.
    Nota: se l'allocazione degli shard non riesce, verifica che il numero di nodi nel cluster, le zone di disponibilità e la configurazione di standby siano corretti per i requisiti del cluster.
  • Se lo shard non è riuscito a ottenere il blocco in memoria, aumenta il valore index.allocation.max_retries.
  • Per evitare l'esaurimento delle risorse, aumenta verticalmente il dominio in presenza di carico elevato.
  • Per monitorare in modo proattivo i cambiamenti in termini di risorse necessarie, crea un allarme in CloudWatch per le metriche ClusterStatus.yellow, ClusterStatus.red, JVMMemoryPressure, AutomatedSnapshotFailure e FreeStorageSpace.

Per ulteriori informazioni, consulta Best practice operative per il Servizio OpenSearch di Amazon.