Durch die Nutzung von AWS re:Post stimmt du den AWS re:Post Nutzungsbedingungen

Wie behebe ich Probleme bei der Verbindung mit meinem Amazon MSK-Cluster?

Lesedauer: 14 Minute
0

Beim Versuch, eine Verbindung zu meinem Amazon MSK-Cluster (Amazon Managed Streaming für Apache Kafka) herzustellen, treten Probleme auf.

Lösung

Wenn Sie versuchen, eine Verbindung zu einem Amazon MSK-Cluster herzustellen, erhalten Sie möglicherweise die folgenden Fehlertypen:

  • Fehler, die nicht spezifisch für den Authentifizierungstyp des Clusters sind
  • Fehler, die spezifisch für die TLS-Client-Authentifizierung sind
  • Fehler, die spezifisch für die Client-Authentifizierung von AWS Identity and Access Management (IAM) sind
  • Fehler, die spezifisch für die Client-Authentifizierung mit Simple Authentication and Security Layer/Salted Challenge Response Mechanism (SASL/SCARM) sind

Fehler, die nicht mit einem bestimmten Authentifizierungstyp zusammenhängen

Wenn Sie versuchen, eine Verbindung zu Ihrem Amazon MSK-Cluster herzustellen, erhalten Sie möglicherweise einen der folgenden Fehler, unabhängig davon, welcher Authentifizierungstyp für Ihren Cluster aktiviert ist.

java.lang.OutOfMemoryError: Java heap space

Sie erhalten diese Fehlermeldung, wenn Sie die Datei mit den Client-Eigenschaften nicht erwähnen, wenn Sie einen Befehl für Cluster-Vorgänge mit einer beliebigen Art von Authentifizierung ausführen:

Beispielsweise erhalten Sie den OutOfMemoryError, wenn Sie den folgenden Befehl mit dem IAM-Authentifizierungsport ausführen:

./kafka-topics.sh --create --bootstrap-server $BOOTSTRAP:9098 --replication-factor 3 --partitions 1 --topic TestTopic

Der folgende Befehl wird jedoch erfolgreich ausgeführt, wenn Sie ihn mit dem IAM-Authentifizierungsport ausführen:

./kafka-topics.sh --create --bootstrap-server $BOOTSTRAP:9098  --command-config client.properties --replication-factor 3 --partitions 1 --topic TestTopic

Um diesen Fehler zu beheben, stellen Sie sicher, dass Sie die entsprechenden Eigenschaften, die auf der Art der Authentifizierung basieren, in die Datei client.properties aufnehmen.

org.apache.kafka.common.errors.TimeoutException: Zeitüberschreitung beim Warten auf eine Knotenzuweisung. Aufruf: createTopics

Dieser Fehler wird normalerweise angezeigt, wenn zwischen der Client-Anwendung und dem Amazon MSK-Cluster eine Netzwerkfehlkonfiguration vorliegt.

Um dieses Problem zu beheben, überprüfen Sie die Netzwerkkonnektivität, indem Sie den folgenden Konnektivitätstest durchführen.

Führen Sie den Befehl vom Client-Computer aus.

telnet bootstrap-broker port-number

Gehen Sie unbedingt folgendermaßen vor:

  • Ersetzen Sie bootstrap-broker durch eine der Broker-Adressen aus Ihrem Amazon MSK-Cluster.
  • Ersetzen Sie port-number durch den entsprechenden Portwert, der auf der für Ihren Cluster aktivierten Authentifizierung basiert.

Wenn der Client-Computer auf die Broker zugreifen kann, liegen keine Verbindungsprobleme vor. Wenn nicht, überprüfen Sie die Netzwerkkonnektivität, insbesondere die eingehenden und ausgehenden Regeln für die Sicherheitsgruppe.

org.apache.kafka.common.errors.TopicAuthorizationException: Nicht berechtigt, auf Themen zuzugreifen: [test_topic]

