2016-10-20 11 views
1

ローカルマシンでスピンアップするときにkafkaをうまく動作させることができました。しかし、AWSインスタンス上で動作させようとすると、何も正しく動作しないようです。私は自分のサーバーをスピンアップし、私はローカルに、私はまた、すべての内の1つのAMIであるように思わbitamiからAMIを使用してみましたので、kafkaコンソールのプロデューサーやコンシューマーを働かせることができません

curl http://apache.spinellicreations.com/kafka/0.10.0.0/kafka_2.11-0.10.0.0.tgz | tar -xzf 

cd kafka_2.11-0.10.0.0 

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

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

のように飼育係やカフカをスピンアップしたのと同じようにやってみました。トピックを作成するとうまくいくようです。私はエラー

SEASPAULSON-MAC:kafka_2.11-0.10.0.0 spaulson$ bin/kafka-console-producer.sh --broker-list ec2-54-186-31-109.us-west-2.compute.amazonaws.com:9092 --topic test 
blah 
[2016-10-20 12:13:23,395] ERROR Error when sending message to topic test with key: null, value: 4 bytes with error: (org.apache.kafka.clients.producer.internals.ErrorLoggingCallback) 
org.apache.kafka.common.errors.TimeoutException: Batch containing 1 record(s) expired due to timeout while requesting metadata from brokers for test-0 

を取得し、コンソールプロデューサーを実行しようとすると、私は何度も繰り返し、コンソール消費者を起動しようとすると、しかし、私は、エラーを取得します。

bin/kafka-console-consumer.sh --zookeeper ec2-54-186-31-109.us-west-2.compute.amazonaws.com:2181 --topic test --from-beginning 


[2016-10-19 18:26:47,175] WARN Fetching topic metadata with correlation id 152 for topics [Set(test)] from broker [BrokerEndPoint(0,ip-172-31-52-58.ec2.internal,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:80) 
     at kafka.producer.SyncProducer.kafka$producer$SyncProducer$$doSend(SyncProducer.scala:79) 
     at kafka.producer.SyncProducer.send(SyncProducer.scala:124) 
     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) 

私はこれらの操作が簡単なはずだと思っていますが、それは非常に難しいことです。問題を診断し、何がうまくいかないかを把握するためのドキュメントを見つけるのが難しいです。私が見つけた最高のコマンドはこのコマンドです

KAFKA_HOME/bin/kafka-topics.sh --describe --topic test --zookeeper ec2-54-186-31-109.us-west-2.compute.amazonaws.com:2181 
Topic:test  PartitionCount:1  ReplicationFactor:1  Configs: 
     Topic: test  Partition: 0 Leader: 0  Replicas: 0  Isr: 0 

リーダー:0は何か問題があったことを示していますか?しかし何?

+0

AWSやその他のIaaSマシンの場合、広告主様のクライアント用にadvertised.listenersを設定してください。 – amethystic

+0

クライアント上で宣伝リスナーを設定する必要がありますか?私が接続しようとしているマシンのように?私はそれをシェルスクリプトの引数として指定すれば十分だろうと思っていました。 –

+1

"server.properties"に設定する必要があるブローカ設定です。その後、ブローカーを再始動します。 – amethystic

答えて

2

AWSやその他のIaaSマシンの場合は、クライアントに「advertised.listeners」を設定する必要があります。

リスナーは、上記のリスナーと異なる場合、クライアントが使用するためにZooKeeperにパブリッシュします。 IaaS環境では、これはブローカがバインドするインタフェースと異なる必要があります。これが設定されていない場合、listenersの値が使用されます。

関連する問題