開発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

intra-mart Advent Calendar 2013 第2日:テナント環境セットアップって自作で追加できるんですよ!

この記事は、intra-mart Advent Calendar 2013 第2日の記事です。 Advent Calendar ではあまり知られていないと思っている機能を紹介して行きたいと考えておりま …

no image

intra-mart Advent Calendar 2013 第18日:認可関連のタグ3種(imAuthz, imUrlAuthz, imAuthzPolicyEditor)

この記事は、intra-mart Advent Calendar 2013 第18日の記事です。 今回は、認可関連のタグ3種(imAuthz, imUrlAuthz, imAuthzPolicyEdi …

no image

「戻る」ボタン問題の解法

  ※下記内容は、過去のintra-mart(Ver4.3以前)に関する内容です。最新のintra-martでは、異なる情報であることがありますので、ご注意ください。   業務シス …

no image

iWP Ver7.xでのチューニング

開発本部の大西です。 開発は半期末とかあまり関係ないと思いきや、諸般の事情でいろいろと大変な今日この頃です。 江本さんがebuilderのネタばかり書くので、傷食気味にならないように、季節柄、チューニ …

no image

intra-martのLDAP接続機能について

※下記内容は、過去のintra-mart(Ver4.3以前)に関する内容です。最新のintra-martでは、異なる情報であることがありますので、ご注意ください。 intra-martはver2.1よ …