Risoluzione dei problemi del MSK cluster Amazon - Amazon Managed Streaming per Apache Kafka

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Risoluzione dei problemi del MSK cluster Amazon

Le seguenti informazioni possono aiutarti a risolvere i problemi che potresti avere con il tuo cluster AmazonMSK. Puoi anche pubblicare il tuo problema su AWS re:Post. Per la risoluzione dei problemi di Amazon MSK Replicator, consultaRisoluzione dei problemi MSK di Replicator.

La sostituzione del volume causa la saturazione del disco a causa del sovraccarico della replica

In caso di guasto hardware non pianificato del volume, Amazon MSK può sostituire il volume con una nuova istanza. Kafka ripopola il nuovo volume replicando le partizioni di altri broker del cluster. Una volta che le partizioni sono state replicate e recuperate, sono idonee alla leadership e all'appartenenza a In-Sync Replica (). ISR

Problema

In un broker che si sta riprendendo dalla sostituzione dei volumi, alcune partizioni di dimensioni diverse potrebbero tornare online prima di altre. Ciò può essere problematico in quanto tali partizioni possono servire il traffico proveniente dallo stesso broker che sta ancora recuperando (replicando) altre partizioni. Questo traffico di replica a volte può saturare i limiti di throughput del volume sottostanti, che nel caso predefinito sono 250 MiB al secondo. Quando si verifica questa saturazione, tutte le partizioni già interessate ne risentono, ISR con conseguente latenza all'interno del cluster per tutti i broker che condividono tali partizioni (non solo le partizioni leader dovute agli ack remoti). acks=all Questo problema è più comune nei cluster più grandi che hanno un numero maggiore di partizioni di dimensioni variabili.

Raccomandazione
  • Per migliorare la postura I/O della replica, assicuratevi che siano state adottate le migliori impostazioni dei thread.

  • Per ridurre la probabilità di saturazione del volume sottostante, abilita lo storage fornito con un throughput più elevato. Un valore di throughput minimo di 500 MIB/s è consigliato per i casi di replica ad alto throughput, ma il valore effettivo necessario varia in base alla velocità effettiva e al caso d'uso. Assegnazione della velocità di trasmissione effettiva dell'archiviazione.

  • Per ridurre al minimo la pressione di replica, num.replica.fetchers abbassare al valore predefinito di2.

Gruppo di consumatori bloccato nello stato PreparingRebalance

Se uno o più gruppi di consumatori sono bloccati in uno stato di ribilanciamento perpetuo, la causa potrebbe essere il problema KAFKA-9752 di Apache Kafka, che riguarda le versioni 2.3.1 e 2.4.1 di Apache Kafka.

Per risolvere questo problema, ti consigliamo di aggiornare il cluster alla versione Amazon MSK bug-fix versione 2.4.1.1, che contiene una correzione per questo problema. Per informazioni sull'aggiornamento di un cluster esistente alla versione 2.4.1.1 di Amazon MSK bug-fix, consulta. Aggiornamento della versione di Apache Kafka

Le soluzioni alternative per risolvere questo problema senza aggiornare il cluster alla versione 2.4.1.1 di Amazon MSK bug-fix consistono nell'impostare i client Kafka da utilizzare o nel nodo broker di coordinamento del gruppo di consumatori Protocollo di iscrizione statico bloccato. Identificazione e riavvio

Implementazione del protocollo di iscrizione statico

Per implementare il protocollo di iscrizione statico nei client, procedi come indicato di seguito:

  1. Imposta la proprietà group.instance.id della configurazione dei consumatori Kafka su una stringa statica che identifica il consumatore nel gruppo.

  2. Assicurati che le altre istanze della configurazione siano aggiornate in modo da utilizzare la stringa statica.

  3. Implementa le modifiche ai tuoi consumatori Kafka.

L'utilizzo del protocollo di iscrizione statico è più efficace se il timeout della sessione nella configurazione client è impostato su una durata che consenta al consumatore di ripristinare il sistema senza innescare prematuramente un ribilanciamento del gruppo di consumatori. Ad esempio, se l'applicazione consumatore può tollerare 5 minuti di indisponibilità, un valore ragionevole per il timeout della sessione sarebbe 4 minuti anziché il valore predefinito di 10 secondi.

Nota

L'utilizzo del protocollo di iscrizione statico riduce solamente la probabilità di riscontrare questo problema. È possibile che questo problema si verifichi ancora anche quando si utilizza il protocollo di iscrizione statico.

Riavvio del nodo dei broker di coordinamento

Per riavviare il nodo dei broker di coordinamento, procedi come segue:

  1. Identifica il coordinatore del gruppo utilizzando il comando kafka-consumer-groups.sh.

  2. Riavvia il coordinatore del gruppo di consumatori bloccato utilizzando l'azione. RebootBrokerAPI

Errore nell'invio dei log del broker ad Amazon CloudWatch Logs

Quando provi a configurare il tuo cluster per inviare i log del broker ad Amazon CloudWatch Logs, potresti ottenere una delle due eccezioni.

Se viene restituita un'eccezione InvalidInput.LengthOfCloudWatchResourcePolicyLimitExceeded, riprova utilizzando i gruppi di log che iniziano con /aws/vendedlogs/. Per ulteriori informazioni, consulta la pagina Enabling Logging from Certain Amazon Web Services.

Se ricevi un'InvalidInput.NumberOfCloudWatchResourcePoliciesLimitExceededeccezione, scegli una policy Amazon CloudWatch Logs esistente nel tuo account e aggiungi quanto segueJSON.

{"Sid":"AWSLogDeliveryWrite","Effect":"Allow","Principal":{"Service":"delivery.logs.amazonaws.com"},"Action":["logs:CreateLogStream","logs:PutLogEvents"],"Resource":["*"]}

Se provi ad aggiungere JSON quanto sopra a una politica esistente ma ricevi un errore che indica che hai raggiunto la lunghezza massima per la politica che hai scelto, prova ad aggiungerlo JSON a un'altra delle tue politiche Amazon CloudWatch Logs. Dopo averlo aggiunto JSON a una politica esistente, prova ancora una volta a configurare la consegna dei log tramite broker-log ad Amazon Logs. CloudWatch

Nessun gruppo di sicurezza predefinito

Se provi a creare un cluster e ricevi un errore che indica che non esiste un gruppo di sicurezza predefinito, è possibile VPC che tu stia utilizzando un gruppo di sicurezza condiviso con te. Chiedi all'amministratore di concederti l'autorizzazione per descrivere i gruppi di sicurezza su questo VPC argomento e riprova. Per un esempio di policy che consente questa azione, consulta AmazonEC2: consente la gestione dei gruppi EC2 di sicurezza associati a uno specificoVPC, a livello di programmazione e nella console.

Il cluster sembra bloccato nello stato CREATING

A volte la creazione del cluster può richiedere fino a 30 minuti. Attendi 30 minuti e controlla nuovamente lo stato del cluster.

Lo stato del cluster va da CREATING a FAILED

Prova a creare nuovamente il cluster.

Lo stato del cluster è ACTIVE ma i produttori non possono inviare dati o i consumatori non possono ricevere dati

  • Se la creazione del cluster va a buon fine (lo stato del cluster è ACTIVE), ma non è possibile inviare o ricevere dati, assicurati che le applicazioni produttore e consumatore dispongano dell'accesso al cluster. Per ulteriori informazioni, consulta le linee guida in Passaggio 3: creazione di un computer client.

  • Se i produttori e i consumatori hanno accesso al cluster ma riscontrano ancora problemi nella produzione e nel consumo di dati, la causa potrebbe essere KAFKA-7697, che riguarda Apache Kafka versione 2.1.0 e può portare a un punto morto per uno o più broker. Valuta la possibilità di eseguire la migrazione ad Apache Kafka 2.2.1, che non è influenzato da questo bug. Per informazioni sulla migrazione, consulta Migrazione a un cluster Amazon MSK.

AWS CLI non riconosce Amazon MSK

Se hai il AWS CLI installato, ma non riconosce i MSK comandi di Amazon, aggiorna il AWS CLI alla versione più recente. Per istruzioni dettagliate su come aggiornare AWS CLI, vedere Installazione di AWS Command Line Interface. Per informazioni su come utilizzare il AWS CLI per eseguire MSK i comandi Amazon, vediAmazonMSK: come funziona.

Le partizioni vengono messe offline o le repliche non sono sincronizzate

Questi sintomi possono essere causati da spazio su disco insufficiente. Per informazioni, consulta Lo spazio su disco è insufficiente.

Lo spazio su disco è insufficiente

Vedere le best practice seguenti per gestire lo spazio su disco: Monitoraggio dello spazio su disco e Regolazione dei parametri di conservazione dei dati.

La memoria è insufficiente

