Usa LinkedIn Cruise Control per Apache Kafka con Amazon MSK - 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à.

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
  1. Crea un'EC2istanza Amazon nello VPC stesso Amazon del MSK cluster Amazon.

  2. 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.

  3. 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.

  4. Decomprimi il file Cruise Control, quindi vai alla cartella decompressa.

  5. Esegui il comando seguente per installare git.

    sudo yum -y install git
  6. 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."
  7. Esegui il comando seguente per creare il codice sorgente.

    ./gradlew jar copyDependantLibs
Configurazione ed esecuzione di Cruise Control
  1. 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.

  2. 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 della DISK 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.

    Standard broker config/capacityCores.json
    { "brokerCapacities": [ { "brokerId": "-1", "capacity": { "DISK": "10000", "CPU": { "num.cores": "2" }, "NW_IN": "5000000", "NW_OUT": "5000000" }, "doc": "This is the default capacity. Capacity unit used for disk is in MB, cpu is in number of cores, network throughput is in KB." } ] }
    Express broker config/capacityCores.json
    { "brokerCapacities":[ { "brokerId": "-1", "capacity": { "DISK": "2147483647", "CPU": {"num.cores": "16"}, "NW_IN": "1073741824", "NW_OUT": "1073741824" }, "doc": "This is the default capacity. Capacity unit used for disk is in MB, cpu is in number of cores, network throughput is in KB." } ] }
  3. Facoltativamente, puoi installare l'interfaccia utente di Cruise Control. Per scaricarla, consulta la pagina Setting Up Cruise Control Frontend.

  4. Esegui il comando seguente per avviar Cruise Control. Prendi in considerazione l'utilizzo di uno strumento come screen o tmux per mantenere aperta una sessione di lunga durata.

    <path-to-your-kafka-installation>/bin/kafka-cruise-control-start.sh config/cruisecontrol.properties 9091
  5. 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 per implementare facilmente Cruise Control e Prometheus per ottenere informazioni più approfondite sulle prestazioni del tuo cluster MSK Amazon e ottimizzare l'utilizzo delle risorse.

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 conkafka-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.