使用登录凭证连接到集群 - Amazon Managed Streaming for Apache Kafka
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用登录凭证连接到集群

在创建密钥并将其与集群关联后,您便可以将客户端连接到集群。以下过程演示如何将客户端连接到使用 SASL/SCRAM 身份验证的集群。它还展示了如何制作和使用示例主题。

使用 SASL/SCRAM 身份验证将客户端连接到集群

  1. 在已 Amazon CLI 安装的计算机上运行以下命令。clusterARN替换为集群的 ARN。

    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. (可选)使用以下命令将 JDK 密钥存储文件从 JVM cacerts 文件夹复制到您在上一步中创建kafka.client.truststore.jks的文件中。JDKFolder替换为实例上的 JDK 文件夹的名称。例如,您的 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