Se il parametro MemoryUsed diventa alto o il parametro MemoryFree diventa basso, ciò non significa che ci sia un problema. Apache Kafka è progettato per utilizzare e gestire in maniera ottimale la massima quantità di memoria.

Il produttore ottiene NotLeaderForPartitionException

Questo è spesso un errore temporaneo. Impostare il parametro di configurazione retries del produttore su un valore più alto del valore corrente.

Partizioni sottoreplicate () URP maggiori di zero

Il parametro UnderReplicatedPartitions è importante da monitorare. In un MSK cluster integro, questa metrica ha il valore 0. Se è maggiore di zero, il motivo potrebbe essere uno dei seguenti.

  • Se UnderReplicatedPartitions presenta un picco, è possibile che non sia stato effettuato il provisioning del cluster alle dimensioni corrette per gestire il traffico in entrata e in uscita. Per informazioni, consulta Best practice.

  • Se UnderReplicatedPartitions è costantemente maggiore di 0, anche durante i periodi di traffico ridotto, il problema potrebbe essere che hai impostato un criterio restrittivo ACLs che non concede l'accesso all'argomento ai broker. Per replicare le partizioni, i broker devono essere autorizzati per entrambi gli argomenti. READ DESCRIBE DESCRIBEviene concesso di default con l'autorizzazione. READ Per informazioni sull'impostazioneACLs, vedere Autorizzazione e ACLs nella documentazione di Apache Kafka.

Il cluster ha argomenti chiamati __amazon_msk_canary e __amazon_msk_canary_state

Potresti vedere che il tuo MSK cluster ha un argomento con il nome __amazon_msk_canary e un altro con il nome. __amazon_msk_canary_state Si tratta di argomenti interni che Amazon MSK crea e utilizza per i parametri diagnostici e di salute dei cluster. Questi argomenti sono di dimensioni trascurabili e non possono essere eliminati.

La replica delle partizioni ha esito negativo

Assicurati di non aver impostato ACLs CLUSTER _ACTIONS.

Impossibile accedere al cluster con accesso pubblico attivato

Se il cluster ha attivato l'accesso pubblico, ma non riesci ancora ad accedervi da Internet, esegui i passaggi seguenti:

  1. Assicurati che le regole in entrata del gruppo di sicurezza del cluster consentano il tuo indirizzo IP e la porta del cluster. Per un elenco dei numeri di porta del cluster, consulta la pagina Informazioni sulle porte. Assicurati inoltre che le regole in uscita del gruppo di sicurezza consentano le comunicazioni in uscita. Per ulteriori informazioni sui gruppi di sicurezza e sulle relative regole in entrata e in uscita, consulta Security groups for your VPC nella Amazon VPC User Guide.

  2. Assicurati che il tuo indirizzo IP e la porta del cluster siano consentiti nelle regole in entrata della rete del cluster. VPC ACL A differenza dei gruppi di sicurezza, le reti ACLs sono prive di stato. Ciò significa che è necessario configurarne le regole in entrata e in uscita. Nelle regole in uscita, consenti tutto il traffico (intervallo di porte: 0-65535) verso il tuo indirizzo IP. Per ulteriori informazioni, consulta Aggiungere ed eliminare regole nella Amazon VPC User Guide.

  3. Assicurati di utilizzare la stringa bootstrap-brokers ad accesso pubblico per accedere al cluster. Un MSK cluster con accesso pubblico attivato ha due diverse stringhe bootstrap-brokers, una per l'accesso pubblico e una per l'accesso dall'interno AWS. Per ulteriori informazioni, vedereOttenere i broker bootstrap utilizzando il AWS Management Console.

Impossibile accedere al cluster dall'interno AWS: problemi di rete

Se disponi di un'applicazione Apache Kafka che non è in grado di comunicare correttamente con un MSK cluster, inizia eseguendo il seguente test di connettività.

  1. Utilizzare uno dei metodi descritti in Ottenere i broker bootstrap per un cluster Amazon MSK per ottenere gli indirizzi dei broker bootstrap.

  2. Nel comando seguente, sostituisci bootstrap-broker con uno degli indirizzi del broker che hai ottenuto nel passaggio precedente. Replace (Sostituisci) port-number con 9094 se il cluster è configurato per utilizzare l'TLSautenticazione. Se il cluster non utilizza l'TLSautenticazione, sostituisci port-number con 9092. Eseguire il comando dal computer client.

    telnet bootstrap-broker port-number

    Dove il numero di porta è:

    • 9094 se il cluster è configurato per utilizzare l'autenticazione. TLS

    • 9092 Se il cluster non utilizza l'TLSautenticazione.

    • È necessario un numero di porta diverso se l'accesso pubblico è abilitato.

    Eseguire il comando dal computer client.

  3. Ripetere il comando precedente per tutti i broker bootstrap.

