Debezium の OpenShift へのインストール


Red Hat Integration 2020.q1

OpenShift Container Platform 上で Debezium 1.0 を使用

概要

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

第1章 Debezium の概要

Red Hat Debezium は、データベースを監視し、変更イベントストリームを作成する分散プラットフォームです。Red Hat Debezium は Apache Karaf に構築され、AMQ Streams とデプロイおよび統合されます。

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

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

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

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

  • MySQL
  • PostgreSQL
  • SQL Server
  • MongoDB
注記

本ガイドでは、Debezium のドキュメントを参照します。Debezium は Debezium のアップストリームコミュニティープロジェクトです。

1.1. 本書の表記慣例

置き換え可能なテキスト

本書では、置き換え可能なテキストは等幅フォントおよびイタリック体で記載されています。

たとえば、以下のコードでは my-namespace を namespace の名前に置き換えます。

sed -i 's/namespace: .*/namespace: my-namespace/' install/cluster-operator/*RoleBinding*.yaml
Copy to Clipboard

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

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

2.1. 前提条件

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

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

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

Debezium をインストールするには、OpenShift Container Platform コマンドラインインターフェース (CLI) が必要です。

関連情報

  • 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 トピックを使用します。トピックは管理者が作成するか、 auto.create.topics.enable ブローカー設定を使用してトピックの自動作成を有効にして Kafka 自体によって作成 される必要があります。

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

データベース履歴トピック(MySQL および SQL Server コネクター用)
  • 無限(または非常に長期の保持)
  • 3 以上の実稼働環境のレプリケーション係数。
  • 単一パーティション。
その他のトピック
  • 必要に応じて、ログコンパクション を有効にする(指定のレコードの 最後 の変更イベントのみを維持する必要がある場合)。

    この場合、Apache Kafka の min.compaction.lag.ms および delete.retention.ms トピックレベルの設定を設定し、コンシューマーがすべてのイベントを受信し、マーカーを削除するのに十分な時間を確保する必要があります。具体的には、これらの値は、シンクコネクターが予想される最大ダウンタイムよりも大きくする必要があります(例: 更新する場合など)。

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

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

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

この手順では、Red Hat OpenShift Container Platform で Debezium のコネクターを設定する方法を説明します。

作業を開始する前に

OpenShift で Apache Kafka および Kafka Connect を設定するには、Red Hat AMQ Streams を使用します。AMQ Streams は、Kafka を OpenShift に取り入れる operator およびイメージを提供します。

ここでは、Kafka Connect S2I(Source to Image)をデプロイおよび使用します。S2I は、アプリケーションのソースコードを入力として受け入れ、アセンブルされたアプリケーションをアウトプットとして実行する新規イメージを生成するイメージをビルドするフレームワークです。

S2I がサポートされる Kafka Connect ビルダーイメージは、registry.redhat.io/amq7/amq-streams-kafka-24:1.4.0 イメージの一部として、Red Hat Container Catalog で提供されます。S2I プロセスは(プラグインおよびコネクターとともに)バイナリーを取得して、/tmp/kafka-plugins/s2i ディレクトリーに保存します。このディレクトリーから、Kafka Connect デプロイメントとともに使用できる新しい Kafka Connect イメージを作成します。改良されたイメージの使用を開始すると、Kafka Connect は /tmp/kafka-plugins/s2i ディレクトリーからサードパーティープラグインをロードします。

注記

Kafka Connect S2I をデプロイおよび使用するのではなく、AMQ Streams Kafka イメージに基づいて新しい Dockerfile を作成し、コネクターを含めることができます。

3章Kafka Connect ベースイメージからのコンテナーイメージの作成を参照してください。

この手順では、以下を行います。

  • Kafka クラスターを OpenShift にデプロイします。
  • Debezium コネクターのダウンロードおよび設定
  • コネクターでの Kafka Connect のデプロイ

Kafka クラスターがすでにデプロイされている場合は、最初の手順を省略できます。

注記

Pod 名は AMQ Streams デプロイメントに対応する必要があります。

手順

  1. Kafka クラスターをデプロイします。

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

    これで、Kafka Connect S2I を使用して OpenShift で Kafka クラスターが稼働しました。

  2. Pod が実行されていることを確認します。

    $ 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
    Copy to Clipboard

    Pod の実行の他に、DeploymentConfig が Connect S2I に関連付けられている必要があります。

  3. リリース 1.0 を選択し、Red Hat Integration のダウンロードサイト からデータベースの Debezium コネクターアーカイブをダウンロード します。
  4. アーカイブを展開して、コネクタープラグインのディレクトリー構造を作成します。

    $ tree ./my-plugin/
    ./my-plugin/
    ├── debezium-connector-mongodb
    |   ├── ...
    ├── debezium-connector-mysql
    │   ├── ...
    ├── debezium-connector-postgres
    │   ├── ...
    └── debezium-connector-sqlserver
        ├── ...
    Copy to Clipboard

    これで Kafka Connect S2I ビルドがトリガーされます。

  5. ビルド設定の名前を確認します。

    $ oc get buildconfigs
    
    NAME                             TYPE     FROM     LATEST
    <cluster-name>-cluster-connect   Source   Binary   2
    Copy to Clipboard
  6. oc start-build コマンドを使用して、Debezium ディレクトリーを使用して Kafka Connect イメージの新しいビルドを開始します。

    oc start-build <cluster-name>-cluster-connect --from-dir ./my-plugin/
    Copy to Clipboard
    注記

    ビルドの名前は、デプロイされた Kafka Connect クラスターと同じになります。

  7. 更新されたデプロイメントが実行していることを確認します。

    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>-cluster-connect-2-jw695            1/1       Running
    <cluster-name>-cluster-connect-2-deploy           0/1       Completed
    strimzi-cluster-operator-97cd5cf7b-l58bq          1/1       Running
    Copy to Clipboard

    または、OpenShift Web コンソールの Pods ビューに移動して、Pod が実行中であることを確認できます。

    OpenShift amq Pod
Kafka Connect の更新

デプロイメントを更新する必要がある場合は、Debezium ディレクトリーの JAR ファイルを修正し、Kafka Connect を再ビルドします。

デプロイメントの確認

ビルドが完了したら、Kafka Connect のデプロイメントによって新しいイメージが自動的に使用されます。

コネクターが起動すると、ソースに接続し、挿入、更新、削除された各行またはドキュメントのイベントを生成します。

Debezium スタートガイド』 の手順に従ってデプロイメントが正しいことを確認します。サービスの起動 には、Kafka クラスターの設定および Kafka Connect の設定手順が記載されています。

特定のコネクターを設定するには、以下を参照してください。

第3章 Kafka Connect ベースイメージからのコンテナーイメージの作成

Kafka Connect S2I を使用する代わりに、Docker を使用して独自の CDC イメージを構築する方法があります。Red Hat Container Catalog の Kafka コンテナーイメージを、追加のコネクタープラグインで独自のカスタムイメージを作成するためのベースイメージとして使用できます。

以下の手順では、カスタムイメージを作成し、/opt/kafka/plugins ディレクトリーに追加する方法を説明します。起動時に、Debezium バージョンの Kafka Connect は /opt/kafka/plugins ディレクトリーに含まれるサードパーティーのコネクタープラグインをロードします。

前提条件

  • AMQ Streams Cluster Operator がデプロイされている必要があります。

手順

  1. registry.redhat.io/amq7/amq-streams-kafka-24:1.4.0 をベースイメージとして使用して、新規の Dockerfile を作成します

    FROM registry.redhat.io/amq7/amq-streams-kafka-24:1.4.0
    USER root:root
    COPY ./my-plugins/ /opt/kafka/plugins/
    USER 1001
    Copy to Clipboard
  2. コンテナーイメージをビルドします。

    docker build -t my-new-container-image:latest
    Copy to Clipboard
  3. カスタムイメージをコンテナーレジストリーにプッシュします。

    docker push my-new-container-image:latest
    Copy to Clipboard
  4. 新しいコンテナーイメージを示します。

    以下のいずれかを行います。

    • KafkaConnect カスタムリソースの KafkaConnect.spec.image プロパティーを編集します。

      このプロパティーが設定されていると、クラスターオペレータの STRIMZI_DEFAULT_KAFKA_CONNECT_IMAGE 変数がオーバーライドされます。

      apiVersion: kafka.strimzi.io/v1beta1
      kind: KafkaConnect
      metadata:
        name: my-connect-cluster
      spec:
        #...
        image: my-new-container-image
      Copy to Clipboard

      または

    • install/cluster-operator/050-Deployment-strimzi-cluster-operator.yaml ファイルの STRIMZI_DEFAULT_KAFKA_CONNECT_IMAGE 変数を編集し、新しいコンテナーイメージを示すようにした後、Cluster Operator を再インストールします。このファイルを編集する場合は、これを OpenShift クラスターに適用する必要があります。

関連情報

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

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

Debezium は、ソフトウェアサブスクリプションから提供されます。サブスクリプションを管理するには、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. コンポーネントの ダウンロード リンクをクリックします。

改訂日時: 2022-07-30 10:01:05 +1000

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

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

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat