0

我在 AWS MSK 中创建了一个集群并创建了一个主题。我可以在与集群相同的 VPC 中生成和使用来自 EC2 实例的事件。具体用例是我想使用 Java 来消费事件。KafkaClient AWS SDK没有任何事件消费的方法,所以我这里不能用。在创建KafkaConsumer时,我无法直接在 Properties() 中传递引导服务器,因为 IP 在 VPC 内部。

我已经阅读了有关连接到 MSK 的方法的 AWS指南,但不确定哪种方法适合这个确切的用例。我尝试了几种方法-

  1. 将 Advertisementd.listerners 设置为实例的公共 IP。但是在创建 KafkaConsumer 后列出主题时仍然会出现此错误- Connection to node -1 could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)

  2. 在安全组入站规则中打开相关端口(在我的情况下为 PLAINTEXT 为 9092)。Connection refused执行此操作后尝试 telnet 到端口 9092 时仍然出现错误。

我的问题是上述任何一项工作,我只是在这里遗漏了其他可以解决这个问题的东西。还是上述方法都行不通?

我的最终目标是使用 Java 使用来自 MSK 集群的事件。

4

1 回答 1

1

由于您需要公开 MSK 端点 ips,因此您需要改进身份验证过程并将 MSK 集群放置在具有 Internet 网关和正确配置的路由表的 VPC 中的公共子网上: https ://docs.aws.amazon .com/vpc/latest/userguide/VPC_Route_Tables.html

如果您在自己的 VPC 中连接它,即使是公共的,您也可以使用 CLI 从 MSK 集群中检索引导服务器,并使用 EC2 引导中的用户数据将其作为环境变量注入: https ://docs.aws.amazon .com/AWSEC2/latest/UserGuide/user-data.html

使用 CLI 从 MSK 集群检索引导服务器的命令:

aws kafka get-bootstrap-brokers --region us-east-1 --cluster-arn ClusterArn

有关 MSK 集群配置的更多文档: https ://docs.aws.amazon.com/msk/latest/developerguide/produce-consume.html

于 2021-10-12T21:45:27.000 回答