Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
LinkedInUse's Cruise Control für Apache Kafka mit Amazon MSK
Sie können den Tempomat verwenden LinkedIn, um Ihren MSK Amazon-Cluster neu auszurichten, Anomalien zu erkennen und zu beheben und den Zustand und den Zustand des Clusters zu überwachen.
So können Sie Cruise Control herunterladen und einrichten
Erstellen Sie eine EC2 Amazon-Instance in demselben Amazon VPC wie der MSK Amazon-Cluster.
Installieren Sie Prometheus auf der EC2 Amazon-Instance, die Sie im vorherigen Schritt erstellt haben. Notieren Sie sich die private IP und den Port. Die Standard-Portnummer ist 9090. Weitere Informationen zur Konfiguration von Prometheus zum Aggregieren von Metriken für Ihren Cluster finden Sie unter Überwachen Sie einen MSK bereitgestellten Cluster mit Prometheus.
-
Laden Sie Cruise Control
auf der EC2 Amazon-Instance herunter. (Alternativ können Sie eine separate EC2 Amazon-Instanz für Cruise Control verwenden, wenn Sie dies bevorzugen.) Verwenden Sie für einen Cluster mit Apache Kafka Version 2.4.* die neueste Version 2.4.* von Cruise Control. Wenn Ihr Cluster über eine Apache-Kafka-Version verfügt, die älter als 2.4.* ist, verwenden Sie die neueste Version 2.0.* von Cruise Control. -
Dekomprimieren Sie die Cruise-Control-Datei und wechseln Sie dann in den dekomprimierten Ordner.
-
Führen Sie zum Installieren von git den folgenden Befehl aus.
sudo yum -y install git
-
Führen Sie den folgenden Befehl aus, um das lokale Repository zu initialisieren.
Your-Cruise-Control-Folder
Ersetzen Sie es durch den Namen Ihres aktuellen Ordners (den Ordner, den Sie beim Dekomprimieren des Cruise Control-Downloads erhalten haben).git init && git add . && git commit -m "Init local repo." && git tag -a
Your-Cruise-Control-Folder
-m "Init local version." -
Führen Sie den folgenden Befehl zum Entwickeln des Quell-Codes aus.
./gradlew jar copyDependantLibs
So können Sie Cruise Control konfigurieren und ausführen
-
Nehmen Sie die folgenden Änderungen an der Datei
config/cruisecontrol.properties
vor. Ersetzen Sie die Beispielzeichenfolge für Bootstrap-Server und Bootstrap-Brokers durch die Werte für Ihren Cluster. Um diese Zeichenfolgen für Ihren Cluster abzurufen, können Sie sich die Cluster-Details in der Konsole ansehen. Alternativ können Sie die DescribeClusterAPIOperationen GetBootstrapBrokersund oder ihre Entsprechungen verwenden. CLI# 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
Für Express-Broker empfehlen wir, das
DiskCapacityGoal
in keinem der Ziele zu verwenden, die in Ihren Analyzer-Konfigurationenkonfiguriert sind. -
Bearbeiten Sie die
config/capacityCores.json
Datei, um die richtige Festplattengröße und die richtigen CPU Kerne sowie die Netzwerkein-/-ausgangsbeschränkungen anzugeben. Für Express-Broker ist dieDISK
Kapazitätseingabe nur für die Einrichtung von Cruise Control erforderlich. Da der gesamte Speicher für Express-Broker MSK verwaltet wird, sollten Sie diesen Wert auf eine extrem hohe Zahl setzen, z.Integer.MAX_VALUE (2147483647)
B. Bei Standard-Brokern können Sie die DescribeClusterAPIOperation (oder Describe-ClusterCLI) verwenden, um die Festplattengröße zu ermitteln. Informationen zu CPU Kernen und Netzwerk-In/Out-Limits finden Sie unter EC2Amazon-Instance-Typen . -
Sie können optional die Cruise-Control-Benutzeroberfläche installieren. Um es herunterzuladen, wechseln Sie zu Einrichten des Cruise-Control-Frontend
. -
Führen Sie den folgenden Befehl aus, um Cruise Control zu starten. Erwägen Sie, ein Tool wie
screen
odertmux
zu verwenden, um eine Sitzung mit langer Laufzeit offen zu halten.<path-to-your-kafka-installation>
/bin/kafka-cruise-control-start.sh config/cruisecontrol.properties 9091 Stellen Sie mithilfe des Tempomats APIs oder der Benutzeroberfläche sicher, dass Cruise Control über die Cluster-Lastdaten verfügt und Vorschläge zur Neuverteilung macht. Es kann einige Minuten dauern, bis ein gültiges Metrikfenster angezeigt wird.
Wichtig
Nur Cruise Control-Versionen 2.5.60 und höher sind mit Express-Brokern kompatibel, da Express-Broker keine Zookeeper-Endpunkte offenlegen.
Verwenden Sie die automatisierte Bereitstellungsvorlage von Cruise Control für Amazon MSK
Sie können diese CloudFormation Vorlage
Wichtigste Funktionen:
Automatisierte Bereitstellung einer EC2 Amazon-Instance mit vorkonfiguriertem Cruise Control und Prometheus.
Support für von Amazon MSK bereitgestellte Cluster.
Flexible Authentifizierung mit PlainText und IAM.
Keine Abhängigkeit von Zookeeper für Cruise Control.
Passen Sie Prometheus-Ziele, Cruise Control-Kapazitätseinstellungen und andere Konfigurationen ganz einfach an, indem Sie Ihre eigenen Konfigurationsdateien bereitstellen, die in einem Amazon S3 S3-Bucket gespeichert sind.
Richtlinie zur Neugewichtung von Partitionen
Richtlinien für die Neuzuweisung von Kafka-Partitionen
Die Neuzuweisung von Partitionen in Kafka kann ressourcenintensiv sein, da dabei umfangreiche Daten zwischen Brokern übertragen werden müssen, was zu Netzwerküberlastungen führen und den Betrieb der Clients beeinträchtigen kann. Die folgenden bewährten Methoden helfen Ihnen dabei, die Neuzuweisung von Partitionen effektiv zu verwalten, indem sie die Drosselungsraten optimieren, Parallelitätskontrollen nutzen und die Neuzuweisungstypen verstehen, um Störungen des Clusterbetriebs zu minimieren.
Verwaltung der Parallelität in Cruise Control
Der Tempomat bietet automatische Einstellungsparameter, mit denen die Gleichzeitigkeit von Partitions- und Führungsbewegungen gesteuert werden kann. Die folgenden Parameter tragen dazu bei, bei Neuzuweisungen eine akzeptable Auslastung aufrechtzuerhalten:
Maximale Anzahl gleichzeitiger Partitionsbewegungen: Legen Sie fest, dass gleichzeitige Partitionsbewegungen zwischen Brokern begrenzt werden,
num.concurrent.partition.movements.per.broker
um eine übermäßige Netzwerkauslastung zu vermeiden.Beispiel
num.concurrent.partition.movements.per.broker = 5
Diese Einstellung beschränkt jeden Broker darauf, nicht mehr als 10 Partitionen gleichzeitig zu verschieben, wodurch die Last auf die einzelnen Broker verteilt wird.
Verwenden Sie die Drosselung, um die Bandbreite zu steuern
Drosselungsparameter: Verwenden Sie bei der Neuzuweisung von Partitionen den
kafka-reassign-partitions.sh
,--throttle parameter
um eine maximale Übertragungsrate (in Byte pro Sekunde) für die Datenbewegung zwischen Brokern festzulegen.Beispiel
--throttle 5000000
Dadurch wird eine maximale Bandbreite von 5 MB/s festgelegt.
-
Drosselklappeneinstellungen ausbalancieren: Die Wahl einer geeigneten Drosselungsrate ist entscheidend:
Wenn der Wert zu niedrig ist, kann die Neuzuweisung deutlich länger dauern.
Bei einer zu hohen Einstellung kann es bei Clients zu einer Erhöhung der Latenz kommen.
Beginnen Sie mit einer konservativen Drosselungsrate und passen Sie sie auf der Grundlage der Leistungsüberwachung des Clusters an. Testen Sie die von Ihnen gewählte Drosselung, bevor Sie sie auf eine Produktionsumgebung anwenden, um das optimale Gleichgewicht zu finden.
Testen und validieren Sie in einer Staging-Umgebung
Führen Sie vor der Implementierung von Neuzuweisungen in der Produktion Lasttests in einer Staging-Umgebung mit ähnlichen Konfigurationen durch. Auf diese Weise können Sie Parameter fein abstimmen und unerwartete Auswirkungen in der Live-Produktion minimieren.