開発Blog

ロードバランス環境の構築方法

投稿日:2014-04-17 更新日:

Webサーバと intra-mart Accel Platform 間でロードバランスを行いながら連携を行う設定例を紹介します。

以下の手順を参考として、各種要件・ご利用の環境に合わせて環境構築を行ってください。

Apache HTTP Server を使用している場合

はじめに

ここでは Apache のロードバランス機能を利用し、Webサーバと intra-mart Accel Platform の連携を行う場合の設定例を紹介します。

前提条件

「静的ファイルの配置」および「アクセスログの編集」の設定が終わっていることとします。

設定手順はApache HTTP Server を参照してください。

モジュールの取得

本ドキュメントでは以下の Apache モジュールを利用します。

取得に当たっては、Apacheの各マニュアルなどを参照してください。

  • mod_proxy
  • mod_rewrite
  • mod_headers
  • mod_proxy_balancer
  • mod_slotmem_shm (Apache 2.4 以降の場合)
  • mod_lbmethod_byrequests (Apache 2.4 以降の場合)
  • mod_proxy_wstunnel

手順

以降の手順では下記の環境を想定した手順を記載します。

コンテキストパス imart
apacheのドキュメントルート /usr/local/apache/htdocs
静的ファイルの展開フォルダ /usr/local/apache/htdocs/imart
ロードバランスするサーバー1のIPアドレス 192.168.1.1
ロードバランスするサーバー1のポート番号 8080
ロードバランスするサーバー2のIPアドレス 192.168.1.2
ロードバランスするサーバー2のポート番号 8080
  1. <%APACHE_HOME%/conf/httpd.conf> ファイルを開きます。
  2. Dynamic Shared Object (DSO) Support エリアに以下の設定を追加またはコメントアウトを外してください。
  3. Apache 2.4 以降を使用している場合、Dynamic Shared Object (DSO) Support エリアに以下の設定を追加またはコメントアウトを外してください。
  4. 末尾に以下の設定を追加してください。
  5. Apache を再起動してください。

Internet Information Services(IIS) を使用している場合

はじめに

ここでは IIS のサーバーファーム機能を利用し、Webサーバと intra-mart Accel Platform の連携を行う場合の設定例を紹介します。

前提条件

IIS の設定が終わっていることとします。

設定手順はInternet Information Services(IIS) を参照してください。

手順

以降の手順では下記の環境を想定した手順を記載します。

intra-mart Accel Platform のコンテキストパス imart
IIS のルート ディレクトリ C:\inetpub\wwwroot
静的ファイルの展開フォルダ C:\imart
ロードバランスする Resin サーバ1の IP アドレス 192.168.1.1
ロードバランスする Resin サーバ1のポート番号 8080
ロードバランスする Resin サーバ2の IP アドレス 192.168.1.2
ロードバランスする Resin サーバ2のポート番号 8080
  1. web.config から下記の設定を取り除きます。

    これにより、web.config の内容は以下のようになります。
  2. Server Farms のサブメニューより「Create Server Farm...」をクリックします。
  3. 「Server farm name」に「appservers」を設定し、「次へ」をクリックします。
  4. 「Server address」に「192.168.1.1」を設定し、「Advanced settings」をクリックします。
  5. 「applicationRequestRouting」の「httpPort」を「8080」に設定し、「Add」をクリックします。
  6. 同様に「192.168.1.2」を登録します。
  7. 「終了」をクリックします。
  8. サーバーファームへのリライトルールを自動で作成するかと聞かれます。本ドキュメントでは手動で作成するため、「いいえ」をクリックします。
  9. インターネット インフォメーション サービス (IIS) マネージャー より「IIS サーバ(ここでは WIN-QDQ41RVOU80)」「URL 書き換え」「機能を開く」の順にクリックします。
  10. 「規則の追加」をクリックします。
  11. 「空の規則」、「OK」をクリックします。
  12. 以下のように設定し、「適用」をクリックします。
    名前 ReverseProxyInboundStatic
    要求された URL パターンに一致する
    使用 正規表現
    パターン
    ※コピー&ペーストする場合は、改行コードを外し1行にしてください。
    大文字と小文字を区別しない チェックする
    アクションの種類 なし
    後続の規則の処理を停止する チェックする

  13. 同様に、以下の規則を設定します。
    名前 ReverseProxyInboundDynamic
    要求された URL パターンに一致する
    使用 正規表現
    パターン ^imart/(.*)
    大文字と小文字を区別しない チェックする
    アクションの種類 サーバー ファームにルーティング
    スキーム http://
    サーバー ファーム appservers
    パス /imart/{R:1}
    後続の規則の処理を停止する チェックする

  14. 「appservers」の「Server Affinity」設定画面を開きます。
  15. 「Client affinity」をチェックし、「適用」をクリックします。
  16.  IIS を再起動してください。

-開発Blog
-

執筆者:


  1. 丸木 より:

    ご返信いただきありがとうございます。

    サイト個別に書き換え規則を設定しようとしたところ、ReverseProxyInboundDynamicのアクションの種類で「サーバーファームにルーティング」が表示されず選択できませんでした。「書き換え」で設定したところ、サイト全体に設定していた時のソース(IISのApplicationHost.config)と同じだったのですが、IISマネージャからは設定が異なるようにみえるので、こちらの設定で問題ないか懸念しています。何かアドバイス等いただければ幸いです。

    複数のサイトを同時にオープンすることには成功しています。

    • imdeveloper より:

      丸木様

      コメントありがとうございます。
      丸木様が試されている方法ですと、サーバーファームを作成せず代わりに複数サイトを作成しているかと思われるため、ReverseProxyInboundDynamic の設定時にサーバーファームはご指摘の通り表示されないと思われます。
      本ブログで ReverseProxyInboundDynamic に対して行っている設定は、ステップ2~7にて IIS に登録した複数サーバー(これをサーバーファームと呼びます)にルーティング(ロードバランス)する設定例でございます。

      複数サイトへ振り分ける場合、ご認識の通り一般的には「書き換え」で設定を行うことになるかと思われます。

      IIS の ApplicationHost.config と IIS マネージャーの設定が異なるように見える件につきましては、IIS マネージャーから見える設定が有効となっている認識でよいかと思います。

      以上、よろしくお願いします。

      • 丸木 より:

        ご返信いただきありがとうございます。

        つまり、現在は「書き換え」になっているため、複数サーバー(サーバーファーム)へルーティング(ロードバランス)する設定になっていない認識でよろしいでしょうか。

        当初は本ブログご記載の通り、複数のサーバ(サーバーファーム)にルーティングする設定をしていました。しかし、上記例ではサイト全体にルーティング規則が設定されるので、サイト個別毎に振り分ける(たとえば、Aサイトはサーバファームにルーティングする設定で、Bサイトは書き換え規則なし)設定にできないものでしょうか。

        #上手く伝わっておらず申し訳ございません

        やりたいこと(例)
        Aサイト:サーバファームでルーティング(複数台のAPサーバへ割り振る)
        Bサイト:規則なし
        *両サイトは同時オープン

        しかし、現状は以下のようになっている(?)
        Aサイト:書き換え(サーバファームにルーティングしているわけではない)
        Bサイト:規則なし

  2. imdeveloper より:

    コメントありがとうございます。

    intra-mart側の制限は特にございませんので、サイト毎等、ご自由にURL書き換えを設定していただいて問題ありません。

    また何かご不明点がありましたら遠慮無くご連絡くださいませ。
    以上、よろしくお願いいたします。

  3. 丸木 より:

    いつも当ブログ参考にさせていただいております。

    早速ですが、上記IISを使用する場合について以下質問させていただけますでしょうか。

    手順9でIIS全体にURL書き換え規則を設定されていますが、
    こちらの設定はサイト毎に設定することは可能でしょうか?
    (intra-martの制限等で、書き換え規則をサイト毎に記載できない、
    または設定が有効にならない等はございますでしょうか)

    複数のサイトを同時(URL書き換え規則ありのサイトと、書き換え規則なしのサイトを同時)にオープンしたいと考えています。

comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

no image

Formaの画面遷移を制御するには

今回のブログ記事では、スクリプトを利用してFormaの画面遷移を制御する方法を紹介します。 目次 条件に応じて遷移先を変更する フォーム遷移設定 サンプルコード サンプルアプリケーション 処理後の遷移 …

no image

セッション管理モジュールのご紹介

この記事では、2017 Springでリリースされたセッション管理モジュールをご紹介させていただきます。 また、2014 Spring から 2016 Winterまでのバージョンでセッション管理モジ …

no image

iCEC2011 eBuilder AppProducer

4/26に開催された「intra-mart Certified Evangelist Conference 2011(iCEC2011)」での講演資料を公開します。 eBuilder AppProdu …

no image

[IM-Workflow Version 7.2 Patch01] をリリースしました。

2010年7月30日に、[IM-Workflow Version 7.2 Patch01] をリリースしました。 通常、パッチリリースは不具合等の修正を目的としています。 そのため、パッチで …

no image

第4回Solr勉強会 資料公開しました

開発本部の清(せい)です。 11/19に開催された、第4回Solr勉強会の資料です。 Solrを利用したIM-ContentsSearchの製品紹介と、コンサルティンググループ所属時に導入したお客様の …