Docker Configuration Parameters

このトピックでは、Confluent Platform の起動時に Docker イメージを構成する方法について説明します。

環境変数を使用して、Confluent Platform Docker イメージの構成値を動的に指定できます。Docker の -e または --env フラグを使用すると、さまざまな設定を指定できます。

参考

この構成の動作例については、Confluent Platform デモ を参照してください。構成リファレンスについては、デモの docker-compose.yml ファイル を参照してください。

ZooKeeper の構成

ZooKeeper (cp-zookeeper)イメージの場合は、zookeeper.properties ファイル変数を以下のように変換し、環境変数として使用します。

  • 先頭に ZOOKEEPER_ を付加します。
  • 大文字に変換します。
  • 各単語を _ で区切ります。
  • ピリオド(.)をシングルアンダースコア(_)に置き換えます。
  • ダッシュ(-)をダブルアンダースコア(__)に置き換えます。
  • アンダースコア(_)をトリプルアンダースコア(___)に置き換えます。

たとえば、clientPorttickTime、および syncLimit を設定するには、以下のコマンドを実行します。

docker run -d \
--net=host \
--name=zookeeper \
-e ZOOKEEPER_CLIENT_PORT=32181 \
-e ZOOKEEPER_TICK_TIME=2000 \
-e ZOOKEEPER_SYNC_LIMIT=2 \
confluentinc/cp-zookeeper:6.2.4

ZooKeeper の必須設定

ZOOKEEPER_CLIENT_PORT
Apache Kafka® などのクライアントによる接続をリッスンする場所を ZooKeeper に指定します。
ZOOKEEPER_SERVER_ID
これは、クラスターモードで実行する場合にのみ必要です。myid ファイルにサーバー ID を設定します。このファイルは、マシンの ID のテキストのみを含む単一行で構成されます。たとえば、サーバー 1 の myid には、テキスト "1" のみが含まれます。ID はアンサンブル内で一意でなければならず、1 から 255 の間の値を持つ必要があります。

Confluent Kafka の構成

Kafka (cp-kafka)イメージの場合は、kafka.properties ファイル変数を以下のように変換し、環境変数として使用します。

  • 先頭に KAFKA_ を付加します。
  • 大文字に変換します。
  • ピリオド(.)をシングルアンダースコア(_)に置き換えます。
  • ダッシュ(-)をダブルアンダースコア(__)に置き換えます。
  • アンダースコア(_)をトリプルアンダースコア(___)に置き換えます。

たとえば、次のコマンドを実行して、broker.idadvertised.listenerszookeeper.connect、および offsets.topic.replication.factor を設定します。

docker run -d \
    --net=host \
    --name=kafka \
    -e KAFKA_ZOOKEEPER_CONNECT=localhost:32181 \
    -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:29092 \
    -e KAFKA_BROKER_ID=2 \
    -e KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1 \
    confluentinc/cp-kafka:6.2.4

注釈

KAFKA_ADVERTISED_LISTENERS 変数は localhost:29092 に設定されます。これにより、Docker ホスト上の Kafka の場所をアドバタイズすることで、コンテナーの外部から Kafka にアクセスできるようになります。

また、 KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR1 に設定されていることにも注意してください。これは、単一ノードクラスターで実行している場合に必要です。3 つ以上のノードがある場合は、デフォルトを使用できます。

Confluent Kafka の必須設定

KAFKA_ZOOKEEPER_CONNECT
ZooKeeper とやり取りする方法を Kafka に指示します。
KAFKA_ADVERTISED_LISTENERS

アドバタイズされ、クライアントが到達できるホスト名について説明します。値はクライアントが使用できるように ZooKeeper にパブリッシュされます。

SSL または SASL プロトコルを使用する場合、エンドポイント値は以下の形式でプロトコルを指定する必要があります。

  • SSL: SSL:// または SASL_SSL://
  • SASL: SASL_PLAINTEXT:// または SASL_SSL://

Confluent Enterprise Kafka の構成

Enterprise Kafka (cp-server)イメージには、Kafka の他に、Confluent Auto Data Balancer と Health+ in のパッケージが含まれています。

Enterprise Kafka (cp-server)イメージの場合は、kafka.properties ファイル変数を以下のように変換し、環境変数として使用します。

  • Apache Kafka には、先頭に KAFKA_ を付加します。
  • Confluent コンポーネントには、先頭に CONFLUENT_ を付加します。
  • 大文字に変換します。
  • ピリオド(.)をシングルアンダースコア(_)に置き換えます。
  • ダッシュ(-)をダブルアンダースコア(__)に置き換えます。
  • アンダースコア(_)をトリプルアンダースコア(___)に置き換えます。

たとえば、broker.idadvertised.listenerszookeeper.connectoffsets.topic.replication.factor、および confluent.support.customer.id を設定するには、以下のコマンドを実行します。

docker run -d \
    --net=host \
    --name=kafka \
    -e KAFKA_ZOOKEEPER_CONNECT=localhost:32181 \
    -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:29092 \
    -e KAFKA_BROKER_ID=2 \
    -e KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1 \
    -e CONFLUENT_SUPPORT_CUSTOMER_ID=c0 \
    -e KAFKA_CONFLUENT_LICENSE="ABC123XYZ737BVT" \
    confluentinc/cp-server:6.2.4

注釈

KAFKA_ADVERTISED_LISTENERS 変数は localhost:29092 に設定されます。これにより、Docker ホスト上の Kafka の場所をアドバタイズすることで、コンテナーの外部から Kafka にアクセスできるようになります。

