1

fig を kafka で使用して、kafka クラスターを管理したいと考えています。

私は fig の初心者で、hostPort マッピングに問題があります。

kafka-docker を kafka イメージとして使用します。私の fig.yml はここにあります:

zookeeper:
  image: jplock/zookeeper:3.4.6
  ports:
    - "2181"
kafka:
  image: wurstmeister/kafka:0.8.1.1-1
  ports:
    - "9092"
  links:
    - zookeeper:zk
  environment:
    KAFKA_ADVERTISED_HOST_NAME: 192.168.59.103
  volumes:
    - /var/run/docker.sock:/var/run/docker.sock

画像で示した例です。

さて、ここに私の問題があります:

次のコマンドを実行してクラスターを起動します。

イチジクスケール kafka=2

次のようなカフカ トピックを作成します。

./kafka-topics.sh --create --zookeeper 192.168.59.103:49157 --replication-factor 2 --partitions 1 --topic テスト

次:

$ ./kafka-topics.sh --describe --zookeeper 192.168.59.103:49157 --topic test2 Topic:test2 PartitionCount:1 ReplicationFactor:2 構成: Topic: test2 Partition: 0 Leader: 49158 Replicas: 49159,49158 Isr: 49159,49158

figKakfa_2 が何らかの理由でクラッシュします (49159 ポートで実行されます)。

このコンテナを同じポートで再起動するにはどうすればよいですか?

scale コマンドを再度実行すると、新しいコンテナーが取得されますが、別の hostPort にマップされており、飼育係はそれを古いインスタンスとして取得しません。

ありがとう。

4

2 に答える 2

0

fig.yml で使用するnet: hostと、すべての docker コンテナーがホストのネットワーク スタックを使用するため、ポートを公開する必要はありません。これは、再起動またはスケールアップ時に変更されないことを意味します。Kafka インスタンスに一意のポートを使用させる方法を理解する必要があります。

http://www.fig.sh/yml.html

于 2014-12-04T16:04:11.233 に答える
0

最も簡単な解決策は、ホストのポートを公開するのではなく、ポート 9092 でコンテナーの IP (172.17.0.3 など) で kafkas にアクセスすることです$ docker inspect --format "{{json .NetworkSettings.Networks}}" <container id/name>

于 2016-02-29T08:16:02.447 に答える