Sie erhalten diesen Fehler, wenn Sie die IAM-Authentifizierung verwenden und Ihre Zugriffsrichtlinie Themenvorgänge wie WriteData und ReadData blockiert.

Beachten Sie, dass Berechtigungsgrenzen und Dienstkontrollrichtlinien auch Benutzer daran hindern, ohne die erforderliche Autorisierung eine Verbindung zum Cluster herzustellen.

Wenn Sie eine Nicht-IAM-Authentifizierung verwenden, überprüfen Sie, ob Sie Zugriffssteuerungslisten (ACLs) auf Themenebene hinzugefügt haben, die Vorgänge blockieren.

Führen Sie den folgenden Befehl aus, um die ACLs aufzulisten, die auf ein Thema angewendet werden:

bin/kafka-acls.sh --bootstrap-server $BOOTSTRAP:PORT --command-config adminclient-configs.conf –-list –-topic testtopic

Die Authentifizierung der Verbindung zum Knoten -1 (b-1-testcluster.abc123.c7.kafka.us-east-1.amazonaws.com/3.11.111.123:9098) ist aus folgenden Gründen fehlgeschlagen: Der Client-SASL-Mechanismus 'SCRAM-SHA-512' ist auf dem Server nicht aktiviert. Die aktivierten Mechanismen sind [AWS_MSK_IAM]

-or-

Die Authentifizierung der Verbindung zum Knoten -1 (b-1-testcluster.abc123.c7.kafka.us-east-1.amazonaws.com/3.11.111.123:9096) ist aus folgenden Gründen fehlgeschlagen: Der Client-SASL-Mechanismus 'AWS_MSK_IAM' ist auf dem Server nicht aktiviert. Die aktivierten Mechanismen sind [SCRAM-SHA-512]

Diese Fehler treten auf, wenn Sie eine Portnummer verwenden, die nicht mit dem SASL-Mechanismus oder -Protokoll in der Client-Eigenschaftendatei übereinstimmt. Dies ist die Eigenschaftendatei, die Sie im Befehl zum Ausführen von Cluster-Vorgängen verwendet haben.

  • Verwenden Sie die folgenden Ports, um mit Brokern in einem Cluster zu kommunizieren, der für die Verwendung von SASL/SCRAM eingerichtet ist: 9096 für den Zugriff innerhalb von AWS und 9196 für den öffentlichen Zugriff
  • Verwenden Sie die folgenden Ports, um mit Brokern in einem Cluster zu kommunizieren, der für die Verwendung der IAM-Zugriffskontrolle eingerichtet ist: 9098 für den Zugriff innerhalb von AWS und 9198 für den öffentlichen Zugriff

Zeitüberschreitung beim Warten auf Verbindung im Status: CONNECTING

Dieser Fehler kann auftreten, wenn der Client versucht, über die Apache ZooKeeper-Zeichenfolge eine Verbindung zum Cluster herzustellen, und die Verbindung nicht hergestellt werden kann. Dieser Fehler kann auch auftreten, wenn die Apache ZooKeeper-Zeichenfolge falsch ist.

Sie erhalten die folgende Fehlermeldung, wenn Sie für die Verbindung zum Cluster die falsche Apache ZooKeeper-Zeichenfolge verwenden:

./kafka-topics.sh --zookeeper z-1.encryption.3a3zuy.c7.kafka.us-east-1.amazonaws.com:2181,z-2.encryption.3a3zuy.c7.kafka.us-east-1.amazonaws.com:2181,z-3.encryption.3a3zuy.c7.kafka.us-east-1.amazonaws.com:2181 --list
[2020-04-10 23:58:47,963] WARN Client session timed out, have not heard from server in 10756ms for sessionid 0x0 (org.apache.zookeeper.ClientCnxn)
[2020-04-10 23:58:58,581] WARN Client session timed out, have not heard from server in 10508ms for sessionid 0x0 (org.apache.zookeeper.ClientCnxn)
[2020-04-10 23:59:08,689] WARN Client session timed out, have not heard from server in 10004ms for sessionid 0x0 (org.apache.zookeeper.ClientCnxn)
Exception in thread "main" kafka.zookeeper.ZooKeeperClientTimeoutException: Timed out waiting for connection while in state: CONNECTING
at kafka.zookeeper.ZooKeeperClient.$anonfun$waitUntilConnected$3(ZooKeeperClient.scala:259)
at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
at kafka.utils.CoreUtils$.inLock(CoreUtils.scala:253)
at kafka.zookeeper.ZooKeeperClient.waitUntilConnected(ZooKeeperClient.scala:255)
at kafka.zookeeper.ZooKeeperClient.<init>(ZooKeeperClient.scala:113)
at kafka.zk.KafkaZkClient$.apply(KafkaZkClient.scala:1858)
at kafka.admin.TopicCommand$ZookeeperTopicService$.apply(TopicCommand.scala:321)
at kafka.admin.TopicCommand$.main(TopicCommand.scala:54)
at kafka.admin.TopicCommand.main(TopicCommand.scala)

Um diesen Fehler zu beheben, gehen Sie wie folgt vor:

  • Stellen Sie sicher, dass die verwendete Apache ZooKeeper-Zeichenfolge korrekt ist.
  • Stellen Sie sicher, dass die Sicherheitsgruppe für Ihren Amazon MSK-Cluster eingehenden Datenverkehr von der Sicherheitsgruppe des Clients auf den Apache ZooKeeper-Ports zulässt.

Das Thema 'topicName' ist nach 60.000 ms nicht in den Metadaten vorhanden oder die Verbindung zum Knoten -<node-id> (<broker-host>/<broker-ip>:<port>) konnte nicht hergestellt werden. Der Broker ist möglicherweise nicht verfügbar.(org.apache.kafka.clients.NetworkClient)

Dieser Fehler kann unter einer der folgenden Bedingungen auftreten:

  • Der Hersteller oder Verbraucher kann keine Verbindung zum Broker-Host und -Port herstellen.
  • Die Broker-Zeichenfolge ist nicht gültig.

Wenn Sie diesen Fehler erhalten, obwohl die Konnektivität des Clients oder Brokers ursprünglich funktionierte, ist der Broker möglicherweise ausgefallen.

Der folgende Fehler wird angezeigt, wenn Sie versuchen, von außerhalb der Virtual Private Cloud (VPC) auf den Cluster zuzugreifen, indem Sie die Broker-Zeichenfolge zum Erzeugen von Daten zu verwenden:

./kafka-console-producer.sh --broker-list b-2.encryption.3a3zuy.c7.kafka.us-east-1.amazonaws.com:9092,b-1.encryption.3a3zuy.c7.kafka.us-east-1.amazonaws.com:9092 --topic test
[2020-04-10 23:51:57,668] ERROR Error when sending message to topic test with key: null, value: 1 bytes with error: (org.apache.kafka.clients.producer.internals.ErrorLoggingCallback)
org.apache.kafka.common.errors.TimeoutException: Topic test not present in metadata after 60000 ms.

Sie erhalten die folgende Fehlermeldung, wenn Sie versuchen, von außerhalb der VPC auf den Cluster zuzugreifen, um Daten mithilfe der Broker-Zeichenfolge zu konsumieren:

./kafka-console-consumer.sh --bootstrap-server b-2.encryption.3a3zuy.c7.kafka.us-east-1.amazonaws.com:9092,b-1.encryption.3a3zuy.c7.kafka.us-east-1.amazonaws.com:9092 --topic test
[2020-04-11 00:03:21,157] WARN [Consumer clientId=consumer-console-consumer-88994-1, groupId=console-consumer-88994] Connection to node -1 (b-2.encryption.3a3zuy.c7.kafka.us-east-1.amazonaws.com/172.31.6.19:9092) could not be established. Broker may not
be available. (org.apache.kafka.clients.NetworkClient)
[2020-04-11 00:04:36,818] WARN [Consumer clientId=consumer-console-consumer-88994-1, groupId=console-consumer-88994] Connection to node -2 (b-1.encryption.3a3zuy.c7.kafka.us-east-1.amazonaws.com/172.31.44.252:9092) could not be established. Broker may
not be available. (org.apache.kafka.clients.NetworkClient)
[2020-04-11 00:05:53,228] WARN [Consumer clientId=consumer-console-consumer-88994-1, groupId=console-consumer-88994] Connection to node -1 (b-2.encryption.3a3zuy.c7.kafka.us-east-1.amazonaws.com/172.31.6.19:9092) could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)