Confluent Auto Data Balancing 機能を使用する場合は、「データの自動バランス調整」を参照してください。

また、 KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR1 に設定されていることにも注意してください。これは、単一ノードクラスターで実行している場合に必要です。3 つ以上のノードがある場合は、デフォルトを使用できます。

Confluent Enterprise Kafka の必須設定

KAFKA_ZOOKEEPER_CONNECT
ZooKeeper とやり取りする方法を Kafka に伝えます。
KAFKA_ADVERTISED_LISTENERS

アドバタイズされ、クライアントが到達できるホスト名について説明します。値はクライアントが使用できるように ZooKeeper にパブリッシュされます。

SSL または SASL プロトコルを使用する場合、エンドポイント値は以下の形式でプロトコルを指定する必要があります。

  • SSL: SSL:// または SASL_SSL://
  • SASL: SASL_PLAINTEXT:// または SASL_SSL://

Confluent Enterprise Kafka のオプション設定

以下に示したのは、Enterprise Kafka (cp-server)イメージのオプション設定です。Confluent Server 構成設定の網羅的なリストについては、「Confluent Platform 構成リファレンス」を参照してください。

KAFKA_CONFLUENT_LICENSE
Enterprise Kafka のライセンスキー。ライセンスキーがなくても、Confluent Server は 30 日間、試用期間として使用できます。

Confluent Schema Registry の構成

Schema Registry (cp-schema-registry)イメージの場合は、プロパティ変数を以下のように変換し、環境変数として使用します。

  • 先頭に SCHEMA_REGISTRY_ を付加します。
  • 大文字に変換します。
  • ピリオド(.)をシングルアンダースコア(_)に置き換えます。
  • ダッシュ(-)をダブルアンダースコア(__)に置き換えます。
  • アンダースコア(_)をトリプルアンダースコア(___)に置き換えます。

たとえば、以下を実行して、kafkastore.connection.urlhost.namelisteners、および debug を設定します。

docker run -d \
  --net=host \
  --name=schema-registry \
  -e SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS=SSL://hostname2:9092 \
  -e SCHEMA_REGISTRY_HOST_NAME=localhost \
  -e SCHEMA_REGISTRY_LISTENERS=http://localhost:8081 \
  -e SCHEMA_REGISTRY_DEBUG=true \
  confluentinc/cp-schema-registry:6.2.4

Schema Registry の必須設定

SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS
接続先となる Kafka ブローカーのリスト
SCHEMA_REGISTRY_HOST_NAME
ZooKeeper でアドバタイズされるホスト名。これは、複数のノードで Schema Registry を実行している場合に必要です。ホスト名が必要なのは、コンテナーの Java 正規ホスト名がデフォルトで設定されているためであり、Docker 環境では解決できない場合もあります。セカンダリノードは現在のプライマリに登録リクエストを転送し、プライマリからの応答を返すだけで間接的に登録リクエストを処理するため、ホスト名は解決できる必要があります。詳細については、「単一プライマリアーキテクチャ」に関する Schema Registry のドキュメントを参照してください。

Confluent REST Proxy の構成

Confluent REST Proxy (cp-kafka-rest)イメージは REST Proxy 構成設定名を使用します。以下のように REST Proxy 設定を環境変数に変換します。

  • 先頭に KAFKA_REST_ を付加します。
  • 大文字に変換します。
  • ピリオド(.)をシングルアンダースコア(_)に置き換えます。
  • ダッシュ(-)をダブルアンダースコア(__)に置き換えます。
  • アンダースコア(_)をトリプルアンダースコア(___)に置き換えます。

たとえば、schema.registry.url を設定するには、KAFKA_REST_SCHEMA_REGISTRY_URL 環境変数を使用します。

REST Proxy がサポートする構成設定については、「REST Proxy の構成オプション」を参照してください。

以下のコマンドは、listenersschema.registry.url、および zookeeper.connect を設定します。

docker run -d \
  --net=host \
  --name=kafka-rest \
  -e KAFKA_REST_ZOOKEEPER_CONNECT=localhost:32181 \
  -e KAFKA_REST_LISTENERS=http://localhost:8082 \
  -e KAFKA_REST_SCHEMA_REGISTRY_URL=http://localhost:8081 \
  -e KAFKA_REST_BOOTSTRAP_SERVERS=localhost:29092 \
  confluentinc/cp-kafka-rest:6.2.4

Confluent REST Proxy の必須設定

REST Proxy Docker イメージを実行するには、以下の設定を渡す必要があります。

KAFKA_REST_HOST_NAME
応答で絶対 URL を生成するために使用されるホスト名。ホスト名が必要な場合があるのは、コンテナーの Java 正規ホスト名がデフォルトで設定されているためであり、Docker 環境では解決できない場合もあります。詳細については、「REST Proxy のデプロイ」に関する Confluent Platform ドキュメントを参照してください。
KAFKA_REST_BOOTSTRAP_SERVERS
接続先となる Kafka ブローカーのリスト対応する bootstrap.server REST Proxy の設定については、「REST Proxy の構成オプション」を参照してください。
KAFKA_REST_ZOOKEEPER_CONNECT

この変数は REST Proxy v2 では非推奨となっています。REST Proxy v1 を使用し、KAFKA_REST_BOOTSTRAP_SERVERS を使用していない場合は、この変数を使用してください。

hostname:port 形式の ZooKeeper 接続文字列において、ホストとポートは ZooKeeper サーバーのホストとポートです。ZooKeeper マシンがダウンしているときに他の ZooKeeper ノード経由で接続できるように、hostname1:port1,hostname2:port2,hostname3:port3 の形式で複数のホストを指定することもできます。

