Windows版Apache、Tomcatのウェブシステムを簡単に冗長化する手順

    こんにちは、サイオステクノロジーのプリセールス担当です。
    いつも当ブログをご覧頂き有難うございます。

    ApacheとTomcat でつくるウェブシステムの構成

    インターネットが普及し始めた頃は、Webサーバーの構築といえば、LAMP(Linux, Apache, MySQL, PHPの頭文字を繋げた造語)といった環境で作成される事が多くありました。これらのソフトウェアで構成しなくても、ある程度のWebサーバーを用意される場合は、ApacheとTomcatに何らかのDBを組み合わせる構成がLinux環境では一般的でした。

    一方でWindows環境では、IIS(Internet Information Services)がWebサーバーとして利用されることも多かったですが、ここ10年ほどはシェアが減ってきています。ハードウェアのリプレイスを機に、Windows環境でもApacheとTomcatでウェブシステムを構築するケースが多くなってきているようです。

    大規模なウェブシステムにはロードバランサーを追加

    これらのWebサーバーですが、大量のアクセスに対応する必要がある場合には、ウェブサーバーの手前にロードバランサー(以下LB)などを、ウェブサーバー(Apache、 Tomcat)の後ろに、データベース層を設ける形で役割を分ける構成も多く取られます。
    近年ではクラウド環境も多くなってきましたので、Webサーバーの冗長化でLBを入れるハードルは低くなってきていますが、物理環境や仮想環境で冗長構成を取る場合は、今もActive / StandbyのHAクラスターソフトを使った構成を選択される場合が多いです

    HAクラスターソフトを使って冗長化する方法

    物理環境や仮想環境におけるWebサーバーの冗長構成ですが、HAクラスターソフトウェアのLifeKeeperを使って簡単に構成することができます。

    このLifeKeeperは、システムの障害を監視し、稼動系に障害が生じた場合に待機系に自動的に切り替えを行うことで、システムダウンタイムの時間を短縮し、ビジネス損失を最小限にするHAクラスターソフトウェアです。
    JP1やSAP、Oracle DBなど、ミッションクリティカルなアプリケーションのシステム障害による影響を最小化します。

    Windows版のLifeKeeperでは、アプリケーションを保護する仕組みを主に3つ持っています。

      1. Application Recovery Kits(ARK)
        以下のアプリケーション/ミドルウェアを冗長化する場合がこれにあたります。LifeKeeperのオプション製品を購入頂き設定いただきます。
            - IIS
            - Microsoft SQL Server
            - PostgreSQL
            - EnterpriseDB
            - FUJITSU Software Enterprise Postgres
            - Oracle
            - JP1/AJS3
            - HULFT
      2. Quick Service Protection機能(以下QSP)
        WindowsのService一覧で応答があるプログラムの場合がこれにあたります。
      3.  Generic ARK(テンプレート)
        上記以外の独自アプリケーションなどに対して、テンプレートにのっとり、お客様が自由に動作を規定したスクリプトを作成します。1,2以外のアプリケーションで、独自アプリケーションなどを冗長化する際に利用頂きます。

     

    本記事では、2の「QSP」を使ったWindows版のApache、TomcatをLifeKeeperに組み込む手順をご紹介します。WindowsのServiceに登録さえすればQSPでLifeKeeperに組み込めます。よって、Serviceの登録方法を中心にご紹介します。

    「スクリプトを書かずに」「GUIからの設定で」行う事ができる点は、はじめてHAクラスター構成を検討されている方にとって、一気に敷居が下がる事になると考えております。

    実際にQSPを使ってスクリプトレスで設定

    それでは実際の設定方法について見ていきましょう
    今回の検証環境構成と利用ソフトウェアの情報は以下です。LifeKeeper for Windows は、Ver.8.9.2以降でQSPを利用頂けますので、それよりも古いバージョンをご利用の方はバージョンアップをご検討ください。

    < LifeKeeper for Windows QSP検証環境 >

    OSWindows Server 2019 DataCenterEdition(評価版)
    HAクラスタソフトProtection Suite for Windows v8.9.2(LifeKeeper + DataKeeper)
    Apache2.4.57
    Tomcat9.0.80

    今回はQSPのご紹介となりますので、LifeKeeperの基本的な構成は終わった状態から手順を紹介したいと思います。おおまかには以下の内容で進めます

      1. Apacheをインストールし、LifeKeeperで設定する
      2. Tomcatをインストールし、LifeKeeperで設定する
      3. LifeKeeperにてApache・Tomcatの起動順などの設定する

    それではApacheからいきましょう。

    手順1 Apacheをインストールし、LifeKeeperで設定する

    Apacheの公式サイトより、2.4.57をダウンロードしインストールします。

    インストール後にapacheを起動します。「httpd.exe」する際に環境によっては、dllが見当たらないというエラーがでる場合があります。

    その際にはエラーメッセージから検索を行い、必要なパッケージをインストールます。検証環境では以下のパッケージが足りませんでしたのでMSサイトに追加ました。

    必要パッケージを入れた所で再度Apacheの起動を実行します。

    すると、次はServerRootの指定がよろしくないので、テスト環境用にServerRootの指定を変更し「httpd -k install」コマンドを実行します。すると、Windows ServiceにApache2.4が登録されます。そこから開始を押下してApacheサービスを起動します。

    起動後にWebブラウザでアクセスし、defaultページが見えればまずはOKです。
    LK01及びLK02の両方のホストでインストール、WindowsServiceの登録までを行います。難易度はそう高くない作業かと思います。

    それでは、いよいよLifeKeeperにApacheを組み込んでみたいと思います。前記した通りではありますが「スクリプトを準備せずGUIのみの操作」でHA化したいと思います。

    画面上の緑に白の十字アイコンからリソースの作成を開始します。

    プライマリサーバーに「LK01」、バックアップサーバーに「LK02」を選択して次へを押下。

    次に保護するアプリケーションのプルダウンから「Genetric Quick Service Protection」を選択し次へを押下します。

    次の画面ではwindows serviceに登録した Apache2.4が表示されますので、選択し次へを押下。

    次にクイックチェック(監視間隔)の指定がでますが、標準値(300秒)で進めます。

    次に起動時間に関するパラメーターの入力がありますが、ここも標準値(0秒)で進めます。

    次にシャットダウンまでの待ち時間を聞かれます、これも標準値(0秒)で進めます。

    次にローカルリカバリーに関する設定が表示されます。この項目も標準設定(ローカルリカバリー有効)ですすめます。

    次はリソースタグの入力ですが、この項目も表示名から変更の必要がありませんので、そのまま「インスタンスの作成」を押下します。

    するとlk01サーバー上でApache(QSP)のリソースが作成されます。

    LK01サーバー上でApache(QSP)が保護対象に入り、この設定をLK02へ流すPreExtend処理もそのまま実行され、準備ができたと表示があります。次へを押下します。

    拡張(LK02に設定を流す)先のタグ名確認が表示されますが、そのまま次へを押下。

    次にリソースの優先度についての表示がでますが、LK01を第一優先、LK02を第二優先
    する為、この設定も表示内容から変更せず「拡張」を押下します。

    拡張作業が終了すると、ApacheがLifeKeeperに登録されます。

    ApacheがLK01でアクティブ、LK02でスタンバイとして構成されました。
    スクリプトを書かずにGUIのウィザードに従う形でLifeKeeperの制御下に置く事ができました。

    手順2 Tomcatをインストールし、LifeKeeperで設定する

    Tomcatの公式ページよりWindows版の9.8.80をダウンロードします。

    インストーラに従いインストールを続けます。環境によってはJAVAの追加インストールを求められる場合もありますので、表示される内容に従い続けて下さい。今回は全てのパッケージをインストールしています。

    それでは、TomcatをLifeKeeperのQSPで利用できるようにWindows Serviceへ登録します。Tomcatの実行ディレクトリへ移動し「 service.bat install 」を実行します。

    この作業が終わると、Windows Serviceに「Apache Tomcat 9.0」が登録されます。
    これでTomcatもLifeKeeper QSPの対象として登録できる準備が整いました。

    それでは、Apacheの時と同様にLifeKeeper QSPに登録していきましょう。
    リソースの追加からプライマリサーバーを「LK01」バックアップサーバーを「LK02」としていして「次へ」を押下。

    保護するアプリケーションで「Generic Quick Service Protection」を選択し「次へ」を押下します。

    表示される内容から「Apache Tomcat9.0 Tomcat9」を選択し「次へ」を押下。

    手順3 LifeKeeperにてApache・Tomcatの起動順などの設定

    この先はApacheの時と同様に「クリックチェック間隔(秒) 300」、「起動間隔(秒) 0」、「シャットダウン間隔(秒) 0」、「ローカルリカバリー 有効」、「リソースタグ名 QSP.Tomcat」と規定値で設定をすすめます。そのまま画面表示に従い設定をするめると、以下のような状態になります。

    このままでは各リソースがバラバラに独立した状態ですので、仮想IPとApacheとTomcat、それにディスクを連携させる紐づけを行います。

    今回のApacheとTomcatは共有ドライブ(Eドライブ)にインストールしていますので、これらの紐づけが無いとリソース切り替えで問題が生じます。
    一旦LK01へ全てのリソースを寄せてから紐づけ作業を行います。

    まずは左側のリソースツリーのQSP.Tomcatの下にDataKeeperボリューム(Vol.E)を紐づけます。QSPリソースにカーソルを合わせて右クリックし、依存関係の作成を押下します。

    次に「依存関係を加えたいサーバーを選択してください」と表示されますので、プライマリサーバーである「LK01」を選択し「次へ」を押下。

    依存関係の追加の画面で子リソースを選択する画面へ遷移します。これは現在のQSPリソースの下に何を紐づけるかの選択になりますので、「Vol E」を選択し「次へ」を押下。

    確認画面で親がQSP、子がVolEの関係で作成される事を確認したら「依存関係の追加」を押下します。

    少しすると、依存関係の追加が successfulとなりますので「完了」を押下。

    するとこのようにQSPリソースにVol Eリソースが紐づきます。

    これと同様の作業を
    ・QSP Apacheリソースの下にQSP Tomcatリソースの依存関係を紐づけ、その後、
    ・192.168.136.200の仮想IPリソースにQSP Apacheを紐づけます。

    完成形は以下です。

    このように紐づけを行う事で仮想IP / Apache / Tomcat /Vol Eが連携して動作を行います。

    スイッチオーバー(手動切り替え)はLK02サーバーの仮想IPリソースを「サービス開始」とすることでリソース全体をLK02サーバーで稼働させることができます。

    LK02サーバー上で全てのサービスが開始されました。

    あとはApacheとTomcatを連携させる設定ですが、その部分は利用者の要件に合わせてApacheとTomcatの設定を実施頂ければと思います。

    この構成にMySQLを追加すれば、簡単なWebシステムをスクリプトをかかなくてもHA構成にできる事となります。

     MySQLをQSPで追加する方法はこちら
     → https://bcblog.sios.jp/qsp-lk4w-release/

    LifeKeeper for WindowsでQSPを利用するためのポイント

    QSPを利用する際の条件は、WindowsのServiceとしてプログラムの管理ができる事です。
    Windows Serverで動く多くのプログラムは、インストールされるとServiceに自動登録される事が多いです。そのため、多くのアプリケーションがスクリプトを書かずに、LifeKeeperでHAクラスターを構成できます。

    インストール後にServiceに出てこないようなものについては、sc.exe createコマンドを利用する事でServiceに登録する事ができます。これにより、Windows Serverで動くほとんどのアプリケーションがQSPの仕組みでLifeKeeperの保護対象リソースとして設定できる事になります。

    非常に汎用性の高いQSPですが、LifeKeeper for WindowsのARK(Application Recovery Kits)のラインナップにあるDB/ミドルウェアはARKをご利用いただく必要があり、QSPでの設定ができません。また、QSPの仕組みはLIfeKeepr最新版の8.9.2以降の利用が必要です。

    LifeKeeper for WindowsのARKラインアップ
        - IIS
        - Microsoft SQL Server
        - PostgreSQL
        - EnterpriseDB
        - FUJITSU Software Enterprise Postgres
        - Oracle
        - JP1/AJS3
        - HULFT

    今まではARKの対応のないアプリケーション/ミドルウェアは、Generic ARKというテンプレートを利用してスクリプトを書く必要がありました。
    QSPを利用すると、スクリプトを書くスキルも不要となりますので、設計構築をされる方の負担が減り、スクリプトの記載ミスが発生し、検証に時間を取られる可能性も減ったのではないでしょうか。

    気になった方はぜひとも評価版等でこのWindows版QSPを体験下さい。

    LifeKeeperについて詳しく知りたい方はこちらをクリックください。