我已经开始为新项目学习一些大数据工具,现在我在Kafka和Zookeeper上工作。
我都将它们都安装在本地计算机上,我可以启动它们并开始生成和使用消息。现在,我想尝试使用两台机器,一台使用kafka经纪人,zookeepr和一个生产者,另一台使用消费者。我们称它们为机器A和机器B。
机器A已运行Zookeeper服务器,代理和生产者。机器B运行一个使用者。根据我的理解,我应该能够使用Zookeeper设置消费者以在Machine A上收听生产者的主题。由于两台机器都在同一网络上(即我的本地家庭网络),我想我可以更改kafka broker server.properties以将我的静态IP地址用于机器A,然后让机器B上的使用者连接到它。
我的问题是,zookeeper继续在本地主机上旋转,并连接到0.0.0.0/0.0.0.0:2181,所以当我的代理尝试使用我的静态IP地址(即192.168.xx)连接到它时,出来。我四处寻找解决方案,但是找不到任何可以告诉我如何配置Zookeeper服务器以从其他IP地址开始的解决方案。
也许我对这些技术的理解是完全错误的,但是我认为这将是一件相当简单的事情。有谁知道解决这个问题的方法吗?否则,如果我做错了什么,正确的方法是什么
答案 0 :(得分:1)
zookeeper继续在localhost上旋转,并连接到0.0.0.0/0.0.0.0:2181
好吧,这是绑定地址。
您还(最好)为Zookeeper提供一个静态IP,然后在Kafka的zookeeper.connect
文件中设置server.properties
,以到达该另一台计算机的外部地址。
在Zookeeper配置文件中,请确保您拥有myid
文件,并且在属性文件中有一行如下所示(没有双括号)
server.{{ myid }}={{ ip_address }}:2888:3888
您不会在Kafka文档中找到它,但是它在Zookeeper documentation
中但是,如果Kafka和Zookeeper在同一台计算机上,则没有必要。
您的外部使用者应设置bootstrap.servers
属性和带有端口9092的Kafka IP地址。
您的问题可能与我有关the advertised.listeners
setting within Kafka.
例如,以listeners=PLAINTEXT://:9092
答案 1 :(得分:0)
自Zookeeper 3.3.0起(请参阅高级配置):
clientPortAddress:3.3.0中的新功能:地址(ipv4,ipv6或主机名) 监听客户端连接;即客户的地址 尝试连接。这是可选的,默认情况下我们绑定在 到clientPort的任何连接的方式 服务器上的地址/接口/ NIC将被接受
因此您可以使用:
List<Tiger> myTigersList = new List<Tiger>() { new Tiger(), new Tiger(), new Tiger() };
List<Animal> myAnimalsList = myTigersList; // Compiler error