Gehen Sie wie folgt vor, um diese Fehler zu beheben:

  • Stellen Sie sicher, dass die richtige Broker-Zeichenfolge und der richtige Port verwendet werden.
  • Wenn der Fehler darauf zurückzuführen ist, dass der Broker ausgefallen ist, überprüfen Sie anhand der Amazon CloudWatch-Metrik ActiveControllerCount, ob der Controller während des gesamten Zeitraums aktiv war. Der Wert dieser Metrik muss 1 sein. Jeder andere Wert kann darauf hinweisen, dass einer der Broker im Cluster nicht verfügbar ist. Überprüfen Sie außerdem die Metrik ZooKeeperSessionState um sicherzustellen, dass die Broker ständig mit den Apache ZooKeeper-Knoten kommunizierten. Um zu verstehen, warum der Broker ausgefallen ist, schauen Sie sich die Metrik KafkaDataLogsDiskUsed an und überprüfen Sie, ob dem Broker nicht mehr genügend Speicherplatz zur Verfügung steht. Weitere Informationen zu Amazon MSK-Metriken und den erwarteten Werten finden Sie unter Amazon MSK-Metriken für die Überwachung mit CloudWatch.
  • Stellen Sie sicher, dass der Fehler nicht durch die Netzwerkkonfiguration verursacht wird. Amazon MSK-Ressourcen werden innerhalb der VPC bereitgestellt. Daher wird standardmäßig von den Clients erwartet, dass sie sich mit dem Amazon MSK-Cluster verbinden oder vom Cluster aus über ein privates Netzwerk in derselben VPC produzieren und konsumieren. Wenn Sie von außerhalb der VPC auf den Cluster zugreifen, erhalten Sie möglicherweise diese Fehler. Informationen zur Fehlerbehebung, wenn sich der Client in derselben VPC wie der Cluster befindet, finden Sie unter Zugriff auf Cluster aus AWS nicht möglich: Netzwerkprobleme. Informationen zum Zugriff auf den Cluster von außerhalb der VPC finden Sie unter Wie stelle ich eine Verbindung zu meinem Amazon MSK-Cluster außerhalb der VPC her?

Fehler, die spezifisch für die TLS-Client-Authentifizierung sind

Wenn Sie versuchen, eine Verbindung zu dem Cluster herzustellen, für den die TLS-Client-Authentifizierung aktiviert ist, erhalten Sie möglicherweise die folgenden Fehlermeldungen. Diese Fehler können durch Probleme mit der SSL-bezogenen Konfiguration verursacht werden.

Bootstrap-Broker <broker-host>:9094 (id: -<broker-id> rack: null) getrennt

Dieser Fehler kann auftreten, wenn der Hersteller oder Verbraucher versucht, über den TLS-Port 9094 eine Verbindung zu einem TLS-verschlüsselten Cluster herzustellen, ohne die SSL-Konfiguration zu übergeben.

Wenn der Hersteller versucht, eine Verbindung zum Cluster herzustellen, wird möglicherweise die folgende Fehlermeldung angezeigt:

