私は、kafka プロデューサーと別の kafka コンシューマーで構成されるアプリケーションを持っています。マルチホスト ネットワークを有効にして、AWS の Docker swarm にデプロイしようとしています。Kafka コンテナーは、次のdocker-compose.yml
ファイルによって作成されます。
kafka:
image: spotify/kafka
environment:
ADVERTISED_PORT: 9092
ports:
- "2181:2181"
- "9092:9092"
これは、さまざまなコンポーネントのコンテナーを実行する方法です。
> docker-compose -f helloworld_kafka.yml --x-networking up -d
Creating network "helloworld"
...
> docker run -d --name helloworld_producer_1 --net helloworld -it elsoufy/myimage ./myexec -role producer -queue helloworld_kafka_1:9092
> docker run -d --name helloworld_consumer_1 --net helloworld -it elsoufy/myimage ./myexec -role consumer -queue helloworld_kafka_1:9092
のを確認する/etc/hosts
と、とhelloworld_kafka_1
の両方のエントリが見つかりました。helloworld_server_1
helloworld_consumer_1
10.0.0.2 kafka_container_id
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
10.0.0.3 helloworld_server_1
10.0.0.3 helloworld_server_1.helloworld
10.0.0.4 helloworld_consumer_1
10.0.0.4 helloworld_consumer_1.helloworld
しかし、後者のログを確認すると、kafka への接続に失敗していることに気付きました。次のように表示されます。
> docker logs consumer_container_id
2015/11/27 16:05:52 Kafka brokers: helloworld_kafka_1:9092
2015/11/27 16:05:52 Failed to start consuming dial tcp: lookup kafka_container_id on 10.10.0.2:53: no such host
10.10.0.2
コンテナが名前を解決するために使用するDNS (ポート) はいつで、53
到達できないようです。ノードのネットワークを調べると、このアドレスが見つからず、helloworld
オーバーレイ ネットワークの範囲内にありません。この DNS を到達可能にするにはどうすればよいですか? どんな提案でも大歓迎です。