1. インターナルロードバランサー(ILB)の導入
Azure では [IP リソースが保護する VIP] を Azure の VNET で認識する事が出来ません。この影響で、通常 LifeKeeper for Linux が想定している [IP リソースが保護する VIP] によるネットワーク通信を行うことが出来ません。その為 LifeKeeper では、以下の様に ILB の導入を行い、[ILB が設定する VIP] をネットワーク通信経路として設定します。
① Oracle Client が Oracle Listener へ接続する為、10.3.1.200(port1521)への接続を ILB 経由で開始します。
② ILB に負荷分散先(backend pool) に 10.3.1.11(稼働系ノード:lk4lnode01)と 10.3.1.12(待機系ノード:lk4lnode02) が 登録されています。ILBは各ノードに対して正常性プローブによる監視を行い、ポートがオープンになっているノードを確認して、受け取ったOracle Listener宛のパケットを転送します。
※正常性プローブに応答するポートは、LifeKeeper for Linux v9.5.1よりサポートさ
れるGen LBを利用してユーザーが指定することが可能です。Gen LBを利用することでサービスを提供しているノードのみヘルスチェックに応答します。
Gen LBで利用するGenericスクリプトおよびスクリプト仕様書については、以下のURLから取得してください
https://lkdkuserportal.sios.jp/hc/ja/articles/900004703743
③ LifeKeeperの仕様上Oracle Listenerリソースは[IPリソースが保護するVIP]を指定する必要があります。その為、受信用にIPリソースを作成します。稼働系のIPリソースがIn-Serviceになっているため、10.3.1.200宛のリクエストを受け取ります。
④ 結果として Oracle Client からの接続要求は稼働系の Oracle Listener(10.3.1.200:port1521)が受け取ります。
アドレス変換
LifeKeeper では、IP リソースの監視処理に外部ホストへの PING を使用しますが、Azure の仕様上、仮想 IP を送信元とする PING 処理は行えません。その為、以下のようにパケットの送信元情報を変更する設定を行うことで、PING 処理を有効にし、外部ホスト間とのネットワークの障害を検出可能にします。
① IP リソースから IP リソースで保護する VIP をソースとして指定した PING を開始します。
② PING の送信元アドレスを、10.3.1.200 (IP リソースで保護する VIP) から10.3.1.11 (Azure のプライベート IP アドレス) に置き換えます。
➂ ソース置き換え後、PING の送信先にパケットを送信します。[Azure のプライベート IP アドレス] に置き換えられる事で、ネットワークが正常であれば応答が返ります。
Quorum / Witness の導入
Azure 環境上では、クラスターの共有ディスクの代替として DataKeeper によるレプリケーションディスクを使用します。DataKeeper を使用したクラスターでは、コミュニケーションパスが全断するようなネットワークの障害が発生した際、その仕組み上スプリットブレイン状態になる可能性があります。これを回避するため、Quorum / Witness 機能による I/O Fencing を設定してください。
LifeKeeper for Linux Quorum Check/Witness Server 機能利用ガイド
https://sios.jp/products/lkdk/product/pdf/lifekeeper_quorum-whitness.pdf
また、以下のテクニカルドキュメンテーションをご参照ください。
https://docs.us.sios.com/spslinux/9.5.2/ja/topic/quorum-witness
このトピックへフィードバック