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内で実行され、モニタリングと管理のための外部接続は維持される。
主な設定ステップ
- OpenShift CLI ツールのダウンロード - OpenShift クラスタから oc と virtctl の両方のツールをダウンロードします。 これらのツールはクラスタリソースを管理し、VMとやり取りするために必要である。
- 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インスタンスごとに個別に作成する必要があります。 - ロードバランサーのアイドルタイムアウトとアクセスサーバーのキープアライブタイムアウトを設定する - 信頼性の高い継続的な通信を保証するために、ロードバランサーのアイドルタイムアウトは、CDCで使用されるキープアライブ設定に関連して適切に設定する必要があります。 CDCのレプリケーションには3つの主要な通信タイプがある:
- CDCソースエンジンとターゲットエンジン間の通信
ソースエンジンとターゲットエンジンが同じVM上で動作している場合でも、その通信は外部ネットワークを経由することがある。 デフォルトでは、各インスタンスは Comms.INI ファイルをインスタンス・コンフィギュレーション・ディレクトリに作成します。 CDCエンジン間のレプリケーションを中断しないようにするには、ロードバランサーのアイドルタイムアウトを20秒以上に設定する必要があります。
- ASとCDCのソースエンジンおよびターゲットエンジン間の通信ASはデフォルトでキープアライブタイムアウトを設定しない。 アイドル切断を避けるには、ASのインストール・ディレクトリに Comms.INI ファイルを作成する:
[SETTING] KEEP_ALIVE_TIMEOUT=20重要: Linux では、ファイル名の大文字と小文字は区別されます。 Comms.INI.この設定では、ロードバランサーのアイドルタイムアウトがASのキープアライブタイムアウトより大きい限り、ASとCDCエンジン間の接続はアクティブのままです。
- MCからCDCソースエンジンおよびターゲットエンジンへの通信(ユーザーアクションによってトリガーされる)
MCによって開始された接続は、キープアライブ・メカニズムを実装していない。 その結果、ロードバランサーのアイドルタイムアウト( OpenShift クラスタ内で設定される)は、非アクティブな時間帯にこれらの接続がオープンされたままになる時間を決定します。 例えば、600秒のアイドルタイムアウトでは、MCは10分間アクティビティがないとデータストアから切断する。 これはCDCエンジン間の進行中のレプリケーションには影響せず、MCのユーザーエクスペリエンスにのみ影響します。 MCからいつでも再接続できる。
データストア接続を手動でアクティブに保つには、ソースとターゲットの両方からイベントを取得します。 サブスクリプションをクリックするだけでは十分ではありません。
AWS 環境では、このアノテーションをサービスに追加することで、アイドルタイムアウトを設定できます:annotations: service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: "600"注: この設定は AWS に固有のものです。 他のクラウドプロバイダーでは設定が異なる場合がある。
- CDCソースエンジンとターゲットエンジン間の通信