2014-03-06 95 views
7

我一直在嘗試測試卡夫卡安裝並使用指南創建了一個生產者和消費者。嘗試檢索郵件時,出現以下錯誤:測試卡夫卡消費者和生產者連接失敗

WARN Session 0x0 for server null, unexpected error, closing socket connection and 
attempting reconnect (org.apache.zookeeper.ClientCnxn) 
java.net.ConnectException: Connection refused 
    at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) 
    at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:739) 
    at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1146) 
[2014-03-04 18:01:20,628] INFO Terminate ZkClient event thread. (org.I0Itec.zkclient.ZkEventThread) 
[2014-03-04 18:01:21,315] INFO Opening socket connection to server kafka-test/192.xxxxxx.110:2182 (org.apache.zookeeper.ClientCnxn) 
[2014-03-04 18:01:21,418] INFO Session: 0x0 closed (org.apache.zookeeper.ZooKeeper) 
Exception in thread "main" org.I0Itec.zkclient.exception.ZkTimeoutException: Unable to connect to zookeeper server within timeout: 6000 
    at org.I0Itec.zkclient.ZkClient.connect(ZkClient.java:880) 
    at org.I0Itec.zkclient.ZkClient.<init>(ZkClient.java:98) 
    at org.I0Itec.zkclient.ZkClient.<init>(ZkClient.java:84) 
    at kafka.consumer.ZookeeperConsumerConnector.connectZk(ZookeeperConsumerConnector.scala:151) 
    at kafka.consumer.ZookeeperConsumerConnector.<init>(ZookeeperConsumerConnector.scala:112) 
    at kafka.consumer.ZookeeperConsumerConnector.<init>(ZookeeperConsumerConnector.scala:123) 
    at kafka.consumer.Consumer$.create(ConsumerConnector.scala:89) 
    at kafka.consumer.ConsoleConsumer$.main(ConsoleConsumer.scala:178) 
    at kafka.consumer.ConsoleConsumer.main(ConsoleConsumer.scala) 
[2014-03-04 18:01:21,419] INFO EventThread shut down (org.apache.zookeeper.ClientCnxn) 

回答

3

您的Zookeper配置有問題。確保你的zookeeper啓動並運行。它運行的默認端口是

位更多的信息和一些code可能是有用的,我相信。

4

請與telnet命令你的動物園管理員連接:在這種情況下,檢查該進程正在運行

telnet 192.xxxxxx.110 2181

你可能會得到一個錯誤,:

ps -ef | grep "zookeeper.properties"

如果它沒有運行,啓動它進入kafka主目錄:

bin/zookeeper-server-start.sh config/zookeeper.properties &

2

我碰到同樣的問題,問題是最大客戶端連接屬性在zookeeper配置。

如果您在/ etc/zookeeper/conf的配置文件中看到類似「maxClientCnxns = 20」的內容,請將其註釋掉並重新啓動zookeeper。

7

卡夫卡

看起來你沒有連接到正確的ZooKeeper。我不確定你的設置(多機,虛擬機,容器),所以很難說出了什麼問題。從調試輸出我看到了下面一行在暗示你的預期動物園管理員IP:

[2014-03-04 18:01:21,315] INFO Opening socket connection to server kafka-test/192.xxxxxx.110:2182 (org.apache.zookeeper.ClientCnxn)

卡夫卡尋找動物園管理員在由$KAFKA_HOME/config/server.properties文件zookeeper.connect配置屬性所指定的地址。開始Kafka之前一定要編輯它。另外,請嘗試給出您的Zookeeper實例的實際公共IP,而不僅僅是127.0.0.1,因爲如果您在容器中運行,那麼解決了很多混亂。在你的情況下,它看起來會是: zookeeper.connect=192.xxxxxx.110:2182

此外,如果你在AWS上運行或在容器操作相關的卡夫卡配置時,不要忘記更新下面的兩個配置屬性,以確保客戶誰連接到卡夫卡看到正確的公共IP

  • advertised.host.name
  • advertised.port

和卡夫卡認爲正確的內部IP

  • host.name
  • port

動物園管理員

動物園管理員設置它最多時也有一些陷阱。在您的Zookeeper實例上,不要忘記編輯zoo.cfg(通常在/etc/zookeeper/conf)文件中的server配置屬性,以指向Zookeeper實例的正確IP。你的情況可能如下:

server.1=192.xxxxxx.110:2888:3888

最後兩個端口(2888 3888)如果你正在運行一個動物園管理員組(追隨者分別與領導和動物園管理員領導人選舉,只需要,所以如果你有多個Zookeeper服務器,一定要在防火牆的東西上解鎖它們)。

+1

謝謝@ joel-b,這讓我朝着正確的方向前進。 advertised.host.name現已棄用,因此您需要使用advertised.listeners代替。 – ammills01

0

您也可以檢查所有可用的連接是否已經耗盡。如果您使用API​​連接到ZK,請確保在完成後釋放連接。

0

我也遇到了這個問題。當我關閉zk節點的防火牆時,它將起作用。