Ansible Playbook を使用した Confluent Platform の詳細構成¶
このセクションでは、Ansible を使用して Confluent Platform のさまざまなデプロイ構成を行う方法について説明します。
GCS バケットを使用した階層型ストレージの構成¶
Ansible Playbooks for Confluent Platform の カスタムプロパティ と ファイルコピー の機能を使用するには、 階層型ストレージ を構成します。
Ansible コントロールノードにある GCP 認証情報の JSON ファイルを入手します。
hosts.yml
ファイルに以下の変数を設定します。all: vars: kafka_broker_copy_files: - source_path: /tmp/gcloud-a5f9c87c81ae.json destination_path: /etc/security/google/creds.json kafka_broker_custom_properties: confluent.tier.feature: "true" confluent.tier.enable: "true" confluent.tier.backend: GCS confluent.tier.gcs.bucket: bucket-name confluent.tier.gcs.region: us-west2 confluent.tier.gcs.cred.file.path: /etc/security/google/creds.json
認証情報ファイルへのパスは、カスタムプロパティ
confluent.tier.gcs.cred.file.path
の値と一致する必要があります。
S3 バケットを使用した階層型ストレージの構成¶
Ansible Playbooks for Confluent Platform の カスタムプロパティ と ファイルコピー の機能を使用するには、 階層型ストレージ を構成します。
Ansible コントロールノードにある AWS 認証情報のファイルを入手します。
hosts.yml
ファイルに以下の変数を設定します。all: vars: kafka_broker_copy_files: - source_path: /tmp/credentials destination_path: /etc/security/aws/credentials kafka_broker_custom_properties: confluent.tier.feature: "true" confluent.tier.enable: "true" confluent.tier.backend: S3 confluent.tier.s3.bucket: bucket-name confluent.tier.s3.region: us-west-2 confluent.tier.s3.cred.file.path: /etc/security/aws/credentials
認証情報ファイルへのパスは、カスタムプロパティ
confluent.tier.s3.cred.file.path
の値と一致する必要があります。
Confluent Replicator のデプロイ¶
6.1.0 リリース以降、Ansible Playbooks for Confluent Platform では Confluent Replicator のデプロイがサポートされます。
Ansible を使用すると、以下のセキュリティメカニズムを使用して Replicator をデプロイできます。
- SASL PLAIN
- SASL SCRAM
- Kerberos
- mTLS
- プレーンテキスト(認証なし、暗号化なし)
一般的なデプロイモデルでは、送信先クラスターと送信先クラスターの両方をデプロイした後に Replicator をデプロイします。
他のクラスターデプロイ関連の構成を除いて、Replicator のデプロイ専用のインベントリファイルを作成するようお勧めします。このセクションでは、サンプルファイル replicator-hosts.yml
を使用します。
この例では、送信元クラスターと送信先クラスターの 2 つのクラスターを使用します。
Replicator では、2 つのクラスターに分けて以下の 4 つのクライアント接続を使用します。
- クラスターに対する Replicator の構成接続。トピックに構成情報を保管するために使用されます。「Replicator の構成接続の構成」を参照してください。
- Replicator のモニタリング接続。メトリクスクラスターにメトリクスを生成するために使用されます。メトリクスクラスターは多くの場合、構成情報を格納するためのクラスターと同じものになります。「モニタリング接続の構成」を参照してください。
- Replicator のコンシューマー接続。送信元クラスターからのデータを消費するために使用されます。「コンシューマー接続の構成」を参照してください。
- Replicator のプロデューサー接続。送信先クラスターにデータを生成するために使用されます。「プロデューサー接続の構成」を参照してください。
以下のセクションで、Replicator インベントリファイルに必要な構成プロパティを紹介します。ここでは以下の使用例を示します。
- SASL PLAIN(送信元クラスターで TLS を有効化)
- Kerberos(送信先クラスターで TLS を有効化)
Replicator を構成した後、以下のコマンドを使用して Replicator をデプロイします。このコマンドでは、サンプルのインベントリファイル replicator-hosts.yml
を使用しています。
ansible-playbook -i replicator-hosts.yml all.yml
Replicator の構成接続の構成¶
デプロイ先として
kafka_connect_replicator
グループとhosts
を定義します。以下に例を示します。
kafka_connect_replicator: hosts: ip-172-31-34-246.us-east-2.compute.internal:
Replicator 構成クラスター用のリスナーを定義します。
以下は、Kerberos 認証と TLS が有効になっているリスナーの例です。
kafka_connect_replicator_listener: ssl_enabled: true ssl_mutual_auth_enabled: false sasl_protocol: kerberos
Replicator 接続の基本構成を定義します。
kafka_connect_replicator_white_list: <a comma-separated list of topics to be replicated> kafka_connect_replicator_bootstrap_servers: <configuration cluster hostname:port>
Replicator 接続のセキュリティ構成を定義します。
kafka_connect_replicator_kerberos_principal: <Kafka principal primary> kafka_connect_replicator_kerberos_keytab_path: <path to your keytab> kafka_connect_replicator_ssl_ca_cert_path: <path to your CA certificate> kafka_connect_replicator_ssl_cert_path: <path to your signed certificate> kafka_connect_replicator_ssl_key_path: <path to your SSL key> kafka_connect_replicator_ssl_key_password: <SSL key password>
RBAC が有効になっているデプロイの場合、追加のセキュリティ構成を定義します。
Kafka のクラスター id(
kafka_connect_replicator_kafka_cluster_id
)またはクラスター名(kafka_connect_replicator_kafka_cluster_name
)を指定します。kakfa_connect_replicator_rbac_enabled: true kafka_connect_replicator_erp_tls_enabled: <true if Confluent REST API has TLS enabled> kafka_connect_replicator_erp_host: <Confluent Rest API host URL> kafka_connect_replicator_erp_admin_user: <mds or your Kafka super user> kafka_connect_replicator_erp_admin_password: <password> kafka_connect_replicator_kafka_cluster_id: <destination cluster id> kafka_connect_replicator_kafka_cluster_name: <destination cluster name> kafka_connect_replicator_erp_pem_file: <path to oauth pem file>
コンシューマー接続の構成¶
送信元クラスター上のコンシューマーリスナーの構成を定義します。
以下は、TLS と SASL PLAIN を有効にする例です。
kafka_connect_replicator_consumer_listener: ssl_enabled: true ssl_mutual_auth_enabled: false sasl_protocol: plain
コンシューマークライアント接続の基本構成を定義します。
kafka_connect_replicator_consumer_bootstrap_servers: <source cluster hostname:port>
コンシューマークライアント接続のセキュリティ構成を定義します。
kafka_connect_replicator_consumer_ssl_ca_cert_path: <path to your CA certificate> kafka_connect_replicator_consumer_ssl_cert_path: <path to your signed certificate> kafka_connect_replicator_consumer_ssl_key_path: <path to your SSL key> kafka_connect_replicator_consumer_ssl_key_password: <SSL key password>
クライアント接続ごとにカスタムプロパティを定義します。
kafka_connect_replicator_consumer_custom_properties: <custom property: value>
RBAC が有効になっているデプロイの場合、追加のクライアントカスタムプロパティを定義します。
Kafka のクラスター id(
kafka_connect_replicator_consumer_kafka_cluster_id
)またはクラスター名(kafka_connect_replicator_consumer_kafka_cluster_name
)を指定します。kafka_connect_replicator_consumer_erp_tls_enabled: <true if Confluent REST API has TLS enabled> kafka_connect_replicator_consumer_erp_host: <Confluent Rest API host URL> kafka_connect_replicator_consumer_erp_admin_user: <mds or your Kafka super user> kafka_connect_replicator_consumer_erp_admin_password: <password> kafka_connect_replicator_consumer_kafka_cluster_id: <source cluster id> kafka_connect_replicator_consumer_kafka_cluster_name: <source cluster name> kafka_connect_replicator_consumer_erp_pem_file: <path to oauth pem file>
プロデューサー接続の構成¶
送信先クラスターへのプロデューサー接続のリスナー構成を定義します。
以下は、認証用に TLS と Kerberos を有効にする例です。
kafka_connect_replicator_producer_listener: ssl_enabled: true ssl_mutual_auth_enabled: false sasl_protocol: kerberos
基本プロデューサー構成を定義します。
kafka_connect_replicator_producer_bootstrap_servers: <destination cluster hostname:port>
プロデューサー接続のセキュリティ構成を定義します。
kafka_connect_replicator_producer_kerberos_principal: <kafka principal primary> kafka_connect_replicator_producer_kerberos_keytab_path: <path to your keytab> kafka_connect_replicator_producer_ssl_ca_cert_path: <path to your CA cert> kafka_connect_replicator_producer_ssl_cert_path: <path to your signed cert> kafka_connect_replicator_producer_ssl_key_path: <path to your ssl key> kafka_connect_replicator_producer_ssl_key_password: <ssl key password>
クライアント接続ごとにカスタムプロパティを定義します。
kafka_connect_replicator_producer_custom_properties: <custom property:value>
RBAC が有効になっているデプロイの場合、追加のプロデューサーカスタムプロパティを定義します。
kafka_connect_replicator_producer
構成はデフォルトでkafka_connect_replicator
構成に一致します。以下は、構成を保管しているクラスターとは別のクラスターに対して生成する場合のみ必要です。Kafka のクラスター id(
kafka_connect_replicator_producer_kafka_cluster_id
)またはクラスター名(kafka_connect_replicator_producer_kafka_cluster_name
)を指定します。kakfa_connect_replicator_producer_rbac_enabled: true kafka_connect_replicator_producer_erp_tls_enabled: <true if Confluent REST API has TLS enabled> kafka_connect_replicator_producer_erp_host: <Confluent Rest API host URL> kafka_connect_replicator_producer_erp_admin_user: <mds or your Kafka super user> kafka_connect_replicator_producer_erp_admin_password: <password> kafka_connect_replicator_producer_kafka_cluster_id: <destination cluster id> kafka_connect_replicator_producer_kafka_cluster_name: <destination cluster name> kafka_connect_replicator_producer_erp_pem_file: <path to oauth pem file>
モニタリング接続の構成¶
モニタリングインターセプターのリスナー構成を定義します。
kafka_connect_replicator_monitoring_interceptor_listener: ssl_enabled: true ssl_mutual_auth_enabled: false sasl_protocol: kerberos
基本モニタリング構成を定義します。
kafka_connect_replicator_monitoring_interceptor_bootstrap_servers: <monitoring cluster hostname:port>
モニタリング接続のセキュリティ構成を定義します。
kafka_connect_replicator_monitoring_interceptor_kerberos_principal: <kafka principal primary> kafka_connect_replicator_monitoring_interceptor_kerberos_keytab_path: <path to your keytab> kafka_connect_replicator_monitoring_interceptor_ssl_ca_cert_path: <path to your CA cert> kafka_connect_replicator_monitoring_interceptor_ssl_cert_path: <path to your signed cert> kafka_connect_replicator_monitoring_interceptor_ssl_key_path: <path to your ssl key> kafka_connect_replicator_monitoring_interceptor_ssl_key_password: <ssl key password>
RBAC が有効になっているデプロイの場合、モニタリング接続用の追加のカスタムプロパティを定義します。
kafka_connect_replicator_monitoring_interceptor
構成はデフォルトでkafka_connect_replicator
構成に一致します。以下は、構成を保管しているクラスターとは別のクラスターに対してメトリクスを生成する場合のみ必要です。Kafka のクラスター id(
kafka_connect_replicator_monitoring_interceptor_kafka_cluster_id
)またはクラスター名(kafka_connect_replicator_monitoring_interceptor_kafka_cluster_name
)を指定します。kakfa_connect_replicator_monitoring_interceptor_rbac_enabled: true kafka_connect_replicator_monitoring_interceptor_erp_tls_enabled: <true if Confluent REST API has TLS enabled> kafka_connect_replicator_monitoring_interceptor_erp_host: <Confluent REST API host URL> kafka_connect_replicator_monitoring_interceptor_erp_admin_user: <mds or your Kafka super user> kafka_connect_replicator_monitoring_interceptor_erp_admin_password: password kafka_connect_replicator_monitoring_interceptor_kafka_cluster_id: <destination cluster id> kafka_connect_replicator_monitoring_interceptor_kafka_cluster_name: <destination cluster name> kafka_connect_replicator_monitoring_interceptor_erp_pem_file: <path to oauth pem file>
複数リージョンへの Confluent Platform のデプロイ¶
マルチリージョンクラスター を構成するには、インベントリファイル hosts.yml
に次のプロパティを設定します。
kafka_broker
グループでreplica.selector.class
を設定します。- 各 Kafka ブローカーホストで別々の
broker.rack
を設定します。
以下に例を示します。
kafka_broker:
vars:
kafka_broker_custom_properties:
replica.selector.class: org.apache.kafka.common.replica.RackAwareReplicaSelector
hosts:
ip-192-24-10-207.us-west.compute.internal:
broker_id: 1
kafka_broker_custom_properties:
broker.rack: us-west-2a
ip-192-24-5-30.us-west.compute.internal:
broker_id: 2
kafka_broker_custom_properties:
broker.rack: us-west-2b
ip-192-24-10-0.us-west.compute.internal:
broker_id: 3
kafka_broker_custom_properties:
broker.rack: us-west-2a
kafka_broker
グループ内に kafka_broker_custom_properties
を直接適用することもできます。
ksqlDB ログストリーミングの構成¶
ksqlDB ログストリーム を構成するには、インベントリファイル hosts.yml
で次のプロパティを設定します。
RBAC を有効にしない場合は、
ksql_log_streaming_enabled
をtrue
に設定します。all: ksql_log_streaming_enabled: true
RBAC と Kerberos を有効にした場合は、
ksql_log_streaming_enabled
をtrue
に設定します。さらに、内部リスナーに接続するために、キータブの場所ksql_kerberos_keytab_path
とキータブプリンシパルksql_kerberos_principal
を指定します。all: ksql_log_streaming_enabled: true ksql: hosts: ip-192-24-34-224.us-west.compute.internal: ksql_kerberos_keytab_path: /tmp/keytabs/ksql-ip-192-24-34-224.us-west.compute.internal.keytab ksql_kerberos_principal: ksql/ip-192-24-34-224.us-west.compute.internal@REALM.EXAMPLE.COM
RBAC を有効にした場合は、クライアント接続を認証するために、キータブプリンシパルを LDAP サーバーにも追加する必要もあります。
RBAC と MTLS を有効にして ksqlDB ログストリーミングを構成するには、クライアント接続を認証するために、特別な書式を適用せず証明書の CN を LDAP サーバーに追加します。たとえば、LDAP ユーザー名は
cn=ksql1
ではなくksql1
として指定する必要があります。
複数の ksqlDB クラスターの構成¶
複数の ksqlDB クラスターを構成するには、各クラスター用に新しいグループを作成して、ksqlDB グループの子グループにします。
Ansible グループの名前を ksql
にすることはできません。
Control Center の各クラスターの名前は、このグループ名により決まります。
ksqlDB クラスターごとに ksql_service_id
プロパティに一意の値を設定する必要があります。規定により、サービス ID の末尾はアンダースコアにします。
以下に例を示します。
ksql:
children:
ksql1:
ksql2:
ksql1:
vars:
ksql_service_id: ksql1_
hosts:
ip-172-31-34-15.us-east-2.compute.internal:
ip-172-31-37-16.us-east-2.compute.internal:
ksql2:
vars:
ksql_service_id: ksql2_
hosts:
ip-172-31-34-17.us-east-2.compute.internal:
ip-172-31-37-18.us-east-2.compute.internal:
複数の ksqlDB クラスターに Control Center を構成するには、ksqlDB のすべての子グループのリストを ksql_cluster_ansible_group_names
プロパティに設定します。
以下に例を示します。
control_center:
vars:
ksql_cluster_ansible_group_names:
- ksql1
- ksql2
hosts:
ip-172-31-37-15.us-east-2.compute.internal:
複数の Connect クラスターの構成¶
複数の Connect クラスターを構成するには、各クラスター用に新しいグループを作成して、kafka_connect
グループの子グループにします。
Ansible グループの名前を kafka_connect
にすることはできません。
Connect クラスターごとに kafka_connect_group_id
プロパティに一意の値を設定する必要があります。kafka_connect_group_id
の値は、Control Center 内の Connect クラスターの名前になります。
以下に例を示します。
kafka_connect:
children:
syslog:
elastic:
syslog:
vars:
kafka_connect_group_id: connect_syslog
hosts:
ip-172-31-34-246.us-east-2.compute.internal:
elastic:
vars:
kafka_connect_group_id: connect-elastic
hosts:
ip-172-31-34-247.us-east-2.compute.internal:
複数の Connect クラスターに Control Center を構成するには、kafka_connect
のすべての子グループのリストを kafka_connect_cluster_ansible_group_names
プロパティに設定します。
以下に例を示します。
control_center:
vars:
kafka_connect_cluster_ansible_group_names:
- syslog
- elastic
hosts:
ip-172-31-37-15.us-east-2.compute.internal:
1 台のホストでの複数の Connect サービスの構成¶
同じホスト上で複数の Connect サービスを構成するには、各 Connect インスタンスに一意の名前を付け、ホスト名のエイリアスを有効にします。
以下に例を示します。
kafka_connect:
vars:
hostname_aliasing_enabled: true
hosts:
connect01:
ansible_host: ec2-34-217-174-252.us-west-2.compute.amazonaws.com
hostname: ip-172-31-40-189.us-west-2.compute.internal
connect02:
ansible_host: ec2-34-217-174-252.us-west-2.compute.amazonaws.com
hostname: ip-172-31-40-189.us-west-2.compute.internal
ホスト名のエイリアスが有効になっている場合、ホストの構成ファイルで使用されるホスト名は、この順序を優先順位として以下の変数に設定されます。
hostname
ansible_host
inventory_hostname
上の例では、2 つの Connect サービスが同じサーバーに配置され、これらのホスト名エイリアスは ip-172-31-40-189.us-west-2.compute.internal
になります。
さらに、各 Connect サービスに独自の構成ファイルとポートが割り当てられるように変数を構成する必要があります。
前の例の connect02
インスタンスでは、以下の変数を設定します。
connect02:
kafka_connect_service_name: confluent-kafka-connect02
kafka_connect_config_filename: connect-distributed02.properties
kafka_connect_rest_port: 8084
# If JMX Exporter is enabled:
kafka_connect_jmxexporter_port: 8078
# If Jolokia is enabled:
kafka_connect_jolokia_port: 7774
kafka_connect_jolokia_config: /etc/kafka/kafka_connect_jolokia02.properties
Ansible Playbooks for Confluent Platform のプロビジョニングでは、connect01
と同じ場所に配置された 2 番目の Connect インスタンスに対して confluent-kafka-connect02
と呼ばれる``systemd`` サービスがセットアップされます。
For an example that configures two Connect clusters on the same host, see the sample inventory.
Confluent Cloud への接続¶
Ansible Playbooks for Confluent Platform を使用して、オンプレミスで Confluent Platform を構成およびデプロイし、Confluent Cloud で実行されている Kafka および Schema Registry に接続できます。
Confluent Cloud Kafka への接続¶
Confluent Platform コンポーネントから Confluent Cloud Kafka への接続を可能にするには、ブートストラップサーバー、API キー、およびシークレットを取得し、hosts.yml
ファイルに以下の変数を設定します。
ccloud_kafka_enabled
ccloud_kafka_bootstrap_servers
ccloud_kafka_key
ccloud_kafka_secret
以下に例を示します。
all:
vars:
ccloud_kafka_enabled: true
ccloud_kafka_bootstrap_servers: pkc-xxxxx.europe-west1.gcp.confluent.cloud:9092,pkc-yyyy.europe-west1.gcp.confluent.cloud:9092,pkc-zzzz.europe-west1.gcp.confluent.cloud:9092
ccloud_kafka_key: YYYYYYYYYYYYYY
ccloud_kafka_secret: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
注釈
インベントリファイルで zookeeper
または kafka_broker
グループを指定することはできません。
Confluent Cloud Schema Registry への接続¶
コンポーネントから Confluent Cloud Schema Registry への接続を可能にするには、Schema Registry の URL、API キー、およびシークレットを取得し、hosts.yml
ファイルに以下の変数を設定します。
ccloud_schema_registry_enabled
ccloud_schema_registry_url
ccloud_schema_registry_key
ccloud_schema_registry_secret
以下に例を示します。
all:
vars:
ccloud_schema_registry_enabled: true
ccloud_schema_registry_url: https://psrc-zzzzz.europe-west3.gcp.confluent.cloud
ccloud_schema_registry_key: AAAAAAAAAAAAAAAA
ccloud_schema_registry_secret: bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
Confluent Cloud Kafka と Schema Registry の構成については、次の場所にあるサンプルインベントリファイルを参照してください。
https://github.com/confluentinc/cp-ansible/blob/7.0.1-post/sample_inventories/ccloud.yml