2015-12-14 34 views
8

私はApache Kafka/Zookeeperを使い始めたばかりですが、AWSでクラスタを設定しようとすると問題が発生しています。現在、私は3台のサーバーを持っています:Apache Kafka:メタデータ/ java.nio.channels.ClosedChannelExceptionの更新に失敗しました

実行中のZookeeperと実行中のKafkaがそれぞれ2台あります。

私はカフカサーバーを問題なく起動でき、両方でトピックを作成できます。カフカの消費者に

kafka-console-producer.sh --broker-list <kafka server 1 aws public dns>:9092,<kafka server 2 aws public dns>:9092 --topic samsa 

kafka-console-consumer.sh --zookeeper <zookeeper server ip>:2181 --topic samsa 

カフカプロデューサーの

:私は1台のマシン上のプロデューサーや他の消費者を起動しようとするしかし、トラブルが来ますプロデューサー(「hi」)にメッセージを入力してしばらくは何も起こりません。定期的に繰り返され、私はこのメッセージを取得し、消費者の側では、

ERROR Error when sending message to topic samsa with key: null, value: 2 bytes 
with error: Failed to update metadata after 60000 ms. 
(org.apache.kafka.clients.producer.internals.ErrorLoggingCallback) 

:その後、私はこのメッセージを取得

WARN Fetching topic metadata with correlation id # for topics [Set(samsa)] from broker [BrokerEndPoint(<broker.id>,<producer's advertised.host.name>,9092)] failed (kafka.client.ClientUtils$) 
java.nio.channels.ClosedChannelException 
    at kafka.network.BlockingChannel.send(BlockingChannel.scala:110) 
    at kafka.producer.SyncProducer.liftedTree1$1(SyncProducer.scala:75) 
    at kafka.producer.SyncProducer.kafka$producer$SyncProducer$$doSend(SyncProducer.scala:74) 
    at kafka.producer.SyncProducer.send(SyncProducer.scala:119) 
    at kafka.client.ClientUtils$.fetchTopicMetadata(ClientUtils.scala:59) 
    at kafka.client.ClientUtils$.fetchTopicMetadata(ClientUtils.scala:94) 
    at kafka.consumer.ConsumerFetcherManager$LeaderFinderThread.doWork(ConsumerFetcherManager.scala:66) 
    at kafka.utils.ShutdownableThread.run(ShutdownableThread.scala:63) 

しばらくして、プロデューサーは、#が増加してこのエラーメッセージを投げ急速に開始します段階的に:

WARN Error while fetching metadata with correlation id # : {samsa=LEADER_NOT_AVAILABLE} (org.apache.kafka.clients.NetworkClient) 

ここからどこに行くのかわかりません。私の設定ファイルに関する詳細が必要な場合は教えてください

答えて

10

これは構成の問題でした。

config/server.propertiesでは、各カフカサーバー上:config/producer.properties

  • host.name: <Public IP>
  • advertised.host.name: <AWS Public DNS Address>

にそれがconfigファイルにいくつかの変更を実行している得るために

が起こる必要がありました各カフカサーバー:

各カフカサーバー上の/ etc/hostsに
  • metadata.broker.list: <Producer Server advertised.host.name>:<Producer Server port>,<Consumer Server advertised.host.name>:<Consumer Server port>

、変更127.0.0.1 localhost localhost.localdomainへ:

<Public IP> localhost localhost.localdomain 
+0

@kellanburkerは私としては、 '/ etc/hosts'ファイルを編集した後、任意のサービスを再起動する必要がありますか? –

関連する問題