サーバーは、ZooKeeper 接続文字列の一部として ZooKeeper chroot パスを持つこともできます。これは、グローバル ZooKeeper 名前空間のいずれかのパスの下にデータを置きます。その場合、コンシューマーは接続文字列で同じ chroot パスを使用する必要があります。たとえば、chroot のパスを /chroot/path にするには、接続文字列 hostname1:port1,hostname2:port2,hostname3:port3/chroot/path を使用します。

Kafka Connect の構成

Kafka Connect (cp-kafka-connect)イメージの場合は、プロパティ変数を以下のように変換し、環境変数として使用します。

  • 先頭に CONNECT_ を付加します。
  • 大文字に変換します。
  • ピリオド(.)をシングルアンダースコア(_)に置き換えます。
  • ダッシュ(-)をダブルアンダースコア(__)に置き換えます。
  • アンダースコア(_)をトリプルアンダースコア(___)に置き換えます。

たとえば、以下のコマンドを実行して、bootstrap.servers などの必須プロパティ、configoffsetsstatus のトピック名と、 key または value コンバーターを設定します。

docker run -d \
  --name=kafka-connect \
  --net=host \
  -e CONNECT_BOOTSTRAP_SERVERS=localhost:29092 \
  -e CONNECT_REST_PORT=28082 \
  -e CONNECT_GROUP_ID="quickstart" \
  -e CONNECT_CONFIG_STORAGE_TOPIC="quickstart-config" \
  -e CONNECT_OFFSET_STORAGE_TOPIC="quickstart-offsets" \
  -e CONNECT_STATUS_STORAGE_TOPIC="quickstart-status" \
  -e CONNECT_KEY_CONVERTER="org.apache.kafka.connect.json.JsonConverter" \
  -e CONNECT_VALUE_CONVERTER="org.apache.kafka.connect.json.JsonConverter" \
  -e CONNECT_INTERNAL_KEY_CONVERTER="org.apache.kafka.connect.json.JsonConverter" \
  -e CONNECT_INTERNAL_VALUE_CONVERTER="org.apache.kafka.connect.json.JsonConverter" \
  -e CONNECT_REST_ADVERTISED_HOST_NAME="localhost" \
  -e CONNECT_PLUGIN_PATH=/usr/share/java \
  confluentinc/cp-kafka-connect:6.2.4

Kafka Connect の必須設定

Kafka Connect Docker イメージを実行するには、以下の設定を渡す必要があります。

CONNECT_BOOTSTRAP_SERVERS
Kafka クラスターとの初期接続を確立するために使用する host:port のペア。host1:port1,host2:port2,host3:port3… の形式で複数のブートストラップサーバーを使用できます。
CONNECT_GROUP_ID
このワーカーが属する Connect クラスターグループを示す一意の文字列。
CONNECT_CONFIG_STORAGE_TOPIC
コネクターおよびタスクの構成データを保存するトピックの名前。これは、同じ group.id を持つすべてのワーカーで同じになっている必要があります。
CONNECT_OFFSET_STORAGE_TOPIC
コネクターのオフセットデータを保存するトピックの名前。これは、同じ group.id を持つすべてのワーカーで同じになっている必要があります。
CONNECT_STATUS_STORAGE_TOPIC
コネクターのステートを保存するトピックの名前。これは、同じ group.id を持つすべてのワーカーで同じになっている必要があります。
CONNECT_KEY_CONVERTER
キーのコンバーターのクラス。このプロパティでは、ソースコネクターで Kafka に書き込まれるデータ、シンクコネクターで Kafka から読み取られるデータのフォーマットを指定します。
CONNECT_VALUE_CONVERTER
値のコンバーターのクラス。このプロパティでは、ソースコネクターで Kafka に書き込まれるデータ、シンクコネクターで Kafka から読み取られるデータのフォーマットを指定します。
CONNECT_INTERNAL_KEY_CONVERTER
Converter インターフェイスが実装されている、内部キーのコンバーターのクラス。
CONNECT_INTERNAL_VALUE_CONVERTER
Converter インターフェイスが実装されている、内部値のコンバーターのクラス。
CONNECT_REST_ADVERTISED_HOST_NAME
接続する他のワーカーに割り当てられるホスト名。Docker 環境では、クライアントは Connect や他のサービスに接続できる必要があります。アドバタイズされたホスト名は、クライアントから到達可能なホスト名を Connect が提供する手段となります。
CONNECT_PLUGIN_PATH
クラス読み込みの分離で、読み込む Connect プラグインがある場所。confluent-hub クライアントを使用する場合は、confluent-hub のインストール先のデフォルトパスである /usr/share/confluent-hub-components を含めてください。

Kafka Connect のオプション設定

CONNECT_CONFLUENT_LICENSE
Confluent のライセンスキー。ライセンスキーがなくても、Kafka Connect は 30 日間、試用期間として使用できます。

Confluent Control Center の構成

Confluent Control Center (cp-control-center)イメージの場合は、プロパティ変数を以下のように変換し、環境変数として使用します。

  • プロパティ変数の confluent.controlcenterCONTROL_CENTER_ で置き換えます。
  • ピリオド(.)をシングルアンダースコア(_)に置き換えます。
  • ダッシュ(-)をダブルアンダースコア(__)に置き換えます。
  • アンダースコア(_)をトリプルアンダースコア(___)に置き換えます。

たとえば、confluent.controlcenter.mail.from プロパティ変数は、CONTROL_CENTER_MAIL_FROM 環境変数に変換する必要があります。

