我正在aws msk上设置一个托管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] 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--代理列表“我的代理ip:9092”--主题“一些主题”
但要不断得到结果
[2019-01-28 12:06:13278]警告[producer clientid=console producer]无法建立到节点-1的连接。代理可能不可用(org.apache.kafka.clients.networkclient)
我已经将我的本地ip与我用vpc设置的安全组上的所有端口相关联,并与kafka队列相关联,但似乎没有任何帮助。我也不知道如何把我的盒子和Kafka队列联系起来,因为它们在不同的地区。这可能吗?
我希望能够将本地生产者代码连接到kafka队列并观察输出,而不是让它不断拒绝连接。
4条答案
按热度按时间agyaoht71#
我认为我们有一个解决方案,那就是使用中转网关。这样,aws msk所在的专有网络和您的笔记本电脑所在的本地网络可以相互连接,并且可以无缝访问。
你也可以利用vpc对等网络。
有关详细信息,请参阅以下文档。
https://docs.aws.amazon.com/msk/latest/developerguide/client-access.html
中转网关详细信息
https://docs.aws.amazon.com/vpc/latest/tgw/what-is-transit-gateway.html
jmo0nnb32#
正如@robin提到的,您不能使用kafka客户端或kafka流直接从本地计算机访问msk。因为broker url、zookeeper连接字符串是msk集群vpc/子网的私有ip。要通过kafka客户端访问,需要在msk的同一vpc中启动ec2示例,执行kafka客户端(生产者/消费者)访问msk集群。
但是,您可以通过confluent建立kafka rest代理框架开源,以便通过RESTAPI从外部世界访问msk集群。这个框架是成熟的kafka-cient,不允许kafka客户端的所有操作,但是您可以从获取集群的元数据、主题信息、生成和使用消息等方面对集群进行大部分操作。
我已经详细回答了这个场景以及其他一些与msk相关的问题,请参阅-
amazon管理kafka-msk的流媒体功能和性能
xoshrz7s3#
如@kuntal-g所述,代理URL等是私有IP,不能从专有网络外部访问。但是,您可以将(“public”)弹性IP分配给代理,并调整安全组,以允许zookeeper和kafka端口之间的通信,如下所述:
https://www.repetitive.it/aws-msk-how-to-expose-the-cluster-on-the-public-network/
aws官方文档中也提到了替代解决方案(例如,使用aws传输网关或rest代理):
https://docs.aws.amazon.com/msk/latest/developerguide/client-access.html
vltsax254#
afaik您必须从ec2上的客户机访问msk集群,而不能从本地机访问。