./kafka-console-producer.sh --broker-list b-2.encryption.3a3zuy.c7.kafka.us-east-1.amazonaws.com:9094,b-1.encryption.3a3zuy.c7.kafka.us-east-1.amazonaws.com:9094 --topic test
[2020-04-10 18:57:58,019] WARN [Producer clientId=console-producer] Bootstrap broker b-1.encryption.3a3zuy.c7.kafka.us-east-1.amazonaws.com:9094 (id: -2 rack: null) disconnected (org.apache.kafka.clients.NetworkClient)
[2020-04-10 18:57:58,342] WARN [Producer clientId=console-producer] Bootstrap broker b-1.encryption.3a3zuy.c7.kafka.us-east-1.amazonaws.com:9094 (id: -2 rack: null) disconnected (org.apache.kafka.clients.NetworkClient)
[2020-04-10 18:57:58,666] WARN [Producer clientId=console-producer] Bootstrap broker b-2.encryption.3a3zuy.c7.kafka.us-east-1.amazonaws.com:9094 (id: -1 rack: null) disconnected (org.apache.kafka.clients.NetworkClient)

Wenn der Verbraucher versucht, eine Verbindung zum Cluster herzustellen, wird möglicherweise die folgende Fehlermeldung angezeigt:

./kafka-console-consumer.sh --bootstrap-server b-2.encryption.3a3zuy.c7.kafka.us-east-1.amazonaws.com:9094,b-1.encryption.3a3zuy.c7.kafka.us-east-1.amazonaws.com:9094 --topic test
[2020-04-10 19:09:03,277] WARN [Consumer clientId=consumer-console-consumer-79102-1, groupId=console-consumer-79102] Bootstrap broker b-2.encryption.3a3zuy.c7.kafka.us-east-1.amazonaws.com:9094 (id: -1 rack: null) disconnected (org.apache.kafka.clients.NetworkClient)
[2020-04-10 19:09:03,596] WARN [Consumer clientId=consumer-console-consumer-79102-1, groupId=console-consumer-79102] Bootstrap broker b-2.encryption.3a3zuy.c7.kafka.us-east-1.amazonaws.com:9094 (id: -1 rack: null) disconnected (org.apache.kafka.clients.NetworkClient)
[2020-04-10 19:09:03,918] WARN [Consumer clientId=consumer-console-consumer-79102-1, groupId=console-consumer-79102] Bootstrap broker b-1.encryption.3a3zuy.c7.kafka.us-east-1.amazonaws.com:9094 (id: -2 rack: null) disconnected (org.apache.kafka.clients.NetworkClient)

Um diesen Fehler zu beheben, richten Sie die SSL-Konfiguration ein. Weitere Informationen finden Sie unter Wie fange ich mit der Verschlüsselung an?

Wenn die Client-Authentifizierung für Ihren Cluster aktiviert ist, müssen Sie zusätzliche Parameter hinzufügen, die sich auf Ihr ACM Private CA-Zertifikat beziehen. Weitere Informationen finden Sie unter Gegenseitige TLS-Authentifizierung.

FEHLER Die Änderungszeit des Schlüsselspeichers konnte nicht ermittelt werden: <configure-path-to-truststore>

-or-

Keystore konnte nicht geladen werden

Wenn es ein Problem mit der Truststore-Konfiguration gibt, kann dieser Fehler auftreten, wenn Truststore-Dateien für den Hersteller und den Verbraucher geladen werden. In den Protokollen werden möglicherweise Informationen wie die folgenden angezeigt:

./kafka-console-consumer --bootstrap-server b-2.encryption.3a3zuy.c7.kafka.us-east-1.amazonaws.com:9094,b-1.encryption.3a3zuy.c7.kafka.us-east-1.amazonaws.com:9094 --topic test --consumer.config /home/ec2-user/ssl.config
[2020-04-11 10:39:12,194] ERROR Modification time of key store could not be obtained: /home/ec2-ser/certs/kafka.client.truststore.jks (org.apache.kafka.common.security.ssl.SslEngineBuilder)
java.nio.file.NoSuchFileException: /home/ec2-ser/certs/kafka.client.truststore.jks
[2020-04-11 10:39:12,253] ERROR Unknown error when running consumer: (kafka.tools.ConsoleConsumer$)
Caused by: org.apache.kafka.common.KafkaException: org.apache.kafka.common.KafkaException: org.apache.kafka.common.KafkaException: Failed to load SSL keystore /home/ec2-ser/certs/kafka.client.truststore.jks of type JKS

