Ansible Playbook を使用した Confluent Platform の詳細構成

このセクションでは、Ansible を使用して Confluent Platform のさまざまなデプロイ構成を行う方法について説明します。

GCS バケットを使用した階層型ストレージの構成

Ansible Playbooks for Confluent Platform の カスタムプロパティファイルコピー の機能を使用するには、 階層型ストレージ を構成します。

  1. Ansible コントロールノードにある GCP 認証情報の JSON ファイルを入手します。

  2. 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 の カスタムプロパティファイルコピー の機能を使用するには、 階層型ストレージ を構成します。

  1. Ansible コントロールノードにある AWS 認証情報のファイルを入手します。

  2. 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 の構成接続の構成

  1. デプロイ先として kafka_connect_replicator グループと hosts を定義します。

    以下に例を示します。

    kafka_connect_replicator:
      hosts:
        ip-172-31-34-246.us-east-2.compute.internal:
    
  2. Replicator 構成クラスター用のリスナーを定義します。

    以下は、Kerberos 認証と TLS が有効になっているリスナーの例です。

    kafka_connect_replicator_listener:
      ssl_enabled: true
      ssl_mutual_auth_enabled: false
      sasl_protocol: kerberos
    
  3. Replicator 接続の基本構成を定義します。

    kafka_connect_replicator_white_list: <a comma-separated list of topics to be replicated>
    kafka_connect_replicator_bootstrap_servers: <configuration cluster hostname:port>
    
  4. 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>
    
  5. 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>
    

コンシューマー接続の構成

  1. 送信元クラスター上のコンシューマーリスナーの構成を定義します。

    以下は、TLS と SASL PLAIN を有効にする例です。

    kafka_connect_replicator_consumer_listener:
      ssl_enabled: true
      ssl_mutual_auth_enabled: false
      sasl_protocol: plain
    
  2. コンシューマークライアント接続の基本構成を定義します。

    kafka_connect_replicator_consumer_bootstrap_servers: <source cluster hostname:port>
    
  3. コンシューマークライアント接続のセキュリティ構成を定義します。

    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>
    
  4. クライアント接続ごとにカスタムプロパティを定義します。

    kafka_connect_replicator_consumer_custom_properties:
      <custom property: value>
    
  5. 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>
    

プロデューサー接続の構成

  1. 送信先クラスターへのプロデューサー接続のリスナー構成を定義します。

    以下は、認証用に TLS と Kerberos を有効にする例です。

    kafka_connect_replicator_producer_listener:
      ssl_enabled: true
      ssl_mutual_auth_enabled: false
      sasl_protocol: kerberos
    
  2. 基本プロデューサー構成を定義します。

    kafka_connect_replicator_producer_bootstrap_servers: <destination cluster hostname:port>
    
  3. プロデューサー接続のセキュリティ構成を定義します。

    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>
    
  4. クライアント接続ごとにカスタムプロパティを定義します。

    kafka_connect_replicator_producer_custom_properties:
      <custom property:value>
    
  5. 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>
    

モニタリング接続の構成

  1. モニタリングインターセプターのリスナー構成を定義します。

    kafka_connect_replicator_monitoring_interceptor_listener:
      ssl_enabled: true
      ssl_mutual_auth_enabled: false
      sasl_protocol: kerberos
    
  2. 基本モニタリング構成を定義します。

    kafka_connect_replicator_monitoring_interceptor_bootstrap_servers: <monitoring cluster hostname:port>
    
  3. モニタリング接続のセキュリティ構成を定義します。

    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>
    
  4. 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_enabledtrue に設定します。

    all:
      ksql_log_streaming_enabled: true
    
  • RBAC と Kerberos を有効にした場合は、ksql_log_streaming_enabledtrue に設定します。さらに、内部リスナーに接続するために、キータブの場所 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

ホスト名のエイリアスが有効になっている場合、ホストの構成ファイルで使用されるホスト名は、この順序を優先順位として以下の変数に設定されます。

  1. hostname
  2. ansible_host
  3. 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