以下のコマンド例では、ZooKeeper、Kafka、Connect の構成パラメーターを渡して Control Center を実行しています。

docker run -d \
  --net=host \
  --name=control-center \
  --ulimit nofile=16384:16384 \
  -e CONTROL_CENTER_BOOTSTRAP_SERVERS=localhost:29092 \
  -e CONTROL_CENTER_REPLICATION_FACTOR=1 \
  -e CONTROL_CENTER_CONNECT_CLUSTER=http://localhost:28082 \
  -v /mnt/control-center/data:/var/lib/confluent-control-center \
  confluentinc/cp-enterprise-control-center:6.2.4

Control Center Docker オプション

  • ファイル記述子の制限: Control Center では多くのファイルを開くことが必要になる可能性があるため、ファイル記述子の制限を少なくとも 16384 に設定することをお勧めします。
  • データの永続性: Control Center イメージのデータは、/var/lib/confluent-control-center ディレクトリに格納されます。これをホストマシン上のボリュームにバインドして、実行中もデータが保持されるようにすることをお勧めします。

Control Center の必須設定

Confluent Control Center イメージを実行するには、以下の設定を渡す必要があります。

CONTROL_CENTER_BOOTSTRAP_SERVERS
Kafka クラスターとの初期接続を確立するために使用する host:port のペア。host1:port1,host2:port2,host3:port3… の形式で複数のブートストラップサーバーを使用できます。
CONTROL_CENTER_REPLICATION_FACTOR
Control Center トピックのレプリケーション係数。本稼働環境では、この値を 3 に設定することをお勧めします。

Control Center のオプション設定

CONTROL_CENTER_CONNECT_CLUSTER
Control Center が Kafka Connect クラスターと対話できるようにするには、このパラメーターを Kafka Connect クラスターの REST エンドポイント URL に設定します。
CONTROL_CENTER_CONFLUENT_LICENSE
Confluent Control Center ライセンスキー。ライセンスキーがなくても、Confluent Control Center は 30 日間、試用期間として使用できます。
CONTROL_CENTER_KAFKA_<name>_BOOTSTRAP_SERVERS
監視対象になっている追加 Kafka クラスターのブートストラップサーバーを一覧表示するには、 <name> を Control Center がこのクラスターの識別に使用する名前に置き換えます。たとえば、CONTROL_CENTER_KAFKA_production-nyc_BOOTSTRAP_SERVER を使用すると、Control Center がクラスターリストに production-nyc という名前の追加クラスターを表示します。
CONTROL_CENTER_LICENSE
Confluent Control Center ライセンスキー。ライセンスキーがなくても、Confluent Control Center は 30 日間、試用期間として使用できます。
CONTROL_CENTER_REST_LISTENERS

これを Control Center UI の HTTP または HTTPS に設定します。設定しないと、以下の警告メッセージが表示される場合があります。

WARN DEPRECATION warning: `listeners` configuration is not configured. Falling back to the deprecated `port` configuration. (io.confluent.rest.Application)

Confluent Replicator の構成

Confluent Replicator は Kafka コネクターであり、Kafka Connect クラスター上で実行されます。

Confluent Replicator イメージ(cp-enterprise-replicator)の場合は、プロパティ変数を以下のように変換し、環境変数として使用します。

  • 先頭に CONNECT_ を付加します。
  • 大文字に変換します。
  • 各単語を _ で区切ります。
  • ピリオド(.)をシングルアンダースコア(_)に置き換えます。
  • ダッシュ(-)をダブルアンダースコア(__)に置き換えます。
  • アンダースコア(_)をトリプルアンダースコア(___)に置き換えます。

たとえば、以下のコマンドを実行して、bootstrap.serversconfluent.license などのプロパティ、および configoffsetsstatus のトピック名を設定します。

docker run -d \
  --name=cp-enterprise-replicator \
  --net=host \
  -e CONNECT_BOOTSTRAP_SERVERS=localhost:29092 \
  -e CONNECT_REST_PORT=28082 \
  -e CONNECT_GROUP_ID="quickstart" \
  -e CONNECT_CONFIG_STORAGE_TOPIC="quickstart-config" \
  -e CONNECT_OFFSET_STORAGE_TOPIC="quickstart-offsets" \
  -e CONNECT_STATUS_STORAGE_TOPIC="quickstart-status" \
  -e CONNECT_KEY_CONVERTER="org.apache.kafka.connect.json.JsonConverter" \
  -e CONNECT_VALUE_CONVERTER="org.apache.kafka.connect.json.JsonConverter" \
  -e CONNECT_INTERNAL_KEY_CONVERTER="org.apache.kafka.connect.json.JsonConverter" \
  -e CONNECT_INTERNAL_VALUE_CONVERTER="org.apache.kafka.connect.json.JsonConverter" \
  -e CONNECT_REST_ADVERTISED_HOST_NAME="localhost" \
  -e CONNECT_CONFLUENT_LICENSE="ABC123XYZ737BVT" \
  confluentinc/cp-enterprise-replicator:6.2.4

以下の例は、トピック "confluent" を送信元 Kafka クラスター(src)から送信先 Kafka クラスター(dest)に複製する Confluent Replicator コネクターの作成方法を示しています。

curl -X POST \
     -H "Content-Type: application/json" \
     --data '{
        "name": "confluent-src-to-dest",
        "config": {
          "connector.class":"io.confluent.connect.replicator.ReplicatorSourceConnector",
          "key.converter": "io.confluent.connect.replicator.util.ByteArrayConverter",
          "value.converter": "io.confluent.connect.replicator.util.ByteArrayConverter",
          "src.kafka.bootstrap.servers": "kafka-src:9082",
          "topic.whitelist": "confluent",
          "topic.rename.format": "${topic}.replica"}}'  \
            http://localhost:28082/connectors

