如何从本地计算机和其他区域的EC2实例访问AWS MSK托管的Kafka队列

时间:2019-01-28 12:22:04

标签: amazon-web-services apache-kafka

我正在AWS MSK上设置托管kafka队列。从本地计算机连接时,似乎无法使安全性正常工作,如果可以使用一个区域到另一个区域的安全组,也无法解决。

我已经遍历了主要文档here上有关设置安全组的信息。我似乎仍然无法连接到经纪人。我目前正在通过以下方式从本地计算机上使用kafka脚本:

bin/kafka-console-producer.sh --broker-list "my-broker-ip:9092" --topic "some-topic"

但继续获得结果

[2019-01-28 12:06:13,278] WARN [Producer clientId=console-producer] Connection to node -1 could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)

我已经将我的本地IP与我通过VPC设置并与kafka队列相关联的安全组上的所有端口相关联,但似乎没有帮助。我也看不到如何将我的盒子与kafka队列关联,因为它们位于不同的区域。这可能吗?

我目前正在通过以下方式从本地计算机上使用kafka脚本:

bin / kafka-console-producer.sh --broker-list“ my-broker-ip:9092” --topic“ some-topic”

但继续获得结果

[2019-01-28 12:06:13,278] WARN [Producer clientId = console-producer]无法建立到节点-1的连接。经纪人可能不可用。 (org.apache.kafka.clients.NetworkClient)

我已经将我的本地IP与我通过VPC设置并与kafka队列相关联的安全组上的所有端口相关联,但似乎没有帮助。我也看不到如何将我的盒子与kafka队列关联,因为它们位于不同的区域。这可能吗?

我希望能够将我的本地生产者代码连接到kafka队列并观察输出,而不是让其不断拒绝连接。

4 个答案:

答案 0 :(得分:2)

您拥有 的AFAIK可以从client machine on EC2访问您的MSK群集,而不能从本地计算机上访问。

答案 1 :(得分:2)

如@Robin所述,您不能使用kafka客户端或kafka流直接从本地计算机访问MSK。因为代理url,zookeeper连接字符串是msk群集vpc /子网的私有ip。要通过kafka客户端进行访问,您需要在MsK的同一vpc中启动ec2实例,并执行kafka客户端(生产者/消费者)来访问msk集群。

但是您可以设置由Confluent开源的kafka Rest Proxy 框架,以通过rest api从外部访问MSK集群。该框架功能完备,不支持kafka客户端的所有操作,但是您可以从获取集群的元数据,主题信息,生成和使用消息等开始对集群进行大多数竞争。

我已经详细回答了这种情况以及与MSK相关的其他一些问题,请参阅

Amazon Managed Streaming for Kafka- MSK features and performance

答案 2 :(得分:1)

如@ Kuntal-G所述,代理URL等是私有IP,无法从VPC外部进行访问。但是,您可以将(“公共”)弹性IP分配给代理,并调整安全组以允许往返于Zookeeper和Kafka端口的流量,如此处更详细地解释:

https://www.repetitive.it/aws-msk-how-to-expose-the-cluster-on-the-public-network/

AWS官方文档中也提到了替代解决方案(例如,使用AWS Transit Gateway或REST代理):

https://docs.aws.amazon.com/msk/latest/developerguide/client-access.html

答案 3 :(得分:0)

我可以想到的一种解决方案是使用转接网关。这样,AWS MSK所在的VPC和笔记本电脑所在的本地网络就可以互连并且可以无缝访问。

您还可以利用VPC对等功能。

有关详细信息,请参阅以下文档。

https://docs.aws.amazon.com/msk/latest/developerguide/client-access.html

有关Transit网关的详细信息

https://docs.aws.amazon.com/vpc/latest/tgw/what-is-transit-gateway.html