相互スタンバイ構成を実際に構築してみた

    以前のブログで相互スタンバイ構成を紹介しましたが、今回は具体的にどのように構成するのか紹介していきます!

    限られた資源を効率的に運用する相互スタンバイ構成とは?半導体不足を乗り切ろう!


    よくLoad Blanserを使用したアクティブ/アクティブ構成を勘違いをされるケースもあります。LoadBlanserクラスターは複数のノードで同一サービスを稼働させてload balancing(負荷分散)を行いますが、LifeKeeperHigh Availability(HA) クラスターとなりますので、同じサービスを両方のノードでは起動しません。アクティブノード以外のノードはスタンバイノードとして待機します。

    ただし稼働せずに待機したままではハードウェアリソースが勿体ないため、効率的な運用からアクティブ/アクティブ構成(相互スタンバイ構成)を行う構成があります。今回の記事では相互スタンバイの具体的な構築方法を含めて紹介したいと思います。

    相互スタンバイ構成の構築手順

    相互スタンバイ構成の具体的な構築の流れについて説明します。以下のような流れになります。

    1.アクティブ/スタンバイのリソース追加(Oracleリソースの追加)
       1)Oracleリソースの追加
    2.Oracleリソースでの待機ノードをアクティブとしたリソースの追加(Apacheリソースの追加)
       1)IPリソースの追加
       2)EC2リソースの追加
       3)Apacheリソースの追加

    上記の手順で構成すると、相互スタンバイ構成を完成させることができます。GUIでの構成図もありますので視覚的に体感してみていただければと考えています。

    1.アクティブ/スタンバイのリソース追加(Oracleリソースの追加)

     1)Oracleリソースの追加

    まず最初に、一般的な構成であるアクティブ/スタンバイ構成を構築します。今回の記事では以下のLifeKeeper GUI画像にあるようにAWS上でOracleを導入するアクティブ/スタンバイ構成を採用しました。構築手順については、こちらのフォームの「【Linux】Amazon EC2環境でのHAクラスター構築 Step by Step ガイド【ルートテーブルシナリオ編】」を参照してください。

    上記構成はip-10.0.2.4.ap-northheast-3.compute.internal(ip-10.0.2.4)がアクティブノードです。緑の枠がアクティブです。ip-10.0.4.4.ap-northheast-3.compute.internal(ip-10.0.4.4)がスタンバイノードとなります。青の枠がスタンバイノードです。

    Oracle DB/Oracle Listenerリソース

    Oracle SID

    orcl

    データディレクトリ

    /u01

    リスナー名

    LSNR.LISTENER

    仮想IPアドレス

    10.0.1.10

    アクティブノード

    ip-10.0.2.4.ap-northheast-3.cmpute.internal

    スタンバイノード

    ip-10.0.4.4.ap-northheast-3.cmpute.internal

    なおOS, LifeKeeperバージョンは以下です。

    OS

    RHEL7.9

    LifeKeeper

    9.6.0

    2.Oracleリソースでの待機ノードをアクティブとしたリソースの追加(Apacheリソースの追加)

    相互スタンバイ構成は、上記のスタンバイノードに対して別のサービスをアクティブとして追加した構成です。今回はApache リソースツリーをip-10.0.4.4がアクティブ、ip-10.0.2.4がスタンバイとなるよう追加します。

    今回は以下のようにApache(httpd)を構成して保護してゆきます。Apacheの設定は仮想IPアドレスと紐づける最低限の設定変更のみ行っています。

    Apache(httpd)リソース

    httpd バージョン

    2.4.6

    ServerRoot

    /etc/httpd

    DocumentRoot

    /var/www/html

    Listen

    10.0.1.20:80

    アクティブノード

    ip-10.0.2.4.ap-northheast-3.cmpute.internal

    スタンバイノード

    ip-10.0.4.4.ap-northheast-3.cmpute.internal

    *ApacheのDocumentRootを共有ディスクに設定することで共有ディスクの情報を共有することも可能ですが、今回はDocumentRootのデータがリアルタイムで更新されない前提とし、それぞれのローカルディスクにDocumentRootのデータを配置する構成(ファイルシステムリソースのない構成)にします。

    紹介する手順でリソースを追加すると以下のようになります。

    では、具体的なリソースの作成手順を含めて説明します。

    1)IPリソースの追加

    最初に仮想IPアドレスを”10.1.0.20” を、アクティブノード “ip-10.0.4.4” スタンバイノード “ip-10.0.2.4” として追加します。

    AWS環境での利用となりますので、利用するAWS構成に合わせて設定を行ってください。今回の構成は、AWSのルートテーブルに仮想IPアドレスの設定を追加してから行ってください。

    1.現在はOracle リソースツリーのアクティブ/スタンバイ構成です。こちらにApacheリソースをOracleリソースツリーのスタンバイノード側をアクティブとして追加します。赤枠線のボタンをクリックしてリソース作成用のウィザード画面を開きます。

     

    2.Recovery Kitを選択します。最初にIPリソースを作成するため ”IP” を選択します。

     

    3.Switchback Typeを選択します。初期値の”inteligent”を選択します。

     

    4.アクティブノードとするServerを選択します。上記で記載した通り”ip-10.0.4.4”を選択します。

     

    5.保護する仮想IPアドレスを入力します。Oracle が 10.1.0.10 なのですが、Apache(httpd server)は10.1.0.20で接続できるよう仮想IPアドレスを作成します。

     

    6.仮想IPアドレスを紐づけるネットワークインターフェースを選択します。

     

    7.リソースタグ名を設定します。初期値としてip-<仮想IPアドレス>が入力されますのでこのまま設定を進めます。

     

    8.アクティブノードでIPリソースの作成が開始されます。以下のようにエラーが出力しなければ作成成功です。

     

    9.スタンバイノード(ip-10.0.2.4)に拡張を行います。拡張を行うことで、作成したリソースの切り替え先であるスタンバイノードとすることができます。設定はリソースの作成時の値を使用しますので、”Accept default”を押して進めます。

     

    10.拡張に成功した場合は以下のメッセージが出力します。スタンバイノードが1台(2台構成のクラスターの場合)はこれ以上拡張先はないため、Finishを押して終了します。その後”Done”でウィザード画面を閉じます。

     

    11.IPリソースが追加されました。Oracleリソースツリーが稼働していないip-10.0.4.4ノードで仮想IPアドレスがアクティブとなっています。

    2)EC2リソースの追加

    1.この検証環境はAWS環境なので、EC2リソースを作成してゆきます。Amazon EC2を選択して、Switchback type,アクティブノードを選択してゆきます。

     

    2.”RouteTable”を選択します。

     

    3.紐づくIPリソース、リソースタグ名を選択してリソース作成を行います。

     

    4.EC2リソースの作成が成功した場合は以下のように表示されます。

     

    5.アクティブノードでのリソース作成に成功したらスタンバイノードへの拡張を行います。先に作成したIPリソース同様に”ip-10.0.2.4”がTarget Serverとして選択されていることを確認して”Accept default” を押します。

     

    6.EC2リソースの拡張が成功すると以下のメッセージが出力されます。IPリソース同様にこれ以上拡張するノードは無いため、Fnishを押して終了し、Doneでウィザード画面を閉じます。

     

    7.IPリソースと紐づくEC2リソースが作成されます。これでAWS環境での仮想IPアドレスの切り替えが可能となります。

    3)Apacheリソースの作成

    作成したIPリソースを使用してサービス保護を行うApache (httpd)をリソースとして保護します。事前にApache RKを各ノードにインストールして、ライセンスの追加を行っておいてください。

    1.今回は各ノードにディストリビューション標準のhttpdパッケージをインストールして保護します。

    # yum install httpd

    2.インストールしたhttpdを保護する場合は、設定ファイル/etc/httpd/conf/httpd.confの”Listen”パラメータの値に対して以下のように”仮想IPアドレス:80”を設定します。

    /etc/httpd/conf/httpd.conf

    Listen 10.1.0.20:80

    各ノードで共通の設定ファイルを使用する必要がありますので、別ノードでも同じ設定を行ってください。

    3.Apache リソースの作成を開始します。赤枠線のボタンをクリックしてリソース作成用のウィザード画面を開きます。

     

    4.Recovery kit として“Apache Web Server” を選択します。ウィザード画面を遷移させて、Switchback type,アクティブノードとなるServerを選択します。

     

    5.httpd Server の設定情報を選択します。以下ではhttpdの実行プログラムのパスが自動的に選択されます。

     

    6.その次の画面ではhttpdconf ファイル内で設定されているServerRootパラメータを入力します。

     

    7.タグ名を入力してリソースの作成を開始します。

     

    8.httpdリソースの作成に成功した場合、以下のように表示されます。

    9.httpd リソースをスタンバイノードに拡張します。アクティブノードと同じ設定を進めるため、”Accept default”を選択します。

     

    10.拡張に成功した場合は以下のように出力します。これ以上拡張先のノードは無いため、Finishを選択して、繊維画面でDoneを押してウィザード画面を閉じます。

     

    11.Apacheリソースツリーが完成します。

    上記でアクティブ/アクティブ構成が完了です。
    ip-10.0.2.4 ではOracleが稼働して、ip-10.0.4.4ではApache Web Server(httpd)稼働します。
    こうすることで、眠っているスタンバイノードのリソースをApacheがアクティブノードとして使用し、効率的な運用となります。
    ただし障害が発生した時は、相互のノードがスタンバイノードとなります。そのため、フェイルオーバーなどでOracleとApacheが同時に1台のノードで稼働することを想定してServer(ノード)のスペックを検討してください。

    SNSでもご購読できます。