Geo*_*ith 18 apache-kafka kafka-consumer-api
我们有一个相当严格的网络细分政策.我正在使用云代工实例来部署应用程序.已设置防火墙规则以从云代工厂实例中到达kafka群集.我相信防火墙规则也已设置为访问zookeeper实例.我需要确实确认一个.
我的问题似乎是我可以向kafka发送消息,但我的消费者似乎并没有接受它们.它似乎在"投票"时挂起.
我的防火墙规则是否需要处理一些隐藏的主机或端口,而这些规则不仅仅是kafka和zookeeper节点的标准主机和端口?
小智 22
卡夫卡和动物园管理员是不同的事情.如果您在同一台计算机上运行,则需要打开两个corse端口.
kafka默认端口:
zookeeper默认端口:
而已.
Kafka,也有听众和advertised.listeners属性,这对第一个用户产生了一些混乱.为简化起见,listener是服务器将绑定的网络接口,advertised.listeners是您的服务器将在zookeeper上注册并侦听请求的主机名或IP.如果您在其中放置主机名,则客户端必须使用主机名进行连接.该advertised.listeners url是一个你的客户端将使用来引导连接.建立连接后,您的客户端将获得与zookeeper的连接以获取其他经纪人网址.你的制作人因此没有工作.
所以,要使它工作,你需要在你的防火墙上打开2888,而不仅仅是2181.而@Jaya Ananthram在他告诉你kafka需要2181端口时错了.这是一个动物园管理员港口.kafka 0.10剧照的消费者需要联系zookeeper来坚持一些事情,就是这样.
Kafka 0.11.0.0改变了这一点,并且让客户根本不需要zookeeper.
小智 3
TL;DR:没有隐藏端口。检查您的经纪人配置。确保它公布 Kafka 消费者可以访问的 IP/端口。
在作为消费者使用 kafka-python 库使用 Kafka 0.10.1.1 遇到同样的问题后,我遇到了这个问题。
不。我捕获了网络流量,它没有使用任何其他端口与 Kafka 进行通信。如果代理配置为使用 9092,它将是消费者使用的唯一端口。
但经过进一步调查,在我的案例中,代理配置有问题。
kafka.advertished.listeners = PLAINTEXT://[private_ip]:9092,SSL://[public_ip]:9093 kafka.listeners = PLAINTEXT://0.0.0.0:9092,SSL://0.0.0.0:9093
我使用[public_ip]:9092作为引导服务器,因为我没有设置 PKI,但我想从公共互联网测试我的消费者。
消费者能够连接到代理,但无法提取任何消息。
由于消费者使用 PLAINTEXT 连接到 Kafka,因此 Kafka 公布的是 PLAINTEXT 代理地址而不是 SSL 地址。然后,消费者尝试使用私有 IP 地址而不是公共 IP 地址来访问 Kafka 代理。(由原始网络捕获揭示)
在代理和客户端中启用并配置 PKI 后,我能够很好地从公共互联网中提取消息。
| 归档时间: |
|
| 查看次数: |
35569 次 |
| 最近记录: |