Kafkaクラスター(実際にはクラスター内の最初のノード)をセットアップしようとしています。
シングルノードのZookeeperクラスターをセットアップしています。別のノードにkafkaを設定しています。
どちらもCentOS6.4を実行しており、PITAのビットであるIPV6を実行しています。マシンがnetcatを使用して相互に通信できることを確認しました。
Kafkaを起動すると、次の例外が発生します(kafkaがシャットダウンします)。編集:kafka開始、設定する必要がありました。 Host.name
server.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
> 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
に解決されました。
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