我们有一个相当严格的网络分段策略。我正在使用云代工厂实例来部署应用程序。防火墙规则已设置为从 Cloud Foundry 实例中访问 kafka 集群。我相信防火墙规则也已设置为可以访问 zookeeper 实例。我需要真正确认这一点。
我的问题似乎是我可以向 kafka 生成消息,但我的消费者似乎并没有收到它们。它似乎在“轮询”时挂起。
我的防火墙规则是否需要处理一些隐藏的主机或端口,而不仅仅是 kafka 和 zookeeper 节点的标准主机和端口?
最佳答案
卡夫卡和动物园管理员是不同的东西。如果你在同一台机器上运行两者,你需要打开两个端口,corse。
kafka 默认端口:
zookeeper 默认端口:
就是这样。
卡夫卡,也有听众 和 广告.listeners 属性,这使第一批用户感到有些困惑。为了简单起见,listener 是您的服务器将绑定(bind)的网络接口(interface),adverted.listeners 是您的服务器将在 zookeeper 上注册并监听请求的主机名或 IP。如果您将主机名放在那里,您的客户端将必须使用主机名进行连接。 adsd.listeners 网址是您的客户用来引导连接的网址。建立连接后,您的客户端将获得与 zookeeper 的连接以获取其他代理 url。您的制片人因此而无法工作。
因此,要使其正常工作,您还需要在防火墙上打开 2888,而不仅仅是 2181。当 @Jaya Ananthram 告诉您 kafka 需要 2181 端口时,他是错误的。这是一个动物园管理员端口。 kafka 0.10 Stills上的消费者需要联系zookeeper来坚持一些事情,就是这样。
Kafka 0.11.0.0 改变了这一点,使客户根本不需要 zookeeper。
关于apache-kafka - Kafka 和防火墙规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38531054/