1

Python kafka-library で SimpleProducer を使用しています。このスクリプトは、私が試した他のよりハードに構成された kafka セットアップで以前に問題なく動作しました。

kafka = KafkaClient(u'[masterNodeIp]:[servicePort]')
producer = SimpleProducer(kafka)
#make a simple message, while true run
producer.send_messages(b'oneMoreTopic', sentence)

このスクリプトを 1 回実行すると、python-console にこの応答が表示されます。

kafka.common.LeaderNotAvailableError: TopicMetadata(topic='oneMoreTopic', error=5, partitions=[])

次に、zookeeper.log のノードに移動して、次を確認できます。

2015-09-14 12:16:32,276 - INFO  [ProcessThread(sid:3  cport:-1)::PrepRequestProcessor@627] - Got user-level KeeperException when processing sessionid:0x34fcb982d030000 type:setData cxid:0x71 zxid:0x1000000d8 txntype:-1 reqpath:n/a Error Path:/config/topics/oneMoreTopic Error:KeeperErrorCode = NoNode for /config/topics/oneMoreTopic
2015-09-14 12:16:32,278 - INFO  [ProcessThread(sid:3 cport:-1)::PrepRequestProcessor@627] - Got user-level KeeperException when processing sessionid:0x34fcb982d030000 type:create cxid:0x72 zxid:0x1000000d9 txntype:-1 reqpath:n/a Error Path:/config/topics Error:KeeperErrorCode = NodeExists for /config/topics
2015-09-14 12:16:32,302 - INFO  [ProcessThread(sid:3 cport:-1)::PrepRequestProcessor@627] - Got user-level KeeperException when processing sessionid:0x34fcb982d030000 type:create cxid:0x7b zxid:0x1000000dc txntype:-1 reqpath:n/a Error Path:/brokers/topics/oneMoreTopic/partitions/0 Error:KeeperErrorCode = NoNode for /brokers/topics/oneMoreTopic/partitions/0
2015-09-14 12:16:32,304 - INFO  [ProcessThread(sid:3 cport:-1)::PrepRequestProcessor@627] - Got user-level KeeperException when processing sessionid:0x34fcb982d030000 type:create cxid:0x7c zxid:0x1000000dd txntype:-1 reqpath:n/a Error Path:/brokers/topics/oneMoreTopic/partitions Error:KeeperErrorCode = NoNode for /brokers/topics/oneMoreTopic/partitions

これは、Zookeeper がトピック用の新しい Znode を作成しているだけのようです。これは以前から存在していなかったからです。また、Kafka server.log には次のように出力されます。

[2015-09-14 12:16:32,282] INFO Topic creation {"version":1,"partitions":{"0":[10200119]}} (kafka.admin.AdminUtils$)
[2015-09-14 12:16:32,287] INFO [KafkaApi-10200219] Auto creation of topic oneMoreTopic with 1 partitions and replication factor 1 is successful! (kafka.server.KafkaApis)
[2015-09-14 12:16:51,579] INFO Closing socket connection to /10.240.1.94. (kafka.network.Processor)

ただし、私のメッセージはトピックに投稿されることはなく、次に python-script を実行すると、常に次のようになります。

kafka.common.FailedPayloadsError

私がそれを機能させた場合、advertized.host.name は常にノードの外部 IP でしたが、Kubernetes を介してそれを機能させることができないようです。外部 IP をコンテナー parhaps から呼び出し可能にすることは可能でしょうか?

私の kafka/config/server.properties は、すべてのブローカーで次のようになります。

broker.id=10200121
host.name=kafka-f8p06
advertised.host.name=kafka-f8p06
++
4

2 に答える 2

1
broker.id=10200121
host.name=kafka-f8p06  <----- use IP here
advertised.host.name=kafka-f8p06  <---- use IP here

K8s は Pod をホスト名で解決しませんが、 IP で解決するためhost.name、 とのIP を取得する必要があると思います。advertised.host.name

あなたのカフカノードはおそらくそのように互いに話すことができず、リーダーを見つけることができません.

于 2015-09-15T21:48:38.957 に答える