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.
Problembehandlung bei Amazon MSK Replicator
Die folgenden Informationen können Ihnen bei der Behebung von Problemen mit MSK Replicator helfen. Beheben Sie Probleme mit Ihrem Amazon MSK-ClusterWeitere Amazon MSK-Funktionen finden Sie unter. Sie können Ihr Problem auch im AWS re:Post
Der Status des Replikators wechselt von CREATING zu FAILED
Häufige Ursachen für Fehler bei der Erstellung von MSK Replicator:
Stellen Sie sicher, dass die Sicherheitsgruppen, die Sie für den Zielcluster angegeben haben, über Regeln für ausgehenden Verkehr zu den Sicherheitsgruppen Ihres Zielclusters verfügen, und dass die Sicherheitsgruppen Ihres Zielclusters über eingehende Regeln verfügen, die den Datenverkehr aus den Replicator-Sicherheitsgruppen akzeptieren.
Stellen Sie für die regionsübergreifende Replikation sicher, dass in Ihrem Quellcluster die Multi-VPC-Konnektivität für die IAM-Zugriffskontrolle aktiviert ist und dass die Cluster-Richtlinie auf dem Quellcluster eingerichtet ist.
Stellen Sie sicher, dass die bei der Erstellung angegebene IAM-Rolle über die erforderlichen Lese- und Schreibberechtigungen für Ihre Quell- und Zielcluster verfügt, einschließlich der Berechtigungen zum Schreiben in Themen.
Stellen Sie sicher, dass Ihre Netzwerk-ACLs die Verbindung zwischen dem MSK Replicator und Ihren Clustern nicht blockieren.
Es ist möglich, dass Quell- oder Zielcluster nicht vollständig verfügbar sind, als der MSK Replicator versucht hat, eine Verbindung herzustellen. Dies kann an übermäßiger Auslastung, Festplattennutzung oder CPU-Auslastung liegen. Beheben Sie das Problem mit den Brokern und versuchen Sie erneut, den Replikator zu erstellen.
Nachdem Sie die oben genannten Validierungen durchgeführt haben, erstellen Sie den MSK-Replikator erneut.
Der Replikator scheint im Status CREATING hängen zu bleiben
Die Erstellung des MSK Replicators kann bis zu 30 Minuten dauern. Warten Sie 30 Minuten und überprüfen Sie den Status des Replikators erneut.
Replicator repliziert keine Daten oder repliziert nur Teildaten
Stellen Sie anhand der Metrik in Amazon sicher, dass bei Ihrem Replicator keine Authentifizierungsfehler auftreten.
AuthErrorCloudWatch Wenn diese Metrik über 0 liegt, überprüfen Sie die IAM-Rollenrichtlinie und stellen Sie sicher, dass für die Cluster-Berechtigungen keine Ablehnungsberechtigungen festgelegt sind.Stellen Sie sicher, dass bei Ihren Quell- und Zielclustern keine Probleme auftreten (zu viele Verbindungen, volle Festplattenkapazität oder hohe CPU-Auslastung).
Stellen Sie mithilfe der
KafkaClusterPingSuccessCountMetrik sicher, dass Ihre Cluster erreichbar sind. Wenn diese Metrik 0 ist oder keinen Datenpunkt hat, überprüfen Sie die Netzwerk- und IAM-Rollenberechtigungen.Stellen Sie anhand der Metrik sicher, dass Ihr Replikator keine Ausfälle hat.
ReplicatorFailureWenn der Wert über 0 liegt, überprüfen Sie die IAM-Rolle auf Berechtigungen auf Themenebene.Stellen Sie sicher, dass der reguläre Ausdruck in der Zulassungsliste mit den Namen der Themen übereinstimmt, die Sie replizieren möchten, und dass Themen nicht von der Ablehnungsliste ausgeschlossen werden.
Es kann bis zu 30 Sekunden dauern, bis der Replikator neue Themen erkennt und erstellt. Nachrichten, die erstellt wurden, bevor das Thema auf dem Zielcluster erstellt wurde, werden nicht repliziert, wenn die Startposition die letzte ist (Standardeinstellung).
Die Nachrichten-Offsets im Ziel-Cluster unterscheiden sich von denen im Quell-Cluster
MSK Replicator verarbeitet Nachrichten aus dem Quell-Cluster und sendet sie an den Ziel-Cluster, was zu unterschiedlichen Offsets führen kann. Wenn Sie die Consumer-Gruppen-Offset-Synchronisierung aktiviert haben, übersetzt MSK Replicator die Offsets automatisch, sodass Ihre Verbraucher nach dem Failover die Verarbeitung fast an der Stelle fortsetzen können, an der sie aufgehört haben.
Replicator synchronisiert die Offsets für Verbrauchergruppen nicht
Stellen Sie sicher, dass die Datenreplikation erwartungsgemäß funktioniert.
Stellen Sie sicher, dass der reguläre Ausdruck in der Zulassungsliste den Benutzergruppen entspricht, die Sie replizieren möchten.
Stellen Sie sicher, dass MSK Replicator das Thema auf dem Zielcluster erstellt hat. Wenn Ihre Consumer-Gruppe auf dem Quell-Cluster nur Nachrichten verarbeitet hat, die nicht repliziert wurden, wird die Consumer-Gruppe nicht auf den Ziel-Cluster repliziert. Sobald Ihre Consumer-Gruppe anfängt, neu replizierte Nachrichten zu lesen, repliziert MSK Replicator die Consumer-Gruppe automatisch.
Anmerkung
MSK Replicator optimiert die Offset-Synchronisierung von Benutzergruppen für Verbraucher, die vom Ende der Themenpartition aus lesen. Wenn Ihre Nutzergruppen auf dem Quell-Cluster hinterherhinken, kann es sein, dass Sie auf dem Ziel-Cluster eine höhere Verzögerung feststellen. Wenn Ihre Verbraucher aufholen, reduziert MSK Replicator die Verzögerung automatisch.
Die Replikationslatenz ist hoch oder nimmt weiter zu
Stellen Sie sicher, dass Sie die richtige Anzahl an Partitionen haben. Die folgende Tabelle zeigt die empfohlene Mindestanzahl an Partitionen für den gewünschten Durchsatz.
Durchsatz und empfohlene Mindestanzahl von Partitionen Durchsatz (MB/s) Erforderliche Mindestanzahl an Partitionen 50 167 100 334 250 833 500 1666 1000 3333 Stellen Sie sicher, dass Ihre Cluster über genügend Lese- und Schreibkapazität verfügen. MSK-Replikator fungiert als Verbraucher für Ihren Quell-Cluster (Ausgang) und als Produzent für Ihren Ziel-Cluster (Eingang). Stellen Sie Clusterkapazität bereit, um den Replikationsdatenverkehr zusätzlich zum anderen Datenverkehr zu unterstützen.
Die Replikationslatenz variiert je nach Entfernung des Regionspaars.
Stellen Sie anhand der Metrik sicher, dass Ihr Replikator nicht gedrosselt wird.
ThrottleTimeWenn der Wert über 0 liegt, passen Sie die Kafka-Kontingente an. Siehe Verwaltung des Durchsatzes mit Kafka-Kontingenten.Informieren Sie sich im AWS Service Health Dashboard über
MSK-Serviceereignisse in Ihrer Region.
Problembehandlung mithilfe der Metrik ReplicatorFailure
Die ReplicatorFailure Metrik hilft Ihnen bei der Überwachung und Erkennung von Replikationsproblemen. Ein Wert ungleich Null weist in der Regel auf einen Replikationsfehler hin, der auf Beschränkungen der Nachrichtengröße, Verletzungen des Zeitstempelbereichs oder Probleme mit der Batchgröße von Datensätzen zurückzuführen ist. Wenn Sie die Protokollzustellung für Ihren Replikator konfiguriert haben, können Sie anhand der übermittelten Protokollmeldungen den spezifischen Fehler identifizieren. Weitere Details finden Sie unter MSK Replicator-Protokolle. Wenn die Protokollzustellung nicht konfiguriert ist, gehen Sie wie folgt vor, um das Statusthema des Replikators nach Fehlermeldungen abzufragen.
Wenn die ReplicatorFailure Metrik einen Wert ungleich Null meldet, gehen Sie zur Fehlerbehebung wie folgt vor:
Konfigurieren Sie einen Client, der eine Verbindung zum MSK-Zielcluster herstellen kann und für den die Apache Kafka CLI-Tools eingerichtet sind. Siehe Stellen Sie eine Connect zu einem von Amazon MSK bereitgestellten Cluster her.
Öffnen Sie die Amazon MSK-Konsole unter? https://console.aws.amazon.com/msk/home
region=us-east-1#/home/. Rufen Sie die ARNs des MSK Replicators und des MSK-Zielclusters sowie die Broker-Endpunkte des MSK-Zielclusters ab. Holen Sie sich die Bootstrap-Broker mit dem AWS-Managementkonsole
Exportieren Sie den MSK Replicator-ARN und die Broker-Endpunkte:
export TARGET_CLUSTER_SERVER_STRING=<BootstrapServerString> export REPLICATOR_ARN=<ReplicatorARN> export CONSUMER_CONFIG_FILE=<ConsumerConfigFile>Speichern Sie das folgende Skript in Ihrem
<path-to-your-kafka-installation>/binVerzeichnis unter.query-replicator-failure-message.sh#!/bin/bash # Script: Query MSK Replicator Failure Message # Description: This script queries exceptions from AWS MSK Replicator status topics # It takes a replicator ARN and bootstrap server as input and searches for replicator exceptions # in the replicator's status topic, formatting and displaying them in a readable manner # # Required Arguments: # --replicator-arn: The ARN of the AWS MSK Replicator # --bootstrap-server: The Kafka bootstrap server to connect to # --consumer.config: Consumer config properties file # Usage Example: # ./query-replicator-failure-message.sh --replicator-arn <replicator-arn> --bootstrap-server <bootstrap-server> --consumer.config <consumer.config> print_usage() { echo "USAGE: $0 ./query-replicator-failure-message.sh --replicator-arn <replicator-arn> --bootstrap-server <bootstrap-server> --consumer.config <consumer.config>" echo "--replicator-arn <String: MSK Replicator ARN> REQUIRED: The ARN of AWS MSK Replicator." echo "--bootstrap-server <String: server to connect to> REQUIRED: The Kafka server to connect to." echo "--consumer.config <String: config file> REQUIRED: Consumer config properties file." exit 1 } # Initialize variables replicator_arn="" bootstrap_server="" consumer_config="" # Parse arguments while [[ $# -gt 0 ]]; do case "$1" in --replicator-arn) if [ -z "$2" ]; then echo "Error: --replicator-arn requires an argument." print_usage fi replicator_arn="$2"; shift 2 ;; --bootstrap-server) if [ -z "$2" ]; then echo "Error: --bootstrap-server requires an argument." print_usage fi bootstrap_server="$2"; shift 2 ;; --consumer.config) if [ -z "$2" ]; then echo "Error: --consumer.config requires an argument." print_usage fi consumer_config="$2"; shift 2 ;; *) echo "Unknown option: $1"; print_usage ;; esac done # Check for required arguments if [ -z "$replicator_arn" ] || [ -z "$bootstrap_server" ] || [ -z "$consumer_config" ]; then echo "Error: --replicator-arn, --bootstrap-server, and --consumer.config are required." print_usage fi # Extract replicator name and suffix from ARN replicator_arn_suffix=$(echo "$replicator_arn" | awk -F'/' '{print $NF}') replicator_name=$(echo "$replicator_arn" | awk -F'/' '{print $(NF-1)}') echo "Replicator name: $replicator_name" # List topics and find the status topic topics=$(./kafka-topics.sh --command-config client.properties --list --bootstrap-server "$bootstrap_server") status_topic_name="__amazon_msk_replicator_status_${replicator_name}_${replicator_arn_suffix}" # Check if the status topic exists if echo "$topics" | grep -Fq "$status_topic_name"; then echo "Found replicator status topic: '$status_topic_name'" ./kafka-console-consumer.sh --bootstrap-server "$bootstrap_server" --consumer.config "$consumer_config" --topic "$status_topic_name" --from-beginning | stdbuf -oL grep "Exception" | stdbuf -oL sed -n 's/.*Exception:\(.*\) Topic: \([^,]*\), Partition: \([^\]*\).*/ReplicatorException:\1 Topic: \2, Partition: \3/p' else echo "No topic matching the pattern '$status_topic_name' found." fiFühren Sie dieses Skript aus, um die MSK Replicator-Fehlermeldungen abzufragen:
<path-to-your-kafka-installation>/bin/query-replicator-failure-message.sh --replicator-arn $REPLICATOR_ARN --bootstrap-server $TARGET_CLUSTER_SERVER_STRING --consumer.config $CONSUMER_CONFIG_FILEDieses Skript gibt alle Fehler mit ihren Ausnahmemeldungen und den betroffenen Themenpartitionen aus. Da das Thema alle historischen Fehlermeldungen enthält, sollten Sie die Untersuchung mit der letzten Meldung beginnen. Das Folgende ist ein Beispiel für eine Fehlermeldung:
ReplicatorException: The request included a message larger than the max message size the server will accept. Topic: test, Partition: 1
Häufige Fehler und Lösungen
Im Folgenden werden häufige MSK Replicator-Fehler und deren Behebung beschrieben.
- Nachrichtengröße größer als max.request.size
-
Ursache: Die Größe der einzelnen Nachrichten überschreitet 10 MB (das Standardmaximum).
Das Folgende ist ein Beispiel für diesen Fehlermeldungstyp.
ReplicatorException: The message is 20635370 bytes when serialized which is larger than 10485760, which is the value of the max.request.size configuration. Topic: test, Partition: 1Lösung: Reduzieren Sie die einzelnen Nachrichtengrößen in Ihrem Thema. Wenn dies nicht möglich ist, folgen Sie den Anweisungen zur Beantragung einer Limiterhöhung.
- Nachrichtengröße, die größer ist als die maximale Nachrichtengröße, die der Server akzeptiert
-
Ursache: Die Nachrichtengröße überschreitet die maximale Nachrichtengröße des Zielclusters.
Das Folgende ist ein Beispiel für diesen Fehlermeldungstyp.
ReplicatorException: The request included a message larger than the max message size the server will accept. Topic: test, Partition: 1Lösung: Erhöhen Sie die
max.message.bytesKonfiguration auf dem Zielcluster oder Topic. Siehe max.message.bytes. - Der Zeitstempel liegt außerhalb des zulässigen Bereichs
-
Ursache: Der Zeitstempel der Nachricht liegt außerhalb des zulässigen Bereichs des Zielclusters.
Das Folgende ist ein Beispiel für diesen Fehlermeldungstyp.
ReplicatorException: Timestamp 1730137653724 of message with offset 0 is out of range. The timestamp should be within [1730137892239, 1731347492239] Topic: test, Partition: 1Lösung: Aktualisieren Sie die
message.timestamp.before.max.msKonfiguration des Zielclusters. Siehe https://kafka.apache.org/documentation/#topicconfigs_message.timestamp.before.max.msmessage.timestamp.before.max.ms. - Der Stapel ist zu groß
-
Ursache: Die Stapelgröße des Datensatzes überschreitet die Segmentgröße, die für das Thema im Zielcluster festgelegt wurde. MSK Replicator unterstützt eine maximale Batchgröße von 1 MB.
Das Folgende ist ein Beispiel für diesen Fehlermeldungstyp.
ReplicatorException: The request included message batch larger than the configured segment size on the server. Topic: test, Partition: 1Lösung: Aktualisieren Sie die Werte der Zielcluster
segment.bytesauf mindestens 1048576 (1 MB). Siehe segment.bytes. https://kafka.apache.org/documentation/#topicconfigs_segment.bytes
Anmerkung
Wenn die ReplicatorFailure Metrik nach Anwendung dieser Lösungen weiterhin Werte ungleich Null ausgibt, wiederholen Sie den Fehlerbehebungsprozess, bis die Metrik einen Wert von Null ausgibt.
Beheben Sie Probleme bei der Replikation von selbstverwalteten Kafka-Clustern
MSK Replicator kann keine Verbindung zum selbstverwalteten Kafka-Cluster herstellen
Führen Sie die folgenden Prüfungen durch, wenn MSK Replicator keine Verbindung zu Ihrem selbstverwalteten Kafka-Cluster herstellen kann:
Stellen Sie sicher, dass Ihre VPN- oder Direct Connect-Verbindung aktiv ist und die Routing-Tabellen korrekt sind.
Stellen Sie sicher, dass Sicherheitsgruppen eingehenden Datenverkehr von MSK Replicator-Subnetzen am SASL_SSL-Port zulassen (normalerweise 9096).
Überprüfen Sie die DNS-Auflösung von der VPC zu den Hostnamen der selbstverwalteten Clusterbroker.
Überprüfen Sie die
KafkaClusterPingSuccessCountMetrik in Amazon CloudWatch — ein Wert von 0 weist auf einen Verbindungsfehler hin.
SASL/SCRAM oder Fehler bei der mTLS-Authentifizierung
Wenn die AuthError Metrik ungleich Null ist oder die Replicator-Logs mTLS-Fehler anzeigen SASL/SCRAM :
Stellen Sie sicher, dass die in AWS Secrets Manager gespeicherten Anmeldeinformationen mit den SCRAM-Benutzeranmeldedaten auf dem selbstverwalteten Cluster (für SASL/SCRAM) übereinstimmen oder dass das Client-Zertifikat und der private Schlüssel korrekt sind (für mTLS).
Stellen Sie sicher, dass der SCRAM-Benutzer oder der Zertifikatsprinzipal über die erforderlichen ACL-Berechtigungen verfügt (Lesen, Beschreiben zu Themen; Lesen, Beschreiben zu Benutzergruppen; Beschreiben zum Cluster).
Überprüfen Sie die
AuthErrorMetrik, um Authentifizierungsfehler zu bestätigen und anhand derClusterAliasDimension zu ermitteln, ob der Quell- oder Zielcluster betroffen ist.
SASL/OAUTHBEARER (OAuth) -Authentifizierungsfehler
Wenn die AuthError Metrik ungleich Null ist oder die Replicator-Logs das Abrufen von Zugriffstokens oder Fehler anzeigen: SASL/OAUTHBEARER
Stellen Sie sicher, dass das korrekt
tokenEndpointUrlist, das HTTPS-Schema verwendet und von den VPC-Subnetzen aus erreichbar ist, die Sie für den Replicator angegeben haben. Ein WertKafkaClusterPingSuccessCountvon 0 in Kombination mit Token-Fehlern weist häufig darauf hin, dass der Token-Endpunkt nicht erreichbar ist.Stellen Sie für den Mechanismus für Client-Anmeldeinformationen sicher, dass die
client_idundclient_secretim AWS Secrets Manager korrekt sind und dass der Token-Erfassungsmechanismus den Erwartungen Ihres IDP entspricht.Stellen Sie sicher,
tokenEndpointAuthenticationMethoddass der für Ihren Token-Erfassungsmechanismus gültig ist. Für den Mechanismus der Client-Anmeldeinformationen istPOSToder erforderlichBASIC, und für den Mechanismus zur Bestätigung der Client-Anmeldeinformationen ist dies erforderlichNONE.Stellen Sie für die Mechanismen zur Bestätigung des IAM-JWT-Bearers und der Client-Anmeldeinformationen sicher, dass die Dienstausführungsrolle über die
sts:GetWebIdentityTokenentsprechende Berechtigung verfügt und dass dieaudienceund den Erwartungen Ihres IDPsigningAlgorithmentsprechen, wenn er das Token validiert.Wenn Ihr IDP eine private CA verwendet, stellen Sie sicher, dass das CA-Zertifikat, auf das verwiesen wird, vollständig und gültig ist.
tokenEndpointTlsCertificateArnStellen Sie sicher, dass der Kafka-Principal, dem Ihr IDP das Zugriffstoken zuordnet, über die ACL-Berechtigungen verfügt, die MSK Replicator für den Quellcluster benötigt.
Überprüfen Sie die Replicator-Protokolle auf den HTTP-Status und den vom Token-Endpunkt zurückgegebenen OAuth-Code.
errorMSK Replicator protokolliert diese Felder, protokolliert jedoch niemals den Antworttext des Token-Endpunkts.
Probleme mit dem SSL-Zertifikat
Wenn der Replikator keine sichere Verbindung zum selbstverwalteten Cluster herstellen kann:
Stellen Sie sicher, dass der
certificateWert in AWS Secrets Manager die gesamte CA-Zertifikatskette im PEM-Format enthält.Stellen Sie sicher, dass der SSL-Listener auf allen selbstverwalteten Cluster-Brokern konfiguriert ist.
Stellen Sie sicher, dass das Zertifikat nicht abgelaufen ist und von einer vertrauenswürdigen Zertifizierungsstelle ausgestellt wurde.
Fehler bei der Consumer-Group-Offset-Synchronisierung für selbstverwaltete Cluster
Wenn Offsets für Verbrauchergruppen nicht korrekt synchronisiert werden:
Überprüfen Sie die
ConsumerGroupOffsetSyncFailureMetrik — sie sollte 0 sein.Stellen Sie sicher, dass Verbrauchergruppen den Quell-Cluster aktiv nutzen (inaktive Nutzungsgruppen werden möglicherweise nicht synchronisiert).
Stellen Sie für die bidirektionale Replikation sicher, dass diese Option
trueauf beiden Replikatoren aktiviertsynchroniseConsumerGroupOffsetsist.