Confluent Replicator の必須設定

Confluent Replicator Docker イメージを実行するには、以下の設定を渡す必要があります。

CONNECT_BOOTSTRAP_SERVERS
Kafka クラスターとの初期接続を確立するために使用する host:port のペア。host1:port1,host2:port2,host3:port3… の形式で複数のブートストラップサーバーを使用できます。
CONNECT_GROUP_ID
このワーカーが属する Connect クラスターグループを示す一意の文字列。
CONNECT_CONFIG_STORAGE_TOPIC
コネクターおよびタスクの構成データが保存されるトピックの名前。これは、同じ group.id を持つすべてのワーカーで同じになっている必要があります。
CONNECT_OFFSET_STORAGE_TOPIC
コネクターのオフセットデータが保存されるトピックの名前。これは、同じ group.id を持つすべてのワーカーで同じになっている必要があります。
CONNECT_STATUS_STORAGE_TOPIC
コネクターのステートが保存されるトピックの名前。これは、同じ group.id を持つすべてのワーカーで同じになっている必要があります。
CONNECT_KEY_CONVERTER
キーのコンバーターのクラス。このプロパティでは、ソースコネクターで Kafka に書き込まれるデータ、シンクコネクターで Kafka から読み取られるデータのフォーマットを指定します。
CONNECT_VALUE_CONVERTER
値のコンバーターのクラス。このプロパティでは、ソースコネクターで Kafka に書き込まれるデータ、シンクコネクターで Kafka から読み取られるデータのフォーマットを指定します。
CONNECT_INTERNAL_KEY_CONVERTER
Converter インターフェイスが実装されている、内部キーのコンバーターのクラス。
CONNECT_INTERNAL_VALUE_CONVERTER
Converter インターフェイスが実装されている、内部値のコンバーターのクラス。
CONNECT_REST_ADVERTISED_HOST_NAME
接続する他のワーカーに割り当てられるホスト名。Docker 環境では、クライアントは Connect や他のサービスに接続できる必要があります。アドバタイズされたホスト名は、クライアントから到達可能なホスト名を Connect が提供する手段となります。

Confluent Replicator のオプション設定

CONNECT_CONFLUENT_LICENSE
Confluent のライセンスキー。ライセンスキーがなくても、Replicator は 30 日間、試用期間として使用できます。

Confluent Replicator 実行可能ファイルの構成

Confluent Replicator 実行可能ファイル(cp-enterprise-replicator-executable)は、構成プロパティを統合し、Connect の詳細を抽象化することで、Replicator を実行する別の方法を提供します。

イメージは、想定される入力ファイルを持つディレクトリをマウントするか、各ファイルを個別にマウントすることによって渡すことができる入力ファイルに依存します。さらに、このイメージでは、環境変数を介して Replicator 実行可能ファイルにコマンドラインパラメーターを渡すこともできます。

以下は Replicator を起動する場合の例です。Docker イメージの /etc/replicator の下にマウントされるローカルディレクトリ /mnt/replicator/config に、必須ファイルの consumer.propertiesproducer.properties と、必要とされることが多いファイル replication.properties (省略可)が含まれています。

docker run -d \
  --name=ReplicatorX \
  --net=host \
  -e REPLICATOR_LOG4J_ROOT_LOGLEVEL=DEBUG \
  -v /mnt/replicator/config:/etc/replicator \
  confluentinc/cp-enterprise-replicator-executable:6.2.4

同様の例として、replication.properties の追加を省略し、環境変数を使用してレプリケーションプロパティを指定して Replicator を起動します。

想定される環境変数の網羅的なリストについては、次のセクションの設定のリストを参照してください。

docker run -d \
  --name=ReplicatorX \
  --net=host \
  -e CLUSTER_ID=replicator-east-to-west \
  -e WHITELIST=confluent \
  -e TOPIC_RENAME_FORMAT='${topic}.replica' \
  -e REPLICATOR_LOG4J_ROOT_LOGLEVEL=DEBUG \
  -v /mnt/replicator/config:/etc/replicator \
  confluentinc/cp-enterprise-replicator-executable:6.2.4

Confluent Replicator 実行可能ファイルの必須設定

Replicator 実行可能ファイルの Docker イメージを実行するには、以下のファイルを渡す必要があります。

CONSUMER_CONFIG
送信元クラスターからコンシューマーが読み取るための構成設定を含むファイル。デフォルトの場所は Docker イメージの /etc/replicator/consumer.properties です。
PRODUCER_CONFIG
プロデューサーが送信先クラスターに書き込むための構成設定を含むファイル。デフォルトの場所は Docker イメージの /etc/replicator/producer.properties です。
CLUSTER_ID
Replicator クラスターの一意の識別子を指定する文字列。デフォルト値は replicator です。

Confluent Replicator 実行可能ファイルのオプション設定

ファイルではなく環境変数を介して Replicator 実行可能ファイルに渡すことができるオプションの追加設定は以下のとおりです。

