Debezium の OpenShift へのインストール

Red Hat Integration 2021.Q3

OpenShift Container Platform での Debezium 1.5 の使用

概要

本ガイドでは、AMQ Streams を使用して OpenShift Container Platform に Red Hat Debezium をインストールする方法を説明します。

前書き

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。これは大規模な取り組みであるため、これらの変更は今後の複数のリリースで段階的に実施されます。詳細は、Red Hat CTO である Chris Wright のメッセージをご覧ください。

第1章 Debezium の概要

Red Hat Debezium は、データベース操作をキャプチャーし、行レベル操作のデータ変更イベントレコードを作成して、Kafka トピックに変更イベントレコードをストリーミングする分散型プラットフォームです。Red Hat Debezium は Apache Karaf に構築され、AMQ Streams とデプロイおよび統合されます。

Debezium によって、データベーステーブルの行レベルの変更がキャプチャーされ、対応する変更イベントが AMQ Streams に渡されます。アプリケーションはこれらの 変更イベントストリーム を読み取りでき、発生順に変更イベントにアクセスできます。

Debezium には、以下を含む複数の用途があります。

  • データレプリケーション。
  • キャッシュの更新およびインデックスの検索。
  • モノリシックアプリケーションの簡素化。
  • データ統合。
  • ストリーミングクエリーの有効化。

Debezium は、以下の共通データベースのコネクター (Kafka Connect をベースとする) を提供します。

Debezium は、Red Hat Debezium のアップストリームコミュニティープロジェクトです。

第2章 Debezium コネクターのインストール

コネクタープラグインで Kafka Connect を拡張して、AMQ Streams 経由で Debezium コネクターをインストールします。AMQ Streams のデプロイ後に、Kafka Connect で Debezium をコネクター設定としてデプロイできます。

2.1. 前提条件

Debezium のインストールには、以下が必要です。

  • OpenShift クラスター。
  • Kafka Connect での AMQ Streams のデプロイメント。
  • 必要なクラスターロールおよび API サービスを設定するための cluster-admin 権限を持つ OpenShift クラスターのユーザー。
注記

Debezium コネクターを実行するには、Java 8 以降が必要です。

Debezium をインストールするには、OpenShift Container Platform コマンドラインインターフェース (CLI) が必要です。OpenShift 4.7 の CLI のインストール方法については、OpenShift Container Platform 4.7 のドキュメント を参照してください。

その他のリソース

  • AMQ Streams のインストール方法については、『Using AMQ Streams on OpenShift』を参照してください。
  • AMQ Streams には、Kafka コンポーネントをデプロイおよび管理する Cluster Operator が含まれています。AMQ Streams Cluster Operator を使用して Kafka コンポーネントをインストールする方法の詳細は、「Deploying Kafka Connect to your cluster」を参照してください。

2.2. Kafka トピック作成に関する推奨事項

Debezium は、データを複数の Kafka トピックに格納します。トピックは管理者が事前に作成するか、Kafka Connect を設定してトピックを自動的に設定する ことができます。

以下のリストで、トピックの作成時に考慮すべき制限および推奨事項を説明します。

MySQL、SQL Server、Db2、および Oracle コネクターのデータベース履歴トピック
  • 無限または非常に長期の保持期間。
  • 3 以上の実稼働環境でのレプリケーション係数。
  • 単一パーティション。
その他のトピック
  • 指定のレコードの 最後の 変更イベントのみを保存するように Kafka ログコンパクション を有効にする場合は、Apache Kafka で以下のトピックプロパティーを設定します。

    • min.compaction.lag.ms
    • delete.retention.ms

      コンシューマーがすべてのイベントを受信し、マーカーを削除するのに十分な時間があるようにするには、前項のプロパティーにシンクコネクターで予想される最大ダウンタイムよりも大きな値を指定します。たとえば、シンクコネクターに更新を適用する際に発生する可能性のあるダウンタイムを考慮します。

  • 実稼働でレプリケートされます。
  • 単一パーティション。

    単一パーティションルールを緩和できますが、アプリケーションはデータベースの異なる行に対して順不同のイベントを処理する必要があります。単一行のイベントは、引き続き完全に順序付けされます。複数のパーティションを使用する場合、Kafka がキーをハッシュ化してパーティションを決定するのがデフォルトの動作になります。その他のパーティションストラテジーでは、SMT (Simple Message Transform、シンプルメッセージ変換) を使用して各レコードにパーティション番号を設定する必要があります。

2.3. AMQ Streams での Debezium のデプロイ

Red Hat OpenShift Container Platform で Debezium コネクターを設定するには、Kafka クラスターを OpenShift にデプロイし、Debezium コネクターをダウンロードおよび設定して、コネクターで Kafka Connect をデプロイします。

前提条件

  • Red Hat AMQ Streams を使用して OpenShift で Apache Kafka および Kafka Connect が設定済みである。AMQ Streams は、Kafka を OpenShift に取り入れる operator およびイメージを提供します。
  • Podman または Docker がインストールされている。