In diesem Fall weisen die Protokolle auf ein Problem beim Laden der Truststore-Datei hin. Der Pfad zur Truststore-Datei ist in der SSL-Konfiguration falsch konfiguriert. Sie können diesen Fehler beheben, indem Sie in der SSL-Konfiguration den richtigen Pfad für die Truststore-Datei angeben.

Dieser Fehler kann auch aufgrund der folgenden Bedingungen auftreten:

  • Ihre Truststore- oder Keystore-Datei ist beschädigt.
  • Das Passwort der Truststore-Datei ist falsch.

Fehler beim Senden einer Nachricht an den Thementest mit dem Schlüssel: null, Wert: 0 Bytes mit Fehler: (org.apache.kafka.clients.producer.internals.ErrorLoggingCallback)

org.apache.kafka.common.errors.SslAuthenticationException: SSL-Handshake ist fehlgeschlagen

-or-

Authentifizierung der Verbindung zum Knoten -<broker-id> (<broker-hostname>/<broker-hostname>:9094) ist aus folgenden Gründen fehlgeschlagen: SSL-Handshake ist fehlgeschlagen (org.apache.kafka.clients.NetworkClient)

Wenn ein Problem mit der Schlüsselspeicherkonfiguration des Herstellers vorliegt, das zum Authentifizierungsfehler führt, wird möglicherweise die folgende Fehlermeldung angezeigt:

./kafka-console-producer --broker-list b-2.tlscluster.5818ll.c7.kafka.us-east-1.amazonaws.com:9094,b-1.tlscluster.5818ll.c7.kafka.us-east-1.amazonaws.com:9094,b-4.tlscluster.5818ll.c7.kafka.us-east-1.amazonaws.com:9094 --topic example --producer.config/home/ec2-user/ssl.config
[2020-04-11 11:13:19,286] ERROR [Producer clientId=console-producer] Connection to node -3 (b-4.tlscluster.5818ll.c7.kafka.us-east-1.amazonaws.com/172.31.6.195:9094) failed authentication due to: SSL handshake failed (org.apache.kafka.clients.NetworkClient)

Wenn ein Problem mit der Schlüsselspeicherkonfiguration des Verbrauchers vorliegt, das zum Authentifizierungsfehler führt, wird möglicherweise die folgende Fehlermeldung angezeigt:

./kafka-console-consumer --bootstrap-server b-2.tlscluster.5818ll.c7.kafka.us-east-1.amazonaws.com:9094,b-1.tlscluster.5818ll.c7.kafka.us-east-1.amazonaws.com:9094,b-4.tlscluster.5818ll.c7.kafka.us-east-1.amazonaws.com:9094 --topic example --consumer.config/home/ec2-user/ssl.config
[2020-04-11 11:14:46,958] ERROR [Consumer clientId=consumer-1, groupId=console-consumer-46876] Connection to node -1 (b-2.tlscluster.5818ll.c7.kafka.us-east-1.amazonaws.com/172.31.15.140:9094) failed authentication due to: SSL handshake failed (org.apache.kafka.clients.NetworkClient)
[2020-04-11 11:14:46,961] ERROR Error processing message, terminating consumer process: (kafka.tools.ConsoleConsumer$)
org.apache.kafka.common.errors.SslAuthenticationException: SSL handshake failed

Um diesen Fehler zu beheben, stellen Sie sicher, dass Sie die Konfiguration für den Schlüsselspeicher korrekt konfiguriert haben.

java.io.IOException: Das Keystore-Passwort war falsch

Dieser Fehler kann auftreten, wenn das Passwort für den Schlüsselspeicher oder Truststore falsch ist.

Gehen Sie wie folgt vor, um diesen Fehler zu beheben:

Überprüfen Sie, ob das Schlüsselspeicher- oder Truststore-Passwort korrekt ist, indem Sie den folgenden Befehl ausführen:

keytool -list -keystore kafka.client.keystore.jks
Enter keystore password:
Keystore type: PKCS12
Keystore provider: SUN
Your keystore contains 1 entry
schema-reg, Jan 15, 2020, PrivateKeyEntry,
Certificate fingerprint (SHA1): 4A:F3:2C:6A:5D:50:87:3A:37:6C:94:5E:05:22:5A:1A:D5:8B:95:ED

Wenn das Passwort für den Schlüsselspeicher oder Truststore falsch ist, wird möglicherweise die folgende Fehlermeldung angezeigt:

keytool -list -keystore kafka.client.keystore.jks
Enter keystore password:
keytool error: java.io.IOException: keystore password was incorrect

Sie können die ausführliche Ausgabe des obigen Befehls anzeigen, indem Sie das Flag -v hinzufügen:

keytool -list -v -keystore kafka.client.keystore.jks

Sie können diese Befehle auch verwenden, um zu überprüfen, ob der Schlüsselspeicher beschädigt ist.

Dieser Fehler kann auch auftreten, wenn der mit dem Alias verknüpfte geheime Schlüssel in der SSL-Konfiguration des Herstellers und des Verbrauchers falsch konfiguriert ist. Führen Sie den folgenden Befehl aus, um diese Grundursache zu überprüfen:

keytool -keypasswd -alias schema-reg -keystore kafka.client.keystore.jks
Enter keystore password:
Enter key password for <schema-reg>
New key password for <schema-reg>:
Re-enter new key password for <schema-reg>:

Wenn Ihr Passwort für das Geheimnis des Alias (Beispiel: schema-reg) korrekt ist, werden Sie vom Befehl aufgefordert, ein neues Passwort für den geheimen Schlüssel einzugeben. Andernfalls schlägt der Befehl mit der folgenden Meldung fehl:

keytool -keypasswd -alias schema-reg -keystore kafka.client.keystore.jks
Enter keystore password:
Enter key password for <schema-reg>
keytool error: java.security.UnrecoverableKeyException: Get Key failed: Given final block not properly padded. Such issues can arise if a bad key is used during decryption.

Sie können auch überprüfen, ob ein bestimmter Alias Teil des Schlüsselspeichers ist, indem Sie den folgenden Befehl ausführen:

keytool -list -keystore kafka.client.keystore.jks -alias schema-reg
Enter keystore password:
schema-reg, Jan 15, 2020, PrivateKeyEntry,
Certificate fingerprint (SHA1): 4A:F3:2C:6A:5D:50:87:3A:37:6C:94:5E:05:22:5A:1A:D5:8B:95:ED

Fehler, die spezifisch für die IAM-Client-Authentifizierung sind

Die Authentifizierung der Verbindung zum Knoten -1 (b-1.testcluster.abc123.c2.kafka.us-east-1.amazonaws.com/10.11.111.123:9098) ist aus folgenden Gründen fehlgeschlagen: Zugriff verweigert

-or-

org.apache.kafka.common.errors.SaslAuthenticationException: Zugriff verweigert

Stellen Sie sicher, dass die IAM-Rolle, die auf den Amazon MSK-Cluster zugreift, Cluster-Vorgänge zulässt, wie in der IAM-Zugriffssteuerung beschrieben.

Zusätzlich zu Zugriffsrichtlinien blockieren Berechtigungsgrenzen und Dienstkontrollrichtlinien den Benutzer, der versucht, eine Verbindung zum Cluster herzustellen, aber die erforderliche Autorisierung nicht weitergibt.

org.apache.kafka.common.errors.SaslAuthenticationException: Zu viele Verbindungen

-or-

org.apache.kafka.common.errors.SaslAuthenticationException: Interner Fehler

