web-dev-qa-db-ja.com

UnknownHostException kafka

Kafkaクラスター(実際にはクラスター内の最初のノード)をセットアップしようとしています。

シングルノードのZookeeperクラスターをセットアップしています。別のノードにkafkaを設定しています。

どちらもCentOS6.4を実行しており、PITAのビットであるIPV6を実行しています。マシンがnetcatを使用して相互に通信できることを確認しました。

Kafkaを起動すると、次の例外が発生します(kafkaがシャットダウンします)。編集:kafka開始、設定する必要がありました。 Host.nameserver.configファイルのプロパティ。

テストトピックを作成し、kafkaサーバーから問題なくメッセージを送信することができました。

ただし、メッセージを消費しようとすると同じエラーが発生します。

何か助け、提案はありますか?

bin/kafka-console-consumer.sh --zookeeper zk1:2181 --topic test --from-beginning
Exception in thread "main" Java.net.UnknownHostException: kafka: kafka: Name or service not known
    at Java.net.InetAddress.getLocalHost(InetAddress.Java:1473)
    at kafka.consumer.ZookeeperConsumerConnector.<init>(ZookeeperConsumerConnector.scala:107)
    at kafka.consumer.ZookeeperConsumerConnector.<init>(ZookeeperConsumerConnector.scala:128)
    at kafka.consumer.Consumer$.create(ConsumerConnector.scala:89)
    at kafka.consumer.ConsoleConsumer$.main(ConsoleConsumer.scala:178)
    at kafka.consumer.ConsoleConsumer.main(ConsoleConsumer.scala)
Caused by: Java.net.UnknownHostException: kafka: Name or service not known
    at Java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
    at Java.net.InetAddress$1.lookupAllHostAddr(InetAddress.Java:901)
    at Java.net.InetAddress.getAddressesFromNameService(InetAddress.Java:1293)
    at Java.net.InetAddress.getLocalHost(InetAddress.Java:1469)
    ... 5 more
13
noplay

> bin/kafka-console-consumer.shコマンドを実行するとkafkaはConsoleConsumerをロードし、自動生成されたコンシューマーIDでコンシューマーを作成しようとします。 KafkaがコンシューマーIDを生成する方法は、ローカルホストの名前をそれに連結することです。そのため、問題は、JavaがOpenStack上のローカルホストのIPアドレスを解決できなかったという事実でしたVM私が作業しています。

したがって、答えは、Open Stack VMがローカルホスト名をVMの名前であるkafkaに解決していたということでした。 KafkaおよびZookeeperインスタンスですべてをkafka1としてセットアップしました。

したがって、JavaがgetLocalHostを呼び出していたとき、それはkafkaのIPアドレスを見つけようとしていました。これは、/ etc/hostsファイルでnot持っていました。

/ etc/hostsファイルにkafkaのエントリを追加するだけで、すべてがうまく機能し始めました!!!

localhostに解決されると思っていたのですが、そうではなく、vmの名前kafkaに解決されました。

19
noplay

Noplayが問題を指摘したように、Kafkaは正しいIPを解決できませんでした。これは、たとえば、パブリックIPを割り当てずにプライベートサブネットで実行されているEC2インスタンスで発生する可能性があります。解決策の概要:

hostname

これにより、ip-10-180-128-217のようなホスト名が表示されます。次に、/ etc/hostsを更新するだけです

Sudo nano /etc/hosts

編集、例:.

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 ip-10-180-128-217
4
Peter Koncz