REPLICATION_CONFIG
送信元クラスターからのレプリケーションの構成設定を含むファイル。デフォルトの場所は Docker イメージの /etc/replicator/replication.properties です。
CONSUMER_MONITORING_CONFIG
Replicator のコンシューマーに関連するモニタリング情報を書き込むプロデューサーの構成設定を含むファイル。デフォルトの場所は Docker イメージの /etc/replicator/consumer-monitoring.properties です。
PRODUCER_MONITORING_CONFIG
Replicator のプロデューサーに関連するモニタリング情報を書き込むプロデューサーの構成設定を含むファイル。デフォルトの場所は Docker イメージの /etc/replicator/producer-monitoring.properties です。
BLACKLIST
ホワイトリストに含まれているか正規表現と一致している場合であっても、複製されるべきではないトピックのコンマ区切りリスト。
WHITELIST
レプリケーションするトピックの名前のコンマ区切りリスト。このリストにあり、ブラックリストにないトピックはレプリケーションされます。
CLUSTER_THREADS
Replicator クラスター内のすべてのワーカー全体でのスレッドの合計数です。
CONFLUENT_LICENSE
Confluent のライセンスキー。ライセンスキーがなくても、Replicator は 30 日間、試用期間として使用できます。
TOPIC_AUTO_CREATE
必要に応じて、送信先クラスターにトピックを自動的に作成するかどうかを指定します。トピックの自動作成を無効にしても、Kafka Streams および ksqlDB アプリケーションは引き続き動作します。Kafka Streams および ksqlDB アプリケーションは管理クライアントを使用するため、トピックは引き続き作成されます。
TOPIC_CONFIG_SYNC
トピック構成を送信先クラスターと定期的に同期するかどうかを指定します。
TOPIC_CONFIG_SYNC_INTERVAL_MS
topic.config.sync が有効な場合に、構成の変更を確認する頻度を指定します。
TOPIC_CREATE_BACKOFF_MS
トピックの自動作成または展開を再試行するまでの待機時間。
TOPIC_POLL_INTERVAL_MS
ホワイトリストまたは正規表現に一致する新しいトピックについて送信元クラスターをポーリングする頻度を指定します。
TOPIC_PRESERVE_PARTITIONS
送信元クラスターと一致するように送信先クラスター内のパーティション数を自動的に増やし、送信元クラスターからレプリケーションされたメッセージが送信先クラスター内の同じパーティションを使用するかどうかを指定します。
TOPIC_REGEX
レプリケーションされるトピックの名前と一致する正規表現。この表現に一致する(またはホワイトリストに記載されている)と同時にブラックリストに記載されていないトピックはレプリケーションされます。
TOPIC_RENAME_FORMAT
送信先クラスター内のトピック名のフォーマット制御文字列。送信元のトピック名を表すプレースホルダーとして ${topic} を含めることができます。
TOPIC_TIMESTAMP_TYPE
送信先クラスター内のトピックのタイムスタンプの種類です。

Kafka MQTT Proxy の構成

Confluent MQTT Proxy Docker イメージの場合は、プロパティ変数を以下のように変換し、環境変数として使用します。

  • 先頭に KAFKA_MQTT_ を付加します。
  • 大文字に変換します。
  • ピリオド(.)をシングルアンダースコア(_)に置き換えます。
  • ダッシュ(-)をダブルアンダースコア(__)に置き換えます。
  • アンダースコア(_)をトリプルアンダースコア(___)に置き換えます。

Kafka MQTT Proxy の必須設定

Confluent MQTT Proxy Docker イメージを実行するには、以下の設定を渡す必要があります。

KAFKA_MQTT_BOOTSTRAP_SERVERS
Kafka クラスターとの初期接続を確立するために使用する host:port のペア。host1:port1,host2:port2,host3:port3… の形式で複数のブートストラップサーバーを使用できます。
KAFKA_MQTT_TOPIC_REGEX_LIST
MQTT トピックを Kafka トピックにマッピングするために使用される '<kafka topic>:<regex>' 型のペアのコンマ区切りのリスト。

ksqlDB サーバーの構成

ksqlDB パラメーターの網羅的なリストについては、「ksqlDB 構成パラメーターリファレンス」を参照してください。

ksqlDB サーバーイメージ(cp-ksqldb-server)の場合は、プロパティ変数を以下のように変換し、環境変数として使用します。

  • 先頭に KSQL_ を付加します。
  • 大文字に変換します。
  • ピリオド(.)をシングルアンダースコア(_)に置き換えます。
  • ダッシュ(-)をダブルアンダースコア(__)に置き換えます。
  • アンダースコア(_)をトリプルアンダースコア(___)に置き換えます。

ksqlDB ヘッドレスサーバー設定

コンテナー内でスタンドアロンの ksqlDB サーバーインスタンスを実行します。

KSQL_BOOTSTRAP_SERVERS
Kafka クラスターとの初期接続を確立するために使用する host:port のペア。host1:port1,host2:port2,host3:port3… の形式で複数のブートストラップサーバーを使用できます。
KSQL_KSQL_SERVICE_ID
ksqlDB サーバーのサービス ID。ksqlDB によって作成された内部トピックのプレフィックスとして使用されます。
KSQL_KSQL_QUERIES_FILE
事前定義 SQL クエリを指定するファイル。
docker run -d \
  -v /path/on/host:/path/in/container/ \
  -e KSQL_BOOTSTRAP_SERVERS=localhost:9092 \
  -e KSQL_KSQL_SERVICE_ID=confluent_standalone_2_ \
  -e KSQL_KSQL_QUERIES_FILE=/path/in/container/queries.sql \
  confluentinc/cp-ksqldb-server:6.2.4

インターセプターを使用する ksqlDB ヘッドレスサーバー設定

コンテナー内に指定されたインターセプタークラスを持つスタンドアロン ksqlDB サーバーを実行します。インターセプタークラスの詳細については、「Confluent Monitoring Interceptor」を参照してください。