手順

  1. Kafka クラスターをデプロイします。Kafka クラスターがすでにデプロイされている場合は、以下の 3 つのサブステップを省略します。

    1. Installing AMQ Streams and deploying components」の手順に従って、AMQ Streams operator をインストールします。
    2. 希望の設定を選択し、Kafka Cluster をデプロイ します。
    3. Kafka Connect をデプロイします。

    これで、Kafka Connect を使用して OpenShift で実行されている Kafka クラスターを利用できます。

  2. Pod が稼働していることを確認します。Pod 名は AMQ Streams デプロイメントに対応します。

    $ oc get pods
    
    NAME                                               READY STATUS
    <cluster-name>-entity-operator-7b6b9d4c5f-k7b92    3/3   Running
    <cluster-name>-kafka-0                             2/2   Running
    <cluster-name>-zookeeper-0                         2/2   Running
    <cluster-name>-operator-97cd5cf7b-l58bq            1/1   Running

    Pod の実行の他に、Kafka Connect に関連付けられた DeploymentConfig が必要です。

  3. Red Hat Integration のダウンロードサイト に移動します。
  4. データベースの Debezium コネクターアーカイブをダウンロードします。
  5. アーカイブを展開して、コネクタープラグインのディレクトリー構造を作成します。複数のアーカイブをダウンロードおよび展開した場合、構造は以下のようになります。

    $ tree ./my-plugins/
    ./my-plugins/
    ├── debezium-connector-db2
    |   ├── ...
    ├── debezium-connector-mongodb
    |   ├── ...
    ├── debezium-connector-mysql
    │   ├── ...
    ├── debezium-connector-postgres
    │   ├── ...
    └── debezium-connector-sqlserver
        ├── ...
  6. registry.redhat.io/amq7/amq-streams-kafka-28-rhel8:1.8.0 をベースイメージとして使用して、新しい Dockerfile を作成します。

    FROM registry.redhat.io/amq7/amq-streams-kafka-28-rhel8:1.8.0
    USER root:root
    COPY ./my-plugins/ /opt/kafka/plugins/
    USER 1001
  7. コンテナーイメージをビルドします。前の手順で作成した Dockerfile がカレントディレクトリーにある場合は、以下のコマンドのいずれかを入力します。

    podman build -t my-new-container-image:latest .
    docker build -t my-new-container-image:latest .
  8. カスタムイメージをコンテナーレジストリーにプッシュします。以下のいずれかのコマンドを実行します。

    podman push my-new-container-image:latest
    docker push my-new-container-image:latest
  9. 新しいコンテナーイメージを示します。Debezium コネクターを実行するために作成したイメージの名前を指定するため、以下のいずれかのタスクを実行します。

    • KafkaConnect カスタムリソースの spec.image フィールドを編集します。

      このプロパティーを設定すると、Cluster Operator の STRIMZI_DEFAULT_KAFKA_CONNECT_IMAGE 変数はこの値によって上書きされます。以下に例を示します。

      apiVersion: kafka.strimzi.io/v1beta2
      kind: KafkaConnect
      metadata:
        name: my-connect-cluster
        annotations: strimzi.io/use-connector-resources: "true"
      spec:
        #...
        image: my-new-container-image
    • install/cluster-operator/050-Deployment-strimzi-cluster-operator.yaml ファイルの STRIMZI_DEFAULT_KAFKA_CONNECT_IMAGE 変数を編集して新しいコンテナーイメージを示すようにし、Cluster Operator を再インストールします。このファイルを編集する場合は、これを OpenShift クラスターに適用する必要があります。

    Kafka Connect デプロイメントによって、新しいイメージの使用が開始されます。

次のステップ

  • デプロイする各 Debezium コネクターに、コネクターインスタンスを設定する KafkaConnect カスタムリソースを作成し、適用します。これにより、設定されたデータベースに対してコネクターの実行が開始されます。コネクターが起動すると、設定されたデータベースに接続し、挿入、更新、および削除された各行または各ドキュメントの変更イベントレコードを生成します。コネクターのデプロイに関する詳細は、以下を参照してください。

  • KafkaConnect.spec.image property および STRIMZI_DEFAULT_KAFKA_CONNECT_IMAGE 変数の詳細は、『Using AMQ Streams on OpenShift』を参照してください。

付録A サブスクリプションの使用

AMQ Streams は、ソフトウェアサブスクリプションによって提供されます。サブスクリプションを管理するには、Red Hat カスタマーポータルでアカウントにアクセスします。

アカウントへのアクセス

  1. access.redhat.com に移動します。
  2. アカウントがない場合は、作成します。
  3. アカウントにログインします。

サブスクリプションのアクティベート

  1. access.redhat.com に移動します。
  2. サブスクリプション に移動します。
  3. Activate a subscription に移動し、16 桁のアクティベーション番号を入力します。

zip および tar ファイルのダウンロード

zip または tar ファイルにアクセスするには、カスタマーポータルを使用して、ダウンロードする関連ファイルを検索します。RPM パッケージを使用している場合は、この手順は必要ありません。

  1. ブラウザーを開き、access.redhat.com/downloads で Red Hat カスタマーポータルの Product Downloads ページにログインします。
  2. INTEGRATION AND AUTOMATION まで下方向にスクロールします。
  3. Red Hat Integration をクリックして、Red Hat Integration ダウンロードページを表示します。
  4. コンポーネントの Download リンクをクリックします。

改訂日時: 2021-08-22 20:59:43 +1000