的 TL; DR 强> :没有隐藏的端口。检查您的代理配置。确保它通告Kafka消费者可以访问的IP / PORT。
在遇到Kafka 0.10.1.1与kafka-python库作为消费者的问题之后,我遇到了这个问题。
不,我捕获了网络流量,它没有使用任何其他端口与Kafka通信。如果代理配置为使用9092,则它将是消费者使用的唯一端口。
但经过进一步调查,经纪人配置在我的情况下是错误的。
kafka.advertised.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启用并在经纪人和客户,我能够从公共互联网上提取信息就好了。
卡夫卡和动物园管理员是不同的事情。如果您在同一台计算机上运行,则需要打开两个corse端口。
kafka默认端口:
zookeeper默认端口:
而已。
卡夫卡,也有 的 听众 强> 和 的 advertised.listeners 强> 对第一个用户产生一些混淆的属性。为了简单起见, 倾听者 是服务器将绑定的网络接口,以及 advertised.listeners 是您的服务器将在zookeeper上注册并侦听请求的主机名或IP。如果您在其中放置主机名,则客户端必须使用主机名进行连接。该 advertised.listeners url是您的客户端将用于引导连接的URL。建立连接后,您的客户端将获得与zookeeper的连接以获取其他经纪人网址。你的制作人因此没有工作。
所以,要使它工作,你需要在你的防火墙上打开2888,而不仅仅是2181.而@Jaya Ananthram在他告诉你kafka需要2181端口时错了。这是一个动物园管理员港口。 kafka 0.10剧照的消费者需要联系zookeeper来坚持一些事情,就是这样。
Kafka 0.11.0.0改变了这一点,并且让客户根本不需要zookeeper。