使用登入憑證連線至叢集 - Amazon Managed Streaming for Apache Kafka

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用登入憑證連線至叢集

建立秘密並將其與叢集建立關聯後,即可將用戶端連線至叢集。下列程序示範如何將用戶端連線至使用 SASL/SCRAM 身分驗證的叢集。它還顯示如何從範例主題產生和使用 。

使用 SASL/SCRAM 身分驗證將用戶端連線至叢集

  1. 在 AWS CLI 已安裝 的機器上執行下列命令。以叢集的 ARN 取代 clusterARN

    aws kafka get-bootstrap-brokers --cluster-arn clusterARN

    從此命令的 JSON 結果中,儲存與名為 的字串相關聯的值BootstrapBrokerStringSaslScram。您將在後續步驟中使用此值。

  2. 在用戶端機器上建立 JAAS 組態檔案,其中內含儲存在秘密中的使用者憑證。例如,為使用者 alice,建立一個名為 users_jaas.conf 的檔案,內含以下內容。

    KafkaClient { org.apache.kafka.common.security.scram.ScramLoginModule required username="alice" password="alice-secret"; };
  3. 使用以下命令將 JAAS 組態檔案匯出為 KAFKA_OPTS 環境參數。

    export KAFKA_OPTS=-Djava.security.auth.login.config=<path-to-jaas-file>/users_jaas.conf
  4. /tmp 目錄中,建立名為 kafka.client.truststore.jks 的檔案。

  5. (選用) 使用下列命令,將 JVM cacerts 資料夾的 JDK 金鑰存放區檔案複製到您在上一個步驟中建立的 kafka.client.truststore.jks 檔案。使用執行個體上 JDK 資料夾的名稱取代 JDKFolder。例如,您的 JDK 資料夾可能會命名為 java-1.8.0-openjdk-1.8.0.201.b09-0.amzn2.x86_64

    cp /usr/lib/jvm/JDKFolder/lib/security/cacerts /tmp/kafka.client.truststore.jks
  6. 在安裝 Apache Kafka 的 bin 目錄中,建立名為 client_sasl.properties 的用戶端屬性檔案,內含以下內容。此檔案會定義 SASL 機制和通訊協定。

    security.protocol=SASL_SSL sasl.mechanism=SCRAM-SHA-512
  7. 若要建立範例主題,請執行下列命令。將 BootstrapBrokerStringSaslScram 取代為您在本主題的步驟 1 中取得的引導代理程式字串。

    <path-to-your-kafka-installation>/bin/kafka-topics.sh --create --bootstrap-server BootstrapBrokerStringSaslScram --command-config <path-to-client-properties>/client_sasl.properties --replication-factor 3 --partitions 1 --topic ExampleTopicName
  8. 若要產生資料到您建立的範例主題,請在用戶端機器上執行下列命令。將 BootstrapBrokerStringSaslScram 取代為您在本主題的步驟 1 中擷取的引導代理程式字串。

    <path-to-your-kafka-installation>/bin/kafka-console-producer.sh --broker-list BootstrapBrokerStringSaslScram --topic ExampleTopicName --producer.config client_sasl.properties
  9. 若要從您建立的主題取用資料,請在用戶端機器上執行下列命令。將 BootstrapBrokerStringSaslScram 取代為您在本主題的步驟 1 中取得的引導代理程式字串。

    <path-to-your-kafka-installation>/bin/kafka-console-consumer.sh --bootstrap-server BootstrapBrokerStringSaslScram --topic ExampleTopicName --from-beginning --consumer.config client_sasl.properties

連線問題疑難排解

執行 Kafka 用戶端命令時,您可能會遇到 Java 堆積記憶體錯誤,特別是在使用大型主題或資料集時。發生這些錯誤是因為 Kafka 工具會以 Java 應用程式的形式執行,其預設記憶體設定可能不足以滿足您的工作負載。

若要解決Out of Memory Java Heap錯誤,您可以透過修改KAFKA_OPTS環境變數以包含記憶體設定來增加 Java 堆積大小。

下列範例會將堆積大小上限設定為 1GB (-Xmx1G)。您可以根據可用的系統記憶體和需求來調整此值。

export KAFKA_OPTS="-Djava.security.auth.login.config=<path-to-jaas-file>/users_jaas.conf -Xmx1G"

對於使用大型主題,請考慮使用時間型或位移型參數,而不是--from-beginning限制記憶體用量:

<path-to-your-kafka-installation>/bin/kafka-console-consumer.sh --bootstrap-server BootstrapBrokerStringSaslScram --topic ExampleTopicName --max-messages 1000 --consumer.config client_sasl.properties