2016-09-18 5 views
0

DCOSを実行する小さなクラスタがあります。 thisガイドに従ってkafkaを正常にインストールできます。kafkaがmesos上で実行されているメッセージの公開に関する問題DCOS

$ dcos kafka connection 

を実行すると、私はトピックを作成することができます

{ 
    "address": [ 
    "10.131.17.126:9475", 
    "10.131.24.6:9655", 
    "10.131.14.192:9181" 
    ], 
    "zookeeper": "master.mesos:2181/dcos-service-kafka", 
    "dns": [ 
    "broker-0.kafka.mesos:9475", 
    "broker-1.kafka.mesos:9655", 
    "broker-2.kafka.mesos:9181" 
    ] 
} 

与え、私は、CLIツールで飼育係を検討してきたし、状態は私が

を公開しようとすると、

get /dcos-service-kafka/brokers/ids/0 
{"jmx_port":-1,"timestamp":"1474206074029","endpoints":["PLAINTEXT://10.131.17.126:9475"],"host":"10.131.17.126","version":3,"port":9475} 
get /dcos-service-kafka/brokers/ids/1 
{"jmx_port":-1,"timestamp":"1474206120002","endpoints":["PLAINTEXT://10.131.24.6:9655"],"host":"10.131.24.6","version":3,"port":9655} 
get /dcos-service-kafka/brokers/ids/2 
{"jmx_port":-1,"timestamp":"1474206122985","endpoints":["PLAINTEXT://10.131.14.192:9181"],"host":"10.131.14.192","version":3,"port":9181} 

しかし良いように見えます

echo "Hello, World." | ./kafka-console-producer.sh --broker-list 10.131.17.126:9475, 10.131.24.6:9655, 10.131.14.192:9181 --topic topic1 

私はserver.propertiesで対民間のパブリックIPアドレスとは何か、おそらくhost.nameかもしれない疑い

[2016-09-18 18:49:32,909] ERROR Error when sending message to topic topic1 with key: null, value: 13 bytes with error: Failed to update metadata after 60000 ms. (org.apache.kafka.clients.producer.internals.ErrorLoggingCallback) 

を取得します。

メッセージを正常に公開できるように、どのように問題をデバッグして(うまくいけば解決するのか)、誰でも問題を提起できますか?

おかげ

AJ

答えて

1

編集:将来的に探している人のために。 This was a problem in /etc/hosts caused by a terraform script

あなたの疑惑は正しいです。これらはプライベートIPアドレスであり、クラスタの外部からはアドレス指定できません。 Kafkaと通信するには、これらのIPアドレスに到達できるようにVPNを設定するか、クラスタ内のマシン上で公開コマンドを実行する必要があります。

さらに、1.8より前のDC/OSバージョンで動作しているようです。 1.8を使用すると、動的に割り当てられたIPアドレスに関係なく、より簡単なブローカエンドポイントを使用できます。ただし、指定されたVIP broker.kafka.l4lb.thisdcos.directory:9092を使用することはできますが、これはクラスタ内のマシンからのみ実行可能です。

名前付きVIPを指すようにhaproxyまたはnginxを設定することも、DC/OSクラスタで実行されているサービス(この場合はKafka)への外部アクセスを容易にする方法です。これらのプロキシがパブリックエージェントで実行されるようにする必要があります。 See here for more details。ここで

は、インストール生産およびデフォルトカフカのインストールから消費するの一例です:

~ $ dcos package install kafka 
Installing Marathon app for package [kafka] version [1.1.11-0.10.0.0] 
Installing CLI subcommand for package [kafka] version [1.1.11-0.10.0.0] 
New command available: dcos kafka 
DC/OS Kafka Service is being installed. 

     Documentation: https://docs.mesosphere.com/usage/services/kafka/ 
     Issues: https://docs.mesosphere.com/support/ 
~ $ dcos kafka connection 
{ 
    "address": [ 
    "10.0.3.64:9951", 
    "10.0.3.68:9795", 
    "10.0.3.66:9531" 
    ], 
    "zookeeper": "master.mesos:2181/dcos-service-kafka", 
    "dns": [ 
    "broker-0.kafka.mesos:9951", 
    "broker-1.kafka.mesos:9795", 
    "broker-2.kafka.mesos:9531" 
    ], 
    "vip": "broker.kafka.l4lb.thisdcos.directory:9092" 
} 
~ $ dcos kafka topic create topic0 
{ 
    "message": "Output: Created topic \"topic0\".\n" 
} 
~ $ dcos node ssh --master-proxy --leader 
[email protected] ~ $ wget http://download.nextag.com/apache/kafka/0.10.0.1/kafka_2.11-0.10.0.1.tgz 
[email protected] ~ $ tar xf kafka_2.11-0.10.0.1.tgz 
[email protected] ~ $ cd kafka_2.11-0.10.0.1 
[email protected] ~/kafka_2.11-0.10.0.1 $ bin/kafka-console-producer.sh --broker-list broker.kafka.l4lb.thisdcos.directory:9092 --topic topic0 
This is a message 
This is another message 
^[email protected] ~/kafka_2.11-0.10.0.1 $ bin/kafka-console-consumer.sh --zookeeper master.mesos:2181/dcos-service-kafka --topic topic0 --from-beginning 
This is a message 
This is another message 
^CProcessed a total of 2 messages 
$ bin/kafka-console-producer.sh --broker-list 10.0.3.64:9951,10.0.3.68:9795,10.0.3.66:9531 --topic topic0 
foo 
bar 
baz 
^[email protected] ~/kafka_2.11-0.10.0.1 $ bin/kafka-console-consumer.sh --zookeeper master.mesos:2181/dcos-service-kafka --topic topic0 --from-beginning 
This is a message 
This is another message 
foo 
bar 
baz 
^CProcessed a total of 5 messages 
+0

私は1.8に更新しました。ありがとうございました。私はユーザガイド 'dcos node ssh --master-proxy -leader'に従ってブローカノードの1つにsshしています。そこから、そしてドッカーのコンテナ内からすべての内部ポートにpingできます。 –

+0

それを追加しても動作しません。私は間違っている場合は、VPNを使用してこれを修正するかどうか、私を修正するかわからない。 –

+0

ご協力いただきありがとうございます。残念ながら、これはまだ私のためには機能しません。上記の手順と同じ手順を実行すると、次のようになります。 –

1

アップデート - これは/ etc/hostsファイル内のエントリの欠落によって引き起こされているように見えるん。セットアップ中にこれらを書き込むように私のterraformスクリプトを更新しました。あなたの上記の例は、期待どおりに動作します。

ご協力ありがとうございました

+0

素晴らしい!あなたが解決策に達したことをうれしく思います。申し訳ありませんが私はより多くの助けができませんでした。 – Gabriel

関連する問題