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

Lesedauer: 9 Minute
0

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

Auflösung

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

  • Fehler, die nicht spezifisch für den Authentifizierungstyp des Clusters sind
  • Fehler, die spezifisch für die TLS-Client-Authentifizierung 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 eine der folgenden Fehlermeldungen, unabhängig davon, welcher Authentifizierungstyp für Ihren Cluster aktiviert ist:

Zeitüberschreitung beim Warten auf eine Verbindung im Zustand: VERBINDUNG WIRD HERGESTELLT

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

Sie erhalten den folgenden Fehler, wenn Sie die falsche Apache-ZooKeeper-Zeichenfolge verwenden, um eine Verbindung zum Cluster herzustellen:

./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)

Gehen Sie zur Behebung dieses Fehlers folgendermaßen vor:

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

**Thema 'TopicName' ist in den Metadaten nach 60.000 ms nicht vorhanden oder Verbindung zum Knoten –

(

/

:

) 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 Produzent oder Konsument 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 funktioniert hat, ist der Broker möglicherweise ausgefallen.

Sie erhalten die folgende Fehlermeldung, wenn Sie versuchen, von außerhalb der Virtual Private Cloud (VPC) auf den Cluster zuzugreifen, indem Sie die Broker-Zeichenfolge für die Datenerzeugung 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
>a[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 den folgenden Fehler, wenn Sie versuchen, von außerhalb der VPC auf den Cluster zuzugreifen, um mithilfe der Broker-Zeichenfolge Daten 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:

  • Vergewissern Sie sich, dass die richtige Broker-Zeichenfolge und der richtige Port verwendet werden.
  • Wenn der Fehler durch den Ausfall des Brokers verursacht wird, überprüfen Sie die Amazon-CloudWatch-Metrik ActiveControllerCount, um sicherzustellen, dass der Controller während des gesamten Zeitraums aktiv war. Der Wert dieser Metrik muss 1 sein. Jeder andere Wert könnte 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 kontinuierlich mit den Apache-ZooKeeper-Knoten kommuniziert haben. Um zu verstehen, warum der Broker ausgefallen ist, sehen Sie sich die Metrik KafkaDataLogsDiskUsed an und überprüfen Sie, ob dem Broker der Speicherplatz ausgegangen ist. Weitere Informationen zu Amazon-MSK-Metriken und den erwarteten Werten finden Sie unter Amazon-MSK-Metriken für die Überwachung mit CloudWatch.
  • Vergewissern Sie sich, dass der Fehler nicht durch die Netzwerkkonfiguration verursacht wird. Amazon-MSK-Ressourcen werden innerhalb der VPC bereitgestellt. Daher wird von Clients standardmäßig erwartet, dass sie sich mit dem Amazon-MSK-Cluster verbinden oder über ein privates Netzwerk in derselben VPC aus dem Cluster produzieren und konsumieren. Wenn Sie von außerhalb der VPC auf den Cluster zugreifen, erhalten Sie möglicherweise diese Fehler. Informationen zur Fehlerbehebung bei Fehlern, die auftreten, wenn sich der Client in der gleichen VPC wie der Cluster befindet, finden Sie unter Zugriff auf Cluster von AWS aus nicht möglich: Netzwerkprobleme. Informationen zum Zugriff auf den Cluster von außerhalb der VPC finden Sie unter Wie stelle ich außerhalb der VPC eine Verbindung zu meinem Amazon-MSK-Cluster her?

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

Möglicherweise erhalten Sie die folgenden Fehler, wenn Sie versuchen, eine Verbindung mit dem Cluster herzustellen, für den die TLS-Client-Authentifizierung aktiviert ist. Diese Fehler können auf Probleme mit der SSL-bezogenen Konfiguration zurückzuführen sein.

**Bootstrap-Broker: 9094

:9094 (id: -

rack: null) getrennt**

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

Möglicherweise erhalten Sie folgende Fehlermeldung, wenn der Produzent versucht, sich mit dem Cluster zu verbinden:

/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)

Möglicherweise erhalten Sie folgende Fehlermeldung, wenn der Konsument versucht, sich mit dem Cluster zu verbinden:

./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)

Richten Sie zur Behebung dieses Fehlers die SSL-Konfiguration ein. Weitere Informationen erhalten Sie unter Erste Schritte mit der Verschlüsselung

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

FEHLER Die Änderungszeit des Schlüsselspeichers konnte nicht abgerufen werden:

-oder-

Schlüsselspeicher konnte nicht geladen werden

Wenn es ein Problem mit der Truststore-Konfiguration gibt, kann dieser Fehler auftreten, wenn Truststore-Dateien für den Produzenten und den Konsumenten geladen werden. In den Protokollen können Sie Informationen wie die folgenden finden:

./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 unter folgenden Bedingungen auftreten:

  • Ihre Truststore- oder Schlüsselspeicherdatei ist beschädigt.
  • Das Passwort der Truststore-Datei ist falsch.

Fehler beim Senden einer Nachricht an das Thema Test mit 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

-oder-

**Verbindung zum Knoten –

(

/

:9094) konnte nicht authentifiziert werden aufgrund von: SSL-Handshake fehlgeschlagen (org.apache.kafka.clients.NetworkClient)**

Der folgende Fehler kann auftreten, wenn ein Problem mit der Schlüsselspeicherkonfiguration des Produzenten vorliegt, das zum Scheitern der Authentifizierung führt:

./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)

Der folgende Fehler kann auftreten, wenn ein Problem mit der Schlüsselspeicherkonfiguration des Konsumenten vorliegt, das zum Scheitern der Authentifizierung führt:

./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 die Konfiguration des Schlüsselspeichers korrekt vorgenommen wurde.

java.io.IOException: falsches Keystore-Passwort

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

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

Überprüfen Sie, ob das Keystore- 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 Kennwort 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 die Kennzeichnung -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 geheime Schlüssel, der mit dem Alias verknüpft ist, in der SSL-Konfiguration des Produzenten und des Konsumenten falsch konfiguriert ist. Führen Sie den folgenden Befehl aus, um die Ursache 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 den geheimen Schlüssel des Alias (Beispiel: schema-reg) korrekt ist, dann fordert der Befehl Sie auf, ein neues Passwort für den Geheimschlü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

Zugehörige Informationen

Verbindung mit einem Amazon-MSK-Cluster herstellen

Wie kann ich allgemeine Probleme bei der Verwendung meines Amazon MSK-Clusters mit SASL/SCRAM-Authentifizierung beheben?

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr