使用登录凭证连接到集群 - 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