KSQL_BOOTSTRAP_SERVERS
Kafka クラスターとの初期接続を確立するために使用する host:port のペア。host1:port1,host2:port2,host3:port3… の形式で複数のブートストラップサーバーを使用できます。
KSQL_KSQL_SERVICE_ID
ksqlDB サーバーのサービス ID。ksqlDB によって作成された内部トピックのプレフィックスとして使用されます。
KSQL_KSQL_QUERIES_FILE
事前定義 SQL クエリを指定するファイル。
KSQL_PRODUCER_INTERCEPTOR_CLASSES
プロデューサーインターセプターの完全修飾クラス名のリスト。
KSQL_CONSUMER_INTERCEPTOR_CLASSES
コンシューマーインターセプターの完全修飾クラス名のリスト。
docker run -d \
  -v /path/on/host:/path/in/container/ \
  -e KSQL_BOOTSTRAP_SERVERS=localhost:9092 \
  -e KSQL_KSQL_SERVICE_ID=confluent_standalone_2_ \
  -e KSQL_PRODUCER_INTERCEPTOR_CLASSES=io.confluent.monitoring.clients.interceptor.MonitoringProducerInterceptor \
  -e KSQL_CONSUMER_INTERCEPTOR_CLASSES=io.confluent.monitoring.clients.interceptor.MonitoringConsumerInterceptor \
  -e KSQL_KSQL_QUERIES_FILE=/path/in/container/queries.sql \
  confluentinc/cp-ksqldb-server:6.2.4

対話型サーバー構成

ksqlDB CLI を使用して手動による対話を可能にする ksqlDB サーバーを実行します。

KSQL_BOOTSTRAP_SERVERS
Kafka クラスターとの初期接続を確立するために使用する host:port のペア。host1:port1,host2:port2,host3:port3… の形式で複数のブートストラップサーバーを使用できます。
KSQL_KSQL_SERVICE_ID
ksqlDB サーバーのサービス ID。ksqlDB によって作成された内部トピックのプレフィックスとして使用されます。
KSQL_LISTENERS
ブローカーがリッスンするプロトコルを含む URI のリスト。
docker run -d \
  -p 127.0.0.1:8088:8088 \
  -e KSQL_BOOTSTRAP_SERVERS=localhost:9092 \
  -e KSQL_LISTENERS=http://0.0.0.0:8088/ \
  -e KSQL_KSQL_SERVICE_ID=confluent_test_2 \
  confluentinc/cp-ksqldb-server:6.2.4

インターセプターを使用する対話型サーバー構成

ksqlDB CLI を使用して手動による対話を可能にするインターセプターを使用する ksqlDB サーバーを実行します。インターセプタークラスの詳細については、「Confluent Monitoring Interceptor」を参照してください。

KSQL_BOOTSTRAP_SERVERS
Kafka クラスターとの初期接続を確立するために使用する host:port のペア。host1:port1,host2:port2,host3:port3… の形式で複数のブートストラップサーバーを使用できます。
KSQL_KSQL_SERVICE_ID
ksqlDB サーバーのサービス ID。ksqlDB によって作成された内部トピックのプレフィックスとして使用されます。
KSQL_LISTENERS
ブローカーがリッスンするプロトコルを含む URI のリスト。
KSQL_PRODUCER_INTERCEPTOR_CLASSES
プロデューサーインターセプターの完全修飾クラス名のリスト。
KSQL_CONSUMER_INTERCEPTOR_CLASSES
コンシューマーインターセプターの完全修飾クラス名のリスト。
docker run -d \
  -p 127.0.0.1:8088:8088 \
  -e KSQL_BOOTSTRAP_SERVERS=localhost:9092 \
  -e KSQL_LISTENERS=http://0.0.0.0:8088/ \
  -e KSQL_KSQL_SERVICE_ID=confluent_test_2_ \
  -e KSQL_PRODUCER_INTERCEPTOR_CLASSES=io.confluent.monitoring.clients.interceptor.MonitoringProducerInterceptor \
  -e KSQL_CONSUMER_INTERCEPTOR_CLASSES=io.confluent.monitoring.clients.interceptor.MonitoringConsumerInterceptor \
  confluentinc/cp-ksqldb-server:6.2.4

インタラクティブモードでは、Docker の外部で実行されている CLI インスタンスは、Docker で実行されているサーバーに接続できます。

./bin/ksql

...
CLI v6.2.4, Server v6.2.4-SNAPSHOT located at http://localhost:8088

Having trouble? Type 'help' (case-insensitive) for a rundown of how things work!

ksql>

セキュアな Kafka クラスター(Confluent Cloud など)への接続

Kafka クラスターへのセキュアな接続を使用する ksqlDB サーバーを実行します。詳細については、「ksqlDB のセキュリティを構成する」を参照してください。