Se la macchina client è in grado di accedere ai broker, significa che non ci sono problemi di connettività. In questo caso, eseguire il comando seguente per verificare se il client Apache Kafka è configurato correttamente. Per ottenere bootstrap-brokers, utilizzare uno dei metodi descritti inOttenere i broker bootstrap per un cluster Amazon MSK. Replace (Sostituisci) topic con il nome del tuo argomento.

<path-to-your-kafka-installation>/bin/kafka-console-producer.sh --broker-list bootstrap-brokers --producer.config client.properties --topic topic

Se il comando precedente va a buon fine, significa che il client è configurato correttamente. Se non è ancora possibile produrre e consumare da un'applicazione, eseguire il debug del problema a livello di applicazione.

Se il computer client non è in grado di accedere ai broker, consulta le seguenti sottosezioni per una guida basata sulla configurazione del computer client.

EC2Client e MSK cluster Amazon nello stesso ambiente VPC

Se la macchina client si trova nella VPC stessa area del MSK cluster, assicurati che il gruppo di sicurezza del cluster disponga di una regola in entrata che accetti il traffico proveniente dal gruppo di sicurezza del computer client. Per informazioni sull'impostazione di queste regole, consulta Regole del gruppo di sicurezza. Per un esempio di come accedere a un cluster da un'EC2istanza Amazon che si trova nella VPC stessa area del cluster, consultaCome iniziare a usare Amazon MSK.

EC2Client e MSK cluster Amazon in diversi VPCs

Se il computer client e il cluster si trovano in due ambienti diversiVPCs, verifica quanto segue:

  • I due VPCs sono peer-to-peer.

  • Lo stato della connessione peering è attivo.

  • Le tabelle dei percorsi delle due VPCs sono impostate correttamente.

Per informazioni sul VPC peering, vedere Working with VPC Peering Connections.

Client locale

Nel caso di un client locale configurato per connettersi al cluster tramite MSK AWS VPN, assicurati quanto segue:

  • Lo stato della VPN connessione èUP. Per informazioni su come controllare lo stato della VPN connessione, vedi Come posso controllare lo stato attuale del mio VPN tunnel? .

  • La tabella di routing del cluster VPC contiene la route per un locale CIDR la cui destinazione ha il formatoVirtual private gateway(vgw-xxxxxxxx).

  • Il gruppo di sicurezza del MSK cluster consente il traffico sulla porta 2181, sulla porta 9092 (se il cluster accetta traffico in chiaro) e sulla porta 9094 (se il cluster accetta traffico crittografato). TLS

Per saperne di più AWS VPN guida alla risoluzione dei problemi, vedi Troubleshooting Client VPN.

AWS Direct Connect

Se il client utilizza AWS Direct Connect, vedi Risoluzione dei problemi AWS Direct Connect.

Se le linee guida per risoluzione dei problemi precedenti non consentono di risolvere il problema, assicurarsi che il traffico di rete non sia bloccato da un firewall. Per ulteriori operazioni di debug, usa strumenti come tcpdump e Wireshark per analizzare il traffico e assicurarti che raggiunga il cluster. MSK

Autenticazione non riuscita: troppe connessioni

L'Failed authentication ... Too many connectserrore indica che un broker si sta proteggendo perché uno o più IAM client stanno tentando di connettersi ad esso a una velocità aggressiva. Per aiutare i broker ad accettare un tasso più elevato di nuove IAM connessioni, puoi aumentare il parametro di reconnect.backoff.msconfigurazione.

Per ulteriori informazioni sui limiti di velocità per le nuove connessioni per broker, consulta la pagina MSKQuota Amazon.

MSKServerless: la creazione del cluster non riesce

Se provi a creare un cluster MSK Serverless e il flusso di lavoro fallisce, potresti non avere l'autorizzazione per creare un VPC endpoint. Verifica che l'amministratore ti abbia concesso l'autorizzazione a creare un VPC endpoint autorizzando l'azione. ec2:CreateVpcEndpoint

Per un elenco completo delle autorizzazioni necessarie per eseguire tutte le MSK azioni di Amazon, consultaAWS politica gestita: A mazonMSKFull Access.