问题描述
我无法从笔记本电脑连接到 AWS MSK Kafka(访问控制方法配置为无),错误是:NobrokersAvailable
我在端口 9092 上使用 纯文本 conn:
from kafka import KafkaProducer
kafka_brokers = [ "xxx.kafka.ap-east-1.amazonaws.com:9092","xxx.kafka.ap-east-1.amazonaws.com:9092","xxx.kafka.ap-east-1.amazonaws.com:9092" ]
producer = KafkaProducer(bootstrap_servers=kafka_brokers)
参考: AWS MSK - 明文代理端口 9092,TLS 9094 https://docs.aws.amazon.com/msk/latest/developerguide/client-access.html
我尝试了三件事(没有帮助):
一个。在我的 VPC 默认安全组下添加了超过 9092+9094 source/dest 0.0.0.0/0 的入站+出站源/目的地
B.按照以下说明尝试通过 AWS Client VPN 运行:
- https://docs.aws.amazon.com/vpn/latest/clientvpn-admin/cvpn-getting-started.html#cvpn-getting-started-certs
- 生成证书的说明: https://docs.aws.amazon.com/vpn/latest/clientvpn-admin/client-authentication.html#mutual
- https://www.youtube.com/watch?v=Bv70DoHDDCY
c.在我的笔记本电脑上关闭防火墙
我看到其他人也在问类似的问题:How to connect Python consumer to AWS MSK
有些人认为本地机器/笔记本电脑上的客户端连接到 AWS MSK 只是不受支持:How can I access my AWS MSK managed kafka queue from my local machine and EC2 instances in other regions 这是真的/官方吗?
我正在考虑创建 EIP(弹性 IP) https://repetitive.it/aws-msk-how-to-expose-the-cluster-on-the-public-network/?lang=en 然后以某种方式与代理域名 xxx.kafka.ap-east-1.amazonaws.com 关联(但不确定如何)并配置入站出站规则。
但我找不到任何有用的东西。
我已经无能为力了,这个问题已经消耗了一整天。非常感谢任何帮助。
谢谢
解决方法
无法从您的笔记本电脑直接连接到 MSK 经纪人。尽管 MSK 侦听器公开公共 DNS 名称,但它实际上解析为 MSK 代理的私有 IP。因此,由于您不在 VPC 内,因此无法访问私有 IP。
实现这一目标最便宜的选择是设置
AWS Client VPN endpoint.
(edited) 观察到你已经尝试过客户端 VPN,什么不起作用?我正在使用它。