KSQL_BOOTSTRAP_SERVERS
Kafka クラスターとの初期接続を確立するために使用する host:port のペア。host1:port1,host2:port2,host3:port3… の形式で複数のブートストラップサーバーを使用できます。
KSQL_KSQL_SERVICE_ID
ksqlDB サーバーのサービス ID。ksqlDB によって作成された内部トピックのプレフィックスとして使用されます。
KSQL_LISTENERS
ブローカーがリッスンするプロトコルを含む URI のリスト。
KSQL_KSQL_SINK_REPLICAS
ksqlDB によって作成されるトピックのレプリカのデフォルト数。デフォルトは 1 です。
KSQL_KSQL_STREAMS_REPLICATION_FACTOR
内部トピック、コマンドトピック、および出力トピックのレプリケーション係数。
KSQL_SECURITY_PROTOCOL
Kafka クラスターがセキュリティのために使用するプロトコル。
KSQL_SASL_MECHANISM
Kafka クラスターがセキュリティのために使用する SASL メカニズム。
KSQL_SASL_JAAS_CONFIG
Java Authentication and Authorization Service(JAAS)構成。
docker run -d \
  -p 127.0.0.1:8088:8088 \
  -e KSQL_BOOTSTRAP_SERVERS=REMOVED_SERVER1:9092,REMOVED_SERVER2:9093,REMOVED_SERVER3:9094 \
  -e KSQL_LISTENERS=http://0.0.0.0:8088/ \
  -e KSQL_KSQL_SERVICE_ID=default_ \
  -e KSQL_KSQL_SINK_REPLICAS=3 \
  -e KSQL_KSQL_STREAMS_REPLICATION_FACTOR=3 \
  -e KSQL_SECURITY_PROTOCOL=SASL_SSL \
  -e KSQL_SASL_MECHANISM=PLAIN \
  -e KSQL_SASL_JAAS_CONFIG="org.apache.kafka.common.security.plain.PlainLoginModule required username=\"<username>\" password=\"<strong-password>\";" \
  confluentinc/cp-ksqldb-server:6.2.4

Java システムプロパティを使用した ksqlDB サーバーの構成

Java プロパティで定義された構成で ksqlDB サーバーを実行します。

KSQL_BOOTSTRAP_SERVERS
Kafka クラスターとの初期接続を確立するために使用する host:port のペア。host1:port1,host2:port2,host3:port3… の形式で複数のブートストラップサーバーを使用できます。
KSQL_OPTS
スペース区切りの Java オプションのリスト。
docker run -d \
  -v /path/on/host:/path/in/container/ \
  -e KSQL_BOOTSTRAP_SERVERS=localhost:9092 \
  -e KSQL_OPTS="-Dksql.service.id=confluent_test_3_  -Dksql.queries.file=/path/in/container/queries.sql" \
  confluentinc/cp-ksqldb-server:6.2.4

ログの表示

コンテナー内から生成された ksqlDB ログを表示するには、docker logs コマンドを使用します。

docker logs -f <container-id>
[2018-05-24 23:43:05,591] INFO stream-thread [_confluent-ksql-default_transient_1507119262168861890_1527205385485-71c8a94c-abe9-45ba-91f5-69a762ec5c1d-StreamThread-17] Starting (org.apache.kafka.streams.processor.internals.StreamThread:713)
...

ksqlDB CLI の構成

ksqlDB CLI イメージ(cp-ksqldb-cli)の場合は、プロパティ変数を以下のように変換し、環境変数として使用します。

  • 先頭に KSQL_ を付加します。
  • 大文字に変換します。
  • ピリオド(.)をシングルアンダースコア(_)に置き換えます。
  • ダッシュ(-)をダブルアンダースコア(__)に置き換えます。
  • アンダースコア(_)をトリプルアンダースコア(___)に置き換えます。

Docker 化された ksqlDB サーバーへの接続

コンテナー内で ksqlDB CLI インスタンスを実行し、コンテナー内で実行されている ksqlDB サーバーに接続します。

ksqlDB サーバーによって作成された Docker ネットワークを使用すると、Docker 化された ksqlDB サーバーに接続できます。

KSQL_BOOTSTRAP_SERVERS
Kafka クラスターとの初期接続を確立するために使用する host:port のペア。host1:port1,host2:port2,host3:port3… の形式で複数のブートストラップサーバーを使用できます。
KSQL_OPTS
スペース区切りの Java オプションのリスト。
# Run ksqlDB Server.
docker run -d -p 10.0.0.11:8088:8088 \
  -e KSQL_BOOTSTRAP_SERVERS=localhost:9092 \
  -e KSQL_OPTS="-Dksql.service.id=confluent_test_3_ -Dlisteners=http://0.0.0.0:8088/" \
  confluentinc/cp-ksqldb-server:6.2.4

# Connect the ksqlDB CLI to the server.
docker run -it confluentinc/cp-ksqldb-cli http://10.0.0.11:8088
...
Copyright 2017 Confluent Inc.

CLI v6.2.4-SNAPSHOT, Server v6.2.4-SNAPSHOT located at http://10.0.0.11:8088

Having trouble? Type 'help' (case-insensitive) for a rundown of how things work!

ksql>

構成ファイルの提供

構成ファイルを使用して ksqlDB CLI インスタンスをセットアップし、コンテナー内で実行します。

# Assume ksqlDB Server is running.
# Ensure that the configuration file exists.
ls /path/on/host/ksql-cli.properties

docker run -it \
  -v /path/on/host/:/path/in/container  \
  confluentinc/cp-ksqldb-cli:6.2.4 http://10.0.0.11:8088 \
  --config-file /path/in/container/ksql-cli.properties

別のホスト(AWS など)上で動作する ksqlDB サーバーへの接続

コンテナー内で ksqlDB CLI インスタンスを実行し、リモート ksqlDB サーバーホストに接続します。

docker run -it confluentinc/cp-ksqldb-cli:6.2.4 \
  http://ec2-etc.us-etc.compute.amazonaws.com:8080

...
Copyright 2017 Confluent Inc.

CLI v6.2.4-SNAPSHOT, Server v6.2.4-SNAPSHOT located at http://ec2-blah.us-blah.compute.amazonaws.com:8080

Having trouble? Type 'help' (case-insensitive) for a rundown of how things work!

ksql>