Diese Fehler treten auf, wenn Ihr Cluster auf einem Brokertyp kafka.t3.small mit IAM-Zugriffssteuerung ausgeführt wird und Sie das Verbindungslimit überschritten haben. Der Instance-Typ kafka.t3.small akzeptiert nur eine TCP-Verbindung pro Broker pro Sekunde. Wenn dieses Verbindungslimit überschritten wird, schlägt Ihr Erstellungstest fehl und Sie erhalten diese Fehlermeldung, die auf ungültige Anmeldeinformationen hinweist. Weitere Informationen finden Sie unter So funktioniert Amazon MSK mit IAM.

Um diesen Fehler zu beheben, können Sie Folgendes tun:

  • Aktualisieren Sie in Ihrer Amazon MSK Connect-Worker-Konfiguration die Werte für reconnect.backoff.ms und reconnect.backoff.max.ms auf 1000 oder höher.
  • Führen Sie ein Upgrade auf einen größeren Broker-Instance-Typ durch (z. B. kafka.m5.large oder höher). Weitere Informationen finden Sie unter Brokertypen und Passende Clustergröße: Anzahl der Partitionen pro Broker.

Fehler, die spezifisch für die SASL/SCRAM-Client-Authentifizierung sind

Die Authentifizierung der Verbindung zum Knoten -1 (b-3.testcluster.abc123.c2.kafka.us-east-1.amazonaws.com/10.11.111.123:9096) ist aus folgenden Gründen fehlgeschlagen: Die Authentifizierung ist während der Authentifizierung aufgrund ungültiger Anmeldeinformationen mit dem SASL-Mechanismus SCRAM-SHA-512 fehlgeschlagen

  • Stellen Sie sicher, dass Sie die Benutzeranmeldeinformationen in AWS Secrets Manager gespeichert und diese Anmeldeinformationen mit dem Amazon MSK-Cluster verknüpft haben.
  • Wenn Sie über den Port 9096 auf den Cluster zugreifen, stellen Sie sicher, dass der in AWS Secrets Manager verwendete Benutzer und das Passwort mit denen in den Client-Eigenschaften übereinstimmen.
  • Wenn Sie versuchen, die Geheimnisse mithilfe der API get-secret-value abzurufen, stellen Sie sicher, dass das in AWS Secrets Manager verwendete Passwort keine Sonderzeichen wie (/]) enthält.

org.apache.kafka.common.errors.ClusterAuthorizationException: Request Request(processor=11, connectionId=INTERNAL_IP-INTERNAL_IP-0, session=Session(User:ANONYMOUS,/INTERNAL_IP), listenerName=ListenerName(REPLICATION_SECURE), securityProtocol=SSL, buffer=null) ist nicht autorisiert

Dieser Fehler wird angezeigt, wenn die beiden folgenden Bedingungen zutreffen:

  • Sie haben die SASL/SCRAM-Authentifizierung für Ihren Amazon MSK-Cluster aktiviert.
  • Sie haben resourceType=CLUSTER und operation=CLUSTER_ACTION in den ACLs für Ihren Cluster festgelegt.

Der Amazon MSK-Cluster unterstützt diese Einstellung nicht, da diese Einstellung die interne Apache Kafka-Replikation verhindert. Mit dieser Einstellung wird die Identität der Broker für die Kommunikation zwischen Brokern als ANONYM angezeigt. Wenn Sie möchten, dass Ihr Cluster diese ACLs unterstützt, während Sie die SASL/SCRAM-Authentifizierung verwenden, müssen Sie dem ANONYMEN Benutzer die Berechtigungen für ALLE Vorgänge gewähren. Dadurch wird die Einschränkung der Replikation zwischen den Brokern verhindert.

Führen Sie den folgenden Befehl aus, um dem ANONYMEN Benutzer diese Berechtigung zu gewähren:

./kafka-acls.sh --authorizer-properties
zookeeper.connect=example-ZookeeperConnectString --add --allow-principal
User:ANONYMOUS --operation ALL --cluster

Ähnliche Informationen

Herstellen einer Verbindung zu einem Amazon MSK-Cluster

Wie behebe ich häufig auftretende Probleme, wenn ich meinen Amazon MSK-Cluster mit SASL/SCRAM-Authentifizierung verwende?

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren