diff options
Diffstat (limited to 'docs/manual/mod/mod_proxy_balancer.html.ja.utf8')
-rw-r--r-- | docs/manual/mod/mod_proxy_balancer.html.ja.utf8 | 273 |
1 files changed, 249 insertions, 24 deletions
diff --git a/docs/manual/mod/mod_proxy_balancer.html.ja.utf8 b/docs/manual/mod/mod_proxy_balancer.html.ja.utf8 index 42718dd7..a3e5ef49 100644 --- a/docs/manual/mod/mod_proxy_balancer.html.ja.utf8 +++ b/docs/manual/mod/mod_proxy_balancer.html.ja.utf8 @@ -21,20 +21,18 @@ <div id="page-content"> <div id="preamble"><h1>Apache モジュール mod_proxy_balancer</h1> <div class="toplang"> -<p><span>Available Languages: </span><a href="../en/mod/mod_proxy_balancer.html" hreflang="en" rel="alternate" title="English"> en </a> | +<p><span>翻訳済み言語: </span><a href="../en/mod/mod_proxy_balancer.html" hreflang="en" rel="alternate" title="English"> en </a> | <a href="../ja/mod/mod_proxy_balancer.html" title="Japanese"> ja </a></p> </div> -<div class="outofdate">This translation may be out of date. Check the - English version for recent changes.</div> <table class="module"><tr><th><a href="module-dict.html#Description">説明:</a></th><td>負荷分散のための <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code> 拡張</td></tr> <tr><th><a href="module-dict.html#Status">ステータス:</a></th><td>Extension</td></tr> <tr><th><a href="module-dict.html#ModuleIdentifier">モジュール識別子:</a></th><td>proxy_balancer_module</td></tr> <tr><th><a href="module-dict.html#SourceFile">ソースファイル:</a></th><td>mod_proxy_balancer.c</td></tr> -<tr><th><a href="module-dict.html#Compatibility">互換性:</a></th><td>2.1 以降</td></tr></table> +<tr><th><a href="module-dict.html#Compatibility">互換性:</a></th><td>Apache 2.1 以降で使用可能</td></tr></table> <h3>概要</h3> <p>本モジュールには <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code> が<em>必要です</em>。 - <code>HTTP</code>, <code>FTP</code> と <code>AJP13</code> + 本モジュールは <code>HTTP</code> と <code>FTP</code> と <code>AJP13</code> プロトコルのロードバランス機能を持っています。</p> <p>ですから、 ロードバランスを有効にする場合 <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code> @@ -42,7 +40,8 @@ いなければいけません。</p> <div class="warning"><h3>警告</h3> - <p><a href="mod_proxy.html#access">安全なサーバにする</a>までプロクシ機能は有効にしないでください。 + <p><a href="mod_proxy.html#access"> + 安全なサーバにする</a>までプロキシ機能は有効にしないでください。 オープンプロキシサーバはあなた自身のネットワークにとっても、 インターネット全体にとっても危険です。</p> </div> @@ -52,9 +51,15 @@ <h3>トピック</h3> <ul id="topics"> <li><img alt="" src="../images/down.gif" /> <a href="#scheduler">ロードバランサのスケジューラのアルゴリズム</a></li> -<li><img alt="" src="../images/down.gif" /> <a href="#byrequests">Request Counting アルゴリズム</a></li> -<li><img alt="" src="../images/down.gif" /> <a href="#bytraffic">Weighted Traffic Counting アルゴリズム</a></li> -<li><img alt="" src="../images/down.gif" /> <a href="#enable">バランサマネージャのサポートを有効にする</a></li> +<li><img alt="" src="../images/down.gif" /> <a href="#stickyness">ロードバランサのスティッキネス</a></li> +<li><img alt="" src="../images/down.gif" /> <a href="#example">ロードバランサの設定例</a></li> +<li><img alt="" src="../images/down.gif" /> <a href="#requests">Request Counting アルゴリズム</a></li> +<li><img alt="" src="../images/down.gif" /> <a href="#traffic">Weighted Traffic Counting アルゴリズム</a></li> +<li><img alt="" src="../images/down.gif" /> <a href="#busyness">Pending Request Counting アルゴリズム</a></li> +<li><img alt="" src="../images/down.gif" /> <a href="#environment">エクスポートされる環境変数</a></li> +<li><img alt="" src="../images/down.gif" /> <a href="#balancer_manager">バランサマネージャのサポートを有効にする</a></li> +<li><img alt="" src="../images/down.gif" /> <a href="#stickyness_implementation">ロードバランサのスティッキネスの詳細</a></li> +<li><img alt="" src="../images/down.gif" /> <a href="#stickyness_troubleshooting">ロードバランサのスティッキネスのトラブルシューティング</a></li> </ul><h3>参照</h3> <ul class="seealso"> <li><code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code></li> @@ -63,16 +68,65 @@ <div class="section"> <h2><a name="scheduler" id="scheduler">ロードバランサのスケジューラのアルゴリズム</a></h2> - <p>現時点では 2 種類のロードバランサスケジューラアルゴリズムから選べます。 + <p>現時点では 3 種類のロードバランサスケジューラアルゴリズムから選べます。 リクエスト回数によるもの <span class="transnote">(<em>訳注:</em> Request Counting)</span> - と、トラフィック量によるもの <span class="transnote">(<em>訳注:</em> Weighted Traffic Counting)</span> - があります。バランサの設定 <code>lbmethod</code> 値で、どちらを使うか指定します。 - 詳細は <code class="directive"><a href="../mod/mod_proxy.html#proxy">Proxy</a></code> ディレクティブを + 、トラフィック量によるもの <span class="transnote">(<em>訳注:</em> Weighted Traffic Counting)</span> + と、処理中リクエスト数によるもの <span class="transnote">(<em>訳注:</em> Pending Request Counting)</span> + とがあります。バランサの設定 <code>lbmethod</code> 値で、どれを使うか指定します。 + 詳細は <code class="directive"><a href="../mod/mod_proxy.html#proxypass">ProxyPass</a></code> ディレクティブを 参照してください。</p> +</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> +<div class="section"> +<h2><a name="stickyness" id="stickyness">ロードバランサのスティッキネス</a></h2> + + <p>バランサはスティッキネスをサポートします。リクエストがあるバックエンドに + プロキシされた時、続く同じユーザからのリクエストは、すべてその同じバックエンドに + プロキシされるべきです。多くのロードバランサはこの機能をクライアントの + IP アドレスとバックエンドの対応表を持つことで実現します。 + この方法はクライアントにもバックエンドにも透過に動作しますが、 + 次に挙げるいくつかの問題があります。 + もしクライアント自身がプロキシの背後にいる場合、負荷分散が不均一になります。 + もし動的な IP アドレスを持つクライアントのアドレスがセッション中に変わると + スティッキネスは期待どおりに動作しません。 + もし対応表があふれると、スティッキネスが失われます。</p> + <p><code class="module"><a href="../mod/mod_proxy_balancer.html">mod_proxy_balancer</a></code> はスティッキネスを + 2 種類の別手法をもとに実装しています。クッキーと URL エンコーディングのふたつです。 + クッキーはバックエンドもしくは Apache Web サーバ自身により提供されます。 + URL エンコーディングは通常バックエンドにより行われます。</p> +</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> +<div class="section"> +<h2><a name="example" id="example">ロードバランサの設定例</a></h2> + + <p>技術的な詳細に入る前に例を示します。以下は、2 台のバックエンドサーバを + ロードバランスするための <code class="module"><a href="../mod/mod_proxy_balancer.html">mod_proxy_balancer</a></code> の使い方の一例です: + </p> + + <div class="example"><p><code> + <Proxy balancer://mycluster><br /> + BalancerMember http://192.168.1.50:80<br /> + BalancerMember http://192.168.1.51:80<br /> + </Proxy><br /> + ProxyPass /test balancer://mycluster + </code></p></div> + + <p>別の例として、<code class="module"><a href="../mod/mod_headers.html">mod_headers</a></code> を使ってスティッキネス + を実現するロードバランサの設定例を示します。バックエンドのサーバが + 適切なセッションクッキーをセットしなくても動作します。 + </p> + <div class="example"><p><code> + Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" + env=BALANCER_ROUTE_CHANGED<br /> + <Proxy balancer://mycluster><br /> + BalancerMember http://192.168.1.50:80 route=1<br /> + BalancerMember http://192.168.1.51:80 route=2<br /> + ProxySet stickysession=ROUTEID<br /> + </Proxy><br /> + ProxyPass /test balancer://mycluster + </code></p></div> </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> <div class="section"> -<h2><a name="byrequests" id="byrequests">Request Counting アルゴリズム</a></h2> +<h2><a name="requests" id="requests">Request Counting アルゴリズム</a></h2> <p><code>lbmethod=byrequests</code> で有効になります。 このスケジューラの背景にある考え方は、様々なワーカーがそれぞれ、 @@ -93,7 +147,7 @@ <p>まず個々のワーカーにワーカークオータを割り振り、どのワーカーが最も急ぎで 働かなければならないか (lbstatus が最大のもの) を調べます。 次に仕事をするようにこのワーカーを選択し、選択したワーカーの lbstatus - を全体に割り振ったぶんだけ差し引きます。ですから、lbstatus の総量は + から全ワーカーに割り振ったクオータの合計を引きます。ですから、lbstatus の総量は 結果的に変化しません(*)し、リクエストは期待通りに分散されます。</p> <p>あるワーカーが無効になっても、他のものは正常にスケジュールされ続けます。 @@ -182,9 +236,7 @@ candidate lbstatus -= total factor</code></pre></div> <td class="data">1</td></tr> </table> - <p>This is because all values of <dfn>lbfactor</dfn> are normalized - with respect to the others. For:</p> - <p><dfn>lbfactor</dfn> は全て正規化されたもので、 + <p>と言うのも、<dfn>lbfactor</dfn> の値は全て正規化されたもので、 他との相対値だからです。次の設定では:</p> <table><tr><th>worker</th> @@ -246,7 +298,7 @@ candidate lbstatus -= total factor</code></pre></div> <var>b</var> 3 回でまばらに選ばれます。</p> </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> <div class="section"> -<h2><a name="bytraffic" id="bytraffic">Weighted Traffic Counting アルゴリズム</a></h2> +<h2><a name="traffic" id="traffic">Weighted Traffic Counting アルゴリズム</a></h2> <p><code>lbmethod=bytraffic</code> で有効になります。 このスケジューラの背景にある考え方は、Request Counting @@ -279,7 +331,77 @@ candidate lbstatus -= total factor</code></pre></div> </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> <div class="section"> -<h2><a name="enable" id="enable">バランサマネージャのサポートを有効にする</a></h2> +<h2><a name="busyness" id="busyness">Pending Request Counting アルゴリズム</a></h2> + + + + <p><code>lbmethod=bybusyness</code> で有効になります。このスケジューラは + 現在どのぐらいのリクエストが個々のワーカーにアサインされているかを把握しています。 + 新しいリクエストは、最も処理途中のリクエスト数が少ないワーカーに + 自動的に割り振られます。これは、ワーカーが Apache と無関係に入力リクエストを + キューに溜め込む場合に有効で、キューの長さを同程度に維持しつつも、 + 最も早く処理できそうなワーカーに常にリクエストを割り振ります。</p> + + <p>複数のワーカーが最少の処理中リクエスト数で並んだ場合、Request Counting + アルゴリズムと同じ統計情報(と重み付け)を使って順番を決めます。 + 時間が経つと、割り振りの割合は <code>byrequests</code> と似たような + 傾向を示すようになるでしょう。</p> + + <p>このアルゴリズムは Apache HTTP サーバ 2.2.10以降で利用可能です。</p> + +</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> +<div class="section"> +<h2><a name="environment" id="environment">エクスポートされる環境変数</a></h2> + + <p>現在、6 つの環境変数がエクスポートされます:</p> + + <dl> + + <dt><var><a name="balancer_session_sticky" id="balancer_session_sticky">BALANCER_SESSION_STICKY</a></var></dt> + <dd> + <p>現在のリクエストに使われる <var>stickysession</var> 値になります。 + スティッキーセッションのためのクッキー名もしくはリクエストパラメータ名です。</p> + </dd> + + + <dt><var><a name="balancer_session_route" id="balancer_session_route">BALANCER_SESSION_ROUTE</a></var></dt> + <dd> + <p>現在のリクエストをパースして得られる <var>route</var> 値です。</p> + </dd> + + + <dt><var><a name="balancer_name" id="balancer_name">BALANCER_NAME</a></var></dt> + <dd> + <p>現在のリクエストが使うバランサ名です。<code>balancer://foo</code> + のような値です。</p> + </dd> + + + <dt><var><a name="balancer_worker_name" id="balancer_worker_name">BALANCER_WORKER_NAME</a></var></dt> + <dd> + <p>現在のリクエストが使うワーカー名です。<code>http://hostA:1234</code> + のような値です。</p> + </dd> + + + <dt><var><a name="balancer_worker_route" id="balancer_worker_route">BALANCER_WORKER_ROUTE</a></var></dt> + <dd> + <p>現在のリクエストが使うワーカーの <var>route</var> 値です。</p> + </dd> + + + <dt><var><a name="balancer_route_changed" id="balancer_route_changed">BALANCER_ROUTE_CHANGED</a></var></dt> + <dd> + <p>セッションルートとワーカールートが一致しない時 (BALANCER_SESSION_ROUTE != BALANCER_WORKER_ROUTE) + あるいは、セッションがまだルートを確立していない時、値が 1 になります。 + スティッキーセッションを使う時、ルートの更新をクライアントに送る必要があるかを + 判断するためにこの環境変数を使えます。</p> + </dd> + </dl> + +</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> +<div class="section"> +<h2><a name="balancer_manager" id="balancer_manager">バランサマネージャのサポートを有効にする</a></h2> <p>このモジュールは <code class="module"><a href="../mod/mod_status.html">mod_status</a></code> のサービスを <em>必要とします</em>。 @@ -292,7 +414,7 @@ candidate lbstatus -= total factor</code></pre></div> <code class="module"><a href="../mod/mod_status.html">mod_status</a></code> と <code class="module"><a href="../mod/mod_proxy_balancer.html">mod_proxy_balancer</a></code> をサーバに組み込まなければなりません。</p> - <p>foo.com ドメインのブラウザからロードバランサ管理機能を + <p>example.com ドメインのブラウザからロードバランサ管理機能を 使えるようにするには、次のようなコードを <code>httpd.conf</code> に追加します。</p> <div class="example"><p><code> @@ -301,19 +423,122 @@ candidate lbstatus -= total factor</code></pre></div> <br /> Order Deny,Allow<br /> Deny from all<br /> - Allow from .foo.com<br /> + Allow from .example.com<br /> </Location> </code></p></div> <p>こうすると、<code>http://your.server.name/balancer-manager</code> のページ経由で、ウェブブラウザからロードバランサマネージャに アクセスできるようになります。</p> +</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> +<div class="section"> +<h2><a name="stickyness_implementation" id="stickyness_implementation">ロードバランサのスティッキネスの詳細</a></h2> + + <p>クッキーをもとにスティッキネスを使う場合、どのバックエンドに割り振るべきか + を決めるクッキーの名前を指定する必要があります。 + クッキー名は <code class="directive"><a href="../mod/mod_proxy.html#proxypass">ProxyPass</a></code> または + <code class="directive"><a href="../mod/mod_proxy.html#proxyset">ProxySet</a></code> のいずれか + に付与する <var>stickysession</var> 属性で設定します。 + クッキー名は大文字小文字を区別します。 + バランサはそのクッキーの値を取り出し、その値に一致する <var>route</var> 値の + ワーカーを探します。 + <var>route</var> も <code class="directive"><a href="../mod/mod_proxy.html#proxypass">ProxyPass</a></code> + または <code class="directive"><a href="../mod/mod_proxy.html#proxyset">ProxySet</a></code> + のいずれかに設定しなければいけません。 + クッキーはバックエンドによって設定されるか、あるいは + 上記の <a href="#example">例</a> のように Apache Web サーバ自身 + によって設定されます。</p> + <p>バックエンドの中の一部は少し異なる形式のスティッキネスクッキーを使います。 + たとえば Apache Tomcat がそうです。Tomcat は自身のインスタンス名を + セッション ID のクッキーの最後に付け加えます。この時、セッション ID + との区切り文字にドット (<code>.</code>) を使います。 + このため、Apache Web サーバがドットをスティッキネスクッキー値の中に見つけると、 + route を探すためにドット以降の部分のみを使うようにします。 + Tomcat 側で自身のインスタンス名を設定するには、Tomcat の設定ファイル + <code>conf/server.xml</code> の中の <code>jvmRoute</code> 属性に + 指定する必要があります。値はそれぞれの Tomcat に接続するワーカーの + <var>route</var> 値と一致させます。 + Tomcat およびサーブレットベースの Java Web アプリサーバが一般に使う + セッションクッキーの名前は <code>JSESSIONID</code> (すべて大文字) です。 + この名前は設定により変更も可能です。</p> + <p>スティッキネスを実装するふたつめの手段は URL エンコーディングです。 + Web サーバはリクエストの URL の中からクエリパラメータを探します。 + 探すパラメータ名は同じように <var>stickysession</var> 属性で指定します。 + パラメータ値と一致する <var>route</var> 値のワーカーを探します。 + レスポンスに含まれるすべての URL リンクを探しだし書き換えるのは簡単ではないので、 + 一般にそれぞれのリンクにクエリパラメータを付け加えるのは、 + そのコンテンツを生成したバックエンドの仕事です。 + 時には、<code class="module"><a href="../mod/mod_substitute.html">mod_substitute</a></code> を使って Web サーバにこの書き換えを + させるのが可能な場合もあります。 + ただし、パフォーマンスを落とす可能性があります。</p> + <p>Java 標準は URL エンコーディングを少し異なる形で実装します。 + URL のパス情報をセミコロン (<code>;</code>) で区切って + セッション ID を付け加えます。 + クッキーの場合と同じように、 Apache Tomcat はこのパス情報に + <code>jvmRoute</code> の設定値を含めます。 + Apache にこの種のパス情報を見つけさせるには、 + <code class="directive"><a href="../mod/mod_proxy.html#proxypass">ProxyPass</a></code> あるいは + <code class="directive"><a href="../mod/mod_proxy.html#proxyset">ProxySet</a></code> の + <code>scolonpathdelim</code> を <code>On</code> にします。</p> + <p>最後に、クッキーと URL エンコーディングの両方が指定できることを示します。 + 次の例のように、クッキー名と URL パラメータ名を垂直バー (<code>|</code>) + で区切って指定します:</p> + <div class="example"><p><code> + ProxyPass /test balancer://mycluster stickysession=JSESSIONID|jsessionid scolonpathdelim=On + <Proxy balancer://mycluster><br /> + BalancerMember http://192.168.1.50:80 route=node1<br /> + BalancerMember http://192.168.1.51:80 route=node2<br /> + </Proxy><br /> + </code></p></div> + <p>もし同じリクエストが、クッキーとリクエストパラメータの両方のルーティング情報を + 提供した場合、リクエストパラメータのほうが使われます。</p> +</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> +<div class="section"> +<h2><a name="stickyness_troubleshooting" id="stickyness_troubleshooting">ロードバランサのスティッキネスのトラブルシューティング</a></h2> + + <p>もしアプリのセッションが失われてユーザが再ログインしなければいけないなど + スティッキネス関連のエラーに遭遇したら、 + この原因はバックエンドの応答に支障があったせいか、 + あるいは設定ミスによるものかを最初に切り分けたいでしょう。 + バックエンドの安定性に関して起きうる問題を見つけるには、 + Apache のエラーログにプロキシエラーのメッセージがないか確認してください。</p> + <p>設定が正しいかを確認するには、最初にスティッキネスを + クッキーと URL エンコーディングのどちらで行っているかを確認してください。 + 次に、<code class="directive"><a href="../mod/mod_log_config.html#logformat">LogFormat</a></code> を変更して + アクセスログに適切なデータが残るようにするとよいでしょう。 + 次のフィールドが便利です:</p> + <dl> + <dt><code>%{MYCOOKIE}C</code></dt> + <dd><code>MYCOOKIE</code> という名前のクッキーの値。 + この名前は <var>stickysession</var> 属性の指定値と同じはずです。</dd> + <dt><code>%{Set-Cookie}o</code></dt> + <dd>これによりバックエンドがセットするクッキーをログに出せます。 + バックエンドが期待するセッションクッキーをセットしているかと、 + どんな値がセットされているかを追跡できます。</dd> + <dt><code>%{BALANCER_SESSION_STICKY}e</code></dt> + <dd>ルーティング情報を決めるために使われたクッキー名もしくは + リクエストパラメータ名。</dd> + <dt><code>%{BALANCER_SESSION_ROUTE}e</code></dt> + <dd>リクエスト内に見つかった route 値の情報</dd> + <dt><code>%{BALANCER_WORKER_ROUTE}e</code></dt> + <dd>選択されたワーカーの route 値</dd> + <dt><code>%{BALANCER_ROUTE_CHANGED}e</code></dt> + <dd>リクエストの route 値がワーカーの route 値と異なる場合に + <code>1</code> になります。つまり、リクエストはスティッキーとして + 処理されていません。</dd> + </dl> + <p>セッションが失われる原因でよくあるものは、セッションタイムアウトですが、 + これは通常バックエンドのサーバで変更可能です。</p> + <p>ログレベルを <code>debug</code> 以上に設定すると、 + バランサはスティッキネス動作の詳細な情報をエラーログに書き出します。 + これはスティッキネスの問題のトラブルシューティングする簡単な手法ですが、 + 高負荷な本番サーバではログの分量が膨大になってしまうかもしれません。</p> </div> </div> <div class="bottomlang"> -<p><span>Available Languages: </span><a href="../en/mod/mod_proxy_balancer.html" hreflang="en" rel="alternate" title="English"> en </a> | +<p><span>翻訳済み言語: </span><a href="../en/mod/mod_proxy_balancer.html" hreflang="en" rel="alternate" title="English"> en </a> | <a href="../ja/mod/mod_proxy_balancer.html" title="Japanese"> ja </a></p> </div><div id="footer"> -<p class="apache">Copyright 2011 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p> +<p class="apache">Copyright 2012 The Apache Software Foundation.<br />この文書は <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> のライセンスで提供されています。.</p> <p class="menu"><a href="../mod/">モジュール</a> | <a href="../mod/directives.html">ディレクティブ</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">用語</a> | <a href="../sitemap.html">サイトマップ</a></p></div> </body></html>
\ No newline at end of file |