OpenShift 仮想化クラスタ上での CDC の実行

企業がインフラを近代化するにつれ、 IBM® InfoSphere CDC (Change Data Capture)のような従来のデータ・レプリケーション・ツールを仮想化環境に統合することの重要性が増している。 CDCはコンテナ化されていないが、 OpenShift Virtualization(RHOSv)VMにインストールして運用することができ、コンテナ化を必要とせずにクラウドネイティブなプラットフォームとの互換性を実現する。

デプロイメント・アーキテクチャー

一般的な展開では、CDC エンジンは OpenShift Virtualization VM 内で実行され、Access Server (AS) と Management Console (MC) は外部( OpenShift クラスタ外)でホストされます。 このハイブリッド・セットアップにより、CDCはRHOSv内で実行され、モニタリングと管理のための外部接続は維持される。

主な設定ステップ

CDCと外部コンポーネント間の安定した通信を確保するために、以下の手順に従ってください:
  1. OpenShift CLI ツールのダウンロード - OpenShift クラスタから ocvirtctl の両方のツールをダウンロードします。 これらのツールはクラスタリソースを管理し、VMとやり取りするために必要である。
  2. LoadBalancer Service 経由で CDC ポートを公開する - virtctl を使用して Kubernetes LoadBalancer サービスを作成し、VM 内で実行されている CDC インスタンスへの外部アクセスを許可します。 これにより、CDCポートが公開され、ASおよびMCとの通信用に外部ホスト名が生成される。 このコマンドを実行して、 LoadBalancer サービスを作成する:
    ./virtctl expose virtualmachineinstance <vm-name> \
      --name <service-name> \
      --type LoadBalancer \
      --port <external-port> \
      --target-port <cdc-port>
    サービスを確認するには
    ./oc get svc <service-name>
    注: LoadBalancer サービスは、CDCインスタンスごとに個別に作成する必要があります。
  3. ロードバランサーのアイドルタイムアウトとアクセスサーバーのキープアライブタイムアウトを設定する - 信頼性の高い継続的な通信を保証するために、ロードバランサーのアイドルタイムアウトは、CDCで使用されるキープアライブ設定に関連して適切に設定する必要があります。 CDCのレプリケーションには3つの主要な通信タイプがある:
    1. CDCソースエンジンとターゲットエンジン間の通信

      ソースエンジンとターゲットエンジンが同じVM上で動作している場合でも、その通信は外部ネットワークを経由することがある。 デフォルトでは、各インスタンスは Comms.INI ファイルをインスタンス・コンフィギュレーション・ディレクトリに作成します。 CDCエンジン間のレプリケーションを中断しないようにするには、ロードバランサーのアイドルタイムアウトを20秒以上に設定する必要があります。

    2. ASとCDCのソースエンジンおよびターゲットエンジン間の通信
      ASはデフォルトでキープアライブタイムアウトを設定しない。 アイドル切断を避けるには、ASのインストール・ディレクトリに Comms.INI ファイルを作成する:
      [SETTING]
      KEEP_ALIVE_TIMEOUT=20
      重要: Linux では、ファイル名の大文字と小文字は区別されます。 Comms.INI.

      この設定では、ロードバランサーのアイドルタイムアウトがASのキープアライブタイムアウトより大きい限り、ASとCDCエンジン間の接続はアクティブのままです。

    3. MCからCDCソースエンジンおよびターゲットエンジンへの通信(ユーザーアクションによってトリガーされる)

      MCによって開始された接続は、キープアライブ・メカニズムを実装していない。 その結果、ロードバランサーのアイドルタイムアウト( OpenShift クラスタ内で設定される)は、非アクティブな時間帯にこれらの接続がオープンされたままになる時間を決定します。 例えば、600秒のアイドルタイムアウトでは、MCは10分間アクティビティがないとデータストアから切断する。 これはCDCエンジン間の進行中のレプリケーションには影響せず、MCのユーザーエクスペリエンスにのみ影響します。 MCからいつでも再接続できる。

      データストア接続を手動でアクティブに保つには、ソースとターゲットの両方からイベントを取得します。 サブスクリプションをクリックするだけでは十分ではありません。

      AWS 環境では、このアノテーションをサービスに追加することで、アイドルタイムアウトを設定できます:
       annotations:
          service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: "600"
      注: この設定は AWS に固有のものです。 他のクラウドプロバイダーでは設定が異なる場合がある。