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à.
Usa LinkedIn Cruise Control per Apache Kafka con Amazon MSK
Puoi utilizzare LinkedIn Cruise Control per ribilanciare il tuo MSK cluster Amazon, rilevare e correggere anomalie e monitorare lo stato e l'integrità del cluster.
Download e compilazione di Cruise Control
Crea un'EC2istanza Amazon nello VPC stesso Amazon del MSK cluster Amazon.
Installa Prometheus sull'istanza EC2 Amazon che hai creato nel passaggio precedente. Prendi nota dell'IP privato e della porta. Il numero di porta predefinito è 9090. Per informazioni su come configurare Prometheus per aggregare i parametri per un cluster, consulta la pagina Monitora un cluster MSK fornito con Prometheus.
-
Scarica Cruise Control
sull'EC2istanza Amazon. (In alternativa, puoi utilizzare un'EC2istanza Amazon separata per Cruise Control, se preferisci.) Per un cluster con Apache Kafka versione 2.4.*, usa la versione 2.4.* di Cruise Control più recente. Se il tuo cluster ha una versione di Apache Kafka precedente alla 2.4.*, utilizza la versione 2.0.* di Cruise Control più recente. -
Decomprimi il file Cruise Control, quindi vai alla cartella decompressa.
-
Esegui il comando seguente per installare git.
sudo yum -y install git
-
Esegui il comando seguente per inizializzare il repository locale. Sostituiscila
Your-Cruise-Control-Folder
con il nome della cartella attuale (la cartella che hai ottenuto quando hai decompresso il download di Cruise Control).git init && git add . && git commit -m "Init local repo." && git tag -a
Your-Cruise-Control-Folder
-m "Init local version." -
Esegui il comando seguente per creare il codice sorgente.
./gradlew jar copyDependantLibs
Configurazione ed esecuzione di Cruise Control
-
Apporta le seguenti modifiche al file
config/cruisecontrol.properties
. Sostituisci la stringa bootstrap servers e bootstrap-brokers di esempio con i valori del tuo cluster. Per recuperare queste stringhe per il cluster, puoi consultare i dettagli del cluster nella console. In alternativa, è possibile utilizzare le operazioni and o i loro equivalenti GetBootstrapBrokers. DescribeClusterAPICLI# If using TLS encryption, use 9094; use 9092 if using plaintext bootstrap.servers=b-1.test-cluster.2skv42.c1.kafka.us-east-1.amazonaws.com:9094,b-2.test-cluster.2skv42.c1.kafka.us-east-1.amazonaws.com:9094,b-3.test-cluster.2skv42.c1.kafka.us-east-1.amazonaws.com:9094 # SSL properties, needed if cluster is using TLS encryption security.protocol=SSL ssl.truststore.location=/home/ec2-user/kafka.client.truststore.jks # Use the Prometheus Metric Sampler metric.sampler.class=com.linkedin.kafka.cruisecontrol.monitor.sampling.prometheus.PrometheusMetricSampler # Prometheus Metric Sampler specific configuration prometheus.server.endpoint=1.2.3.4:9090 # Replace with your Prometheus IP and port # Change the capacity config file and specify its path; details below capacity.config.file=config/capacityCores.json
Per i broker express, consigliamo di non utilizzarlo
DiskCapacityGoal
in nessuno degli obiettivi configurati nelle configurazioni degli analizzatori. -
Modifica il
config/capacityCores.json
file per specificare le dimensioni e i CPU core corretti del disco e i limiti di ingresso/uscita della rete. Per i broker Express, l'inserimento dellaDISK
capacità è necessario solo per configurare Cruise Control. Poiché MSK gestisce tutto lo spazio di archiviazione per i broker Express, è necessario impostare questo valore su un numero estremamente alto, ad esempio.Integer.MAX_VALUE (2147483647)
Per i broker Standard, è possibile utilizzare l'DescribeClusterAPIoperazione (o describe-clusterCLI) per ottenere la dimensione del disco. Per CPU i core e i limiti di ingresso/uscita di rete, consulta Amazon EC2 Instance Types. -
Facoltativamente, puoi installare l'interfaccia utente di Cruise Control. Per scaricarla, consulta la pagina Setting Up Cruise Control Frontend
. -
Esegui il comando seguente per avviar Cruise Control. Prendi in considerazione l'utilizzo di uno strumento come
screen
otmux
per mantenere aperta una sessione di lunga durata.<path-to-your-kafka-installation>
/bin/kafka-cruise-control-start.sh config/cruisecontrol.properties 9091 Usa il Cruise Control APIs o l'interfaccia utente per assicurarti che Cruise Control disponga dei dati di carico del cluster e che fornisca suggerimenti per il ribilanciamento. Potrebbero trascorrere alcuni minuti prima di ottenere una finestra di parametri valida.
Importante
Solo le versioni di Cruise Control 2.5.60 e successive sono compatibili con i broker Express, poiché i broker Express non espongono gli endpoint Zookeeper.
Utilizza il modello di distribuzione automatizzata di Cruise Control per Amazon MSK
Puoi anche utilizzare questo CloudFormation modello
Caratteristiche principali:
Provisioning automatico di un'EC2istanza Amazon con Cruise Control e Prometheus preconfigurati.
Support per Amazon MSK provisioned cluster.
Autenticazione flessibile con PlainText e. IAM
Nessuna dipendenza da Zookeeper per Cruise Control.
Personalizza facilmente gli obiettivi Prometheus, le impostazioni della capacità del Cruise Control e altre configurazioni fornendo i tuoi file di configurazione memorizzati in un bucket Amazon S3.
Linee guida per il ribilanciamento delle partizioni
Linee guida per la riassegnazione delle partizioni Kafka
La riassegnazione delle partizioni in Kafka può richiedere molte risorse, in quanto comporta il trasferimento di dati significativi tra broker, causando potenzialmente la congestione della rete e influendo sulle operazioni dei client. Le seguenti best practice consentono di gestire in modo efficace la riassegnazione delle partizioni ottimizzando i tassi di accelerazione, sfruttando i controlli di concorrenza e comprendendo i tipi di riassegnazione per ridurre al minimo le interruzioni delle operazioni del cluster.
Gestione della concorrenza in Cruise Control
Il Cruise Control fornisce parametri di regolazione automatica per controllare la concomitanza dei movimenti di partizione e di leadership. I seguenti parametri aiutano a mantenere un carico accettabile durante le riassegnazioni:
Movimenti di partizione simultanei massimi: definisci il limite massimo
num.concurrent.partition.movements.per.broker
per i movimenti simultanei delle partizioni tra broker, evitando un utilizzo eccessivo della rete.Esempio
num.concurrent.partition.movements.per.broker = 5
Questa impostazione limita ogni broker a spostare non più di 10 partizioni alla volta, bilanciando il carico tra i broker.
Usa la limitazione per controllare la larghezza di banda
Parametro Throttle: quando si esegue la riassegnazione delle partizioni con
kafka-reassign-partitions.sh
, utilizzare--throttle parameter
per impostare una velocità di trasferimento massima (in byte al secondo) per lo spostamento dei dati tra i broker.Esempio
--throttle 5000000
Questo imposta una larghezza di banda massima di 5 MB/s.
-
Balance Throttle Settings: La scelta di una frequenza di accelerazione appropriata è fondamentale:
Se impostato su un valore troppo basso, la riassegnazione potrebbe richiedere molto più tempo.
Se impostato su un valore troppo alto, i client potrebbero riscontrare un aumento della latenza.
Inizia con una frequenza di accelerazione conservativa e regola in base al monitoraggio delle prestazioni del cluster. Testa l'acceleratore che hai scelto prima di passare a un ambiente di produzione per trovare l'equilibrio ottimale.
Esegui test e convalida in un ambiente di staging
Prima di implementare le riassegnazioni in produzione, esegui test di carico in un ambiente di staging con configurazioni simili. Ciò consente di ottimizzare i parametri e ridurre al minimo gli impatti imprevisti nella produzione live.