

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

# 使用登录凭证连接到集群
<a name="msk-password-tutorial-connect"></a>

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

**Topics**
+ [使用 SASL/SCRAM 身份验证将客户端连接到集群](#w2aab9c13c29c17c13c11b9b7)
+ [排除连接问题](#msk-password-tutorial-connect-troubleshooting)

## 使用 SASL/SCRAM 身份验证将客户端连接到集群
<a name="w2aab9c13c29c17c13c11b9b7"></a>

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

   ```
   aws kafka get-bootstrap-brokers --cluster-arn {{clusterARN}}
   ```

   从该命令的 JSON 结果中，保存与名为 `BootstrapBrokerStringSaslScram` 的字符串关联的值。该值将在后面的步骤中使用。

1. 在您的客户端计算机上，创建一个 JAAS 配置文件，其中包含存储在密钥中的用户凭证。例如，对于用户 **alice**，使用以下内容创建一个名为 `users_jaas.conf` 的文件。

   ```
   KafkaClient {
      org.apache.kafka.common.security.scram.ScramLoginModule required
      username="alice"
      password="alice-secret";
   };
   ```

1. 使用以下命令将 JAAS 配置文件导出为 `KAFKA_OPTS` 环境参数。

   ```
   export KAFKA_OPTS=-Djava.security.auth.login.config={{<path-to-jaas-file>}}/users_jaas.conf
   ```

1. 在 `/tmp` 目录中创建一个名为 `kafka.client.truststore.jks` 的文件。

1. （可选）使用以下命令将 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
   ```

1. 在 Apache Kafka 安装的 `bin` 目录中，创建一个名为 `client_sasl.properties` 的客户端属性文件，其中包含以下内容。此文件可定义 SASL 机制和协议。

   ```
   security.protocol=SASL_SSL
   sasl.mechanism=SCRAM-SHA-512
   ```

1. 要创建示例主题，请运行以下命令。{{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
   ```

1. 要生成您创建的示例主题，请在客户端计算机上运行以下命令。{{BootstrapBrokerStringSaslScram}}替换为您在本主题的步骤 1 中检索到的引导代理字符串。

   ```
   {{<path-to-your-kafka-installation>}}/bin/kafka-console-producer.sh --broker-list {{BootstrapBrokerStringSaslScram}} --topic {{ExampleTopicName}} --producer.config client_sasl.properties
   ```

1. 要使用您创建的主题，在您的客户端计算机上运行以下命令。{{BootstrapBrokerStringSaslScram}}替换为您在本主题的步骤 1 中获得的引导代理字符串。

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

## 排除连接问题
<a name="msk-password-tutorial-connect-troubleshooting"></a>

运行 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
```