HiiHahWIKI - making some notes for... -
mod_proxy_balancer単体でstickysessionを設定
をテンプレートにして作成
開始行:
*mod_proxy_balancer単体でstickysessionを設定 [#y1805027]
mod_proxy_balancerのみでstickysessionを設定する方法につい...
いろいろ調べるといろいろなやり方がありそうですが、Webサー...
想定の構成は以下の通りです。
&ref(構成.png);
想定構成は、フロントにWEBサーバ1台、バックにAPサーバ2台で...
Webサーバは何台あっても、上位にロードバランサーがいれば設...
-Webサーバ : mod_proxy_balancerの設定対象です。
-APサーバ : mod_proxy_balancerにて振り分けする対象のAP...
**mod_proxy_balancerの設定(stickysession無し) [#t5f7eb72]
まず、stickysessionの設定なしのmod_proxy_balancer.confの...
■mod_proxy_balancer.conf
まず、管理画面の設定。試験環境であれば、許可するセグメン...
<Location /manager/balancer-manager>
SetHandler balancer-manager
Order deny,allow
Deny from all
Allow from XX.XX.X.X/XX ←セグメントを指定(例え...
AuthType Basic
AuthName "For balancer-mangager"
# AUthUserFile /etc/httpd/conf/balancer_password ←コメ...
# Require valid-user ←コメ...
</Location>
次に、実際の振り分けの設定を入れます。
ProxyPass /test balancer://mycluster/
<Proxy balancer://mycluster/>
BalancerMember http://app01:80/ timeout=310 retry=3
BalancerMember http://app02:80/ timeout=310 retry=3
</Proxy>
この設定で、バックエンドのAPサーバにラウンドロビンで振り...
この状態で、webサーバの管理用URL(http://web01/manager/ba...
LoadBalancer Status for balancer://mycluster
StickySession Timeout FailoverAttempts Method
- 4 1 byrequests
Worker URL Route RouteRedir Factor Set Status El...
http://app01/ 1 0 Ok 0...
http://app02/ 1 0 Ok 0...
この状態では、Webサーバにアクセスすると、セッションによっ...
→Electedが順番に増加するはずです。
LoadBalancer Status for balancer://mycluster
StickySession Timeout FailoverAttempts Method
- 4 1 byrequests
Worker URL Route RouteRedir Factor Set Status El...
http://app01/ 1 0 Ok 3...
http://app02/ 1 0 Ok 2...
**mod_proxy_balancerの設定(stickysession有り) [#n6f10904]
Webサーバのmod_proxy_balancerの設定のみでバックのAPサーバ...
Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}...
ProxyPass /test balancer://mycluster/
<Proxy balancer://mycluster/>
BalancerMember http://app01:80/ timeout=310 retry=3 ro...
BalancerMember http://app02:80/ timeout=310 retry=3 ro...
ProxySet stickysession=ROUTEID ...
</Proxy>
-追加①:レスポンスのヘッダーにcookie「ROUTEID」を追加&br;
この構文で、環境変数「BALANCER_ROUTE_CHANGED」が存在する...
-追加②:routeの設定を追加する。
-追加③:バランサーのstickysession名をROUTEIDに設定する。
追加③は、通常はアプリケーションのセッション名(JSESSIONID...
が、実際はアプリケーションにより設定するセッション名や値...
そこで、追加①でBALANCER_WORKER_ROUTEという環境変数を「ROU...
この状態で、webサーバの管理用URL(http://web01/manager/ba...
LoadBalancer Status for balancer://mycluster
StickySession Timeout FailoverAttempts Method
ROUTEID 4 1 byrequests
Worker URL Route RouteRedir Factor Set Status ...
http://app01/ route01 1 0 Ok ...
http://app02/ route02 1 0 Ok ...
画面からも、StickySessionのところに「ROUTEID」が指定され...
***参考情報 [#u97555f3]
Apacheモジュール:mod_proxy_balancer
-http://httpd.apache.org/docs/trunk/en/mod/mod_proxy_bala...
上の文書の一部を引用
>%{MYCOOKIE}C
>The value contained in the cookie with name MYCOOKIE. Th...
>%{Set-Cookie}o
>This logs any cookie set by the back-end. You can track,...
>%{BALANCER_SESSION_STICKY}e
>The name of the cookie or request parameter used to look...
>%{BALANCER_SESSION_ROUTE}e
>The route information found in the request.
>%{BALANCER_WORKER_ROUTE}e
>The route of the worker chosen.
>%{BALANCER_ROUTE_CHANGED}e
>Set to 1 if the route in the request is different from t...
+環境変数「BALANCER_ROUTE_CHANGED」は、ルートが変わった時...
+つまり、前述の追加①では、ルートが変わった(新しく設定さ...
というわけです。
Apacheモジュール:mod_headers
-http://httpd.apache.org/docs/2.1/ja/mod/mod_headers.html
上の文書より、追加①の「Header add・・・」は、バックエンド...
→PHPアプリケーションの処理が終わって、フロントWebサーバの...
**動作確認のためのログ設定 [#v6b6f51d]
LogFormatの出力に以下の3つを追加します。
+%{BALANCER_WORKER_ROUTE}e : バックエンドのAPサーバに...
+%{BALANCER_ROUTE_CHANGED}e : BALANCER_ROUTE_CHANGEDの...
+%{ROUTEID}C : cookieの「ROUTEID」の内容
例えば、以下の通りに設定します。
■httpd.conf
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%...
これで、振り分けの状況がログから見えるようになります。
**動作確認 [#x5c54d87]
まず、最初にアクセスした際のWebサーバのアクセスログはこん...
※最後の3つの要素のみ記載
10.XX.XX.XX - - *** route01 1 -
↑① ↑②↑③
-③:%{ROUTEID}Cが「-」であり、今回のリクエストのcookieに...
-②:%{BALANCER_ROUTE_CHANGED}eが「1」であり、これは今回ル...
-①:%{BALANCER_WORKER_ROUTE}eが「route01」であり、「route...
もう一回同じブラウザからアクセスすると以下の通りの出力に...
10.XX.XX.XX - - *** route01 - .route01
↑① ↑②↑③
-③:%{ROUTEID}Cが「.route01」であり、今回のリクエストのco...
-②:%{BALANCER_ROUTE_CHANGED}eが「-」であり、これは今回ル...
-①:%{BALANCER_WORKER_ROUTE}eが「route01」であり、前回の...
この結果、ルートが「ROUTEID」により保持された(Stickiness...
まあ、この他に、バックエンドのAPサーバのアクセスログを確...
***参考にしたサイト [#xaf0d960]
apache公式サイト(英) Apache Module mod_proxy_balancer
-http://httpd.apache.org/docs/trunk/en/mod/mod_proxy_bala...
apache公式サイト(英/日) Apache Module mod_proxy
-http://httpd.apache.org/docs/trunk/en/mod/mod_proxy.html
-http://httpd.apache.org/docs/trunk/ja/mod/mod_proxy.html
apache公式サイト(日) Apache モジュール mod_headers
-http://httpd.apache.org/docs/2.1/ja/mod/mod_headers.html
apache公式サイト(日) Apache モジュール mod_setenvif
-http://httpd.apache.org/docs/2.0/ja/mod/mod_setenvif.html
apache公式サイト(日) Apache モジュール mod_log_config
-http://www.apache.jp/manual/mod/mod_log_config.html#form...
以下は参考にしたブログサイトです。
HTTP Header Fields
-http://www.studyinghttp.net/header
HTTP Cokies
-http://www.studyinghttp.net/cookies
*** [#jd63296c]
Apache Proxy Balancer上でSet-Cookieするには
-http://dev.worksap.co.jp/Members/funasaki/2010/09/27/apa...
mod_proxy_balancer の stickysession について
-http://d.hatena.ne.jp/kusakari/20080501/1209576904
mod_proxy_balancerの設定、特にstickysessionについて
-http://www.res-system.com/weblog/item/618
終了行:
*mod_proxy_balancer単体でstickysessionを設定 [#y1805027]
mod_proxy_balancerのみでstickysessionを設定する方法につい...
いろいろ調べるといろいろなやり方がありそうですが、Webサー...
想定の構成は以下の通りです。
&ref(構成.png);
想定構成は、フロントにWEBサーバ1台、バックにAPサーバ2台で...
Webサーバは何台あっても、上位にロードバランサーがいれば設...
-Webサーバ : mod_proxy_balancerの設定対象です。
-APサーバ : mod_proxy_balancerにて振り分けする対象のAP...
**mod_proxy_balancerの設定(stickysession無し) [#t5f7eb72]
まず、stickysessionの設定なしのmod_proxy_balancer.confの...
■mod_proxy_balancer.conf
まず、管理画面の設定。試験環境であれば、許可するセグメン...
<Location /manager/balancer-manager>
SetHandler balancer-manager
Order deny,allow
Deny from all
Allow from XX.XX.X.X/XX ←セグメントを指定(例え...
AuthType Basic
AuthName "For balancer-mangager"
# AUthUserFile /etc/httpd/conf/balancer_password ←コメ...
# Require valid-user ←コメ...
</Location>
次に、実際の振り分けの設定を入れます。
ProxyPass /test balancer://mycluster/
<Proxy balancer://mycluster/>
BalancerMember http://app01:80/ timeout=310 retry=3
BalancerMember http://app02:80/ timeout=310 retry=3
</Proxy>
この設定で、バックエンドのAPサーバにラウンドロビンで振り...
この状態で、webサーバの管理用URL(http://web01/manager/ba...
LoadBalancer Status for balancer://mycluster
StickySession Timeout FailoverAttempts Method
- 4 1 byrequests
Worker URL Route RouteRedir Factor Set Status El...
http://app01/ 1 0 Ok 0...
http://app02/ 1 0 Ok 0...
この状態では、Webサーバにアクセスすると、セッションによっ...
→Electedが順番に増加するはずです。
LoadBalancer Status for balancer://mycluster
StickySession Timeout FailoverAttempts Method
- 4 1 byrequests
Worker URL Route RouteRedir Factor Set Status El...
http://app01/ 1 0 Ok 3...
http://app02/ 1 0 Ok 2...
**mod_proxy_balancerの設定(stickysession有り) [#n6f10904]
Webサーバのmod_proxy_balancerの設定のみでバックのAPサーバ...
Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}...
ProxyPass /test balancer://mycluster/
<Proxy balancer://mycluster/>
BalancerMember http://app01:80/ timeout=310 retry=3 ro...
BalancerMember http://app02:80/ timeout=310 retry=3 ro...
ProxySet stickysession=ROUTEID ...
</Proxy>
-追加①:レスポンスのヘッダーにcookie「ROUTEID」を追加&br;
この構文で、環境変数「BALANCER_ROUTE_CHANGED」が存在する...
-追加②:routeの設定を追加する。
-追加③:バランサーのstickysession名をROUTEIDに設定する。
追加③は、通常はアプリケーションのセッション名(JSESSIONID...
が、実際はアプリケーションにより設定するセッション名や値...
そこで、追加①でBALANCER_WORKER_ROUTEという環境変数を「ROU...
この状態で、webサーバの管理用URL(http://web01/manager/ba...
LoadBalancer Status for balancer://mycluster
StickySession Timeout FailoverAttempts Method
ROUTEID 4 1 byrequests
Worker URL Route RouteRedir Factor Set Status ...
http://app01/ route01 1 0 Ok ...
http://app02/ route02 1 0 Ok ...
画面からも、StickySessionのところに「ROUTEID」が指定され...
***参考情報 [#u97555f3]
Apacheモジュール:mod_proxy_balancer
-http://httpd.apache.org/docs/trunk/en/mod/mod_proxy_bala...
上の文書の一部を引用
>%{MYCOOKIE}C
>The value contained in the cookie with name MYCOOKIE. Th...
>%{Set-Cookie}o
>This logs any cookie set by the back-end. You can track,...
>%{BALANCER_SESSION_STICKY}e
>The name of the cookie or request parameter used to look...
>%{BALANCER_SESSION_ROUTE}e
>The route information found in the request.
>%{BALANCER_WORKER_ROUTE}e
>The route of the worker chosen.
>%{BALANCER_ROUTE_CHANGED}e
>Set to 1 if the route in the request is different from t...
+環境変数「BALANCER_ROUTE_CHANGED」は、ルートが変わった時...
+つまり、前述の追加①では、ルートが変わった(新しく設定さ...
というわけです。
Apacheモジュール:mod_headers
-http://httpd.apache.org/docs/2.1/ja/mod/mod_headers.html
上の文書より、追加①の「Header add・・・」は、バックエンド...
→PHPアプリケーションの処理が終わって、フロントWebサーバの...
**動作確認のためのログ設定 [#v6b6f51d]
LogFormatの出力に以下の3つを追加します。
+%{BALANCER_WORKER_ROUTE}e : バックエンドのAPサーバに...
+%{BALANCER_ROUTE_CHANGED}e : BALANCER_ROUTE_CHANGEDの...
+%{ROUTEID}C : cookieの「ROUTEID」の内容
例えば、以下の通りに設定します。
■httpd.conf
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%...
これで、振り分けの状況がログから見えるようになります。
**動作確認 [#x5c54d87]
まず、最初にアクセスした際のWebサーバのアクセスログはこん...
※最後の3つの要素のみ記載
10.XX.XX.XX - - *** route01 1 -
↑① ↑②↑③
-③:%{ROUTEID}Cが「-」であり、今回のリクエストのcookieに...
-②:%{BALANCER_ROUTE_CHANGED}eが「1」であり、これは今回ル...
-①:%{BALANCER_WORKER_ROUTE}eが「route01」であり、「route...
もう一回同じブラウザからアクセスすると以下の通りの出力に...
10.XX.XX.XX - - *** route01 - .route01
↑① ↑②↑③
-③:%{ROUTEID}Cが「.route01」であり、今回のリクエストのco...
-②:%{BALANCER_ROUTE_CHANGED}eが「-」であり、これは今回ル...
-①:%{BALANCER_WORKER_ROUTE}eが「route01」であり、前回の...
この結果、ルートが「ROUTEID」により保持された(Stickiness...
まあ、この他に、バックエンドのAPサーバのアクセスログを確...
***参考にしたサイト [#xaf0d960]
apache公式サイト(英) Apache Module mod_proxy_balancer
-http://httpd.apache.org/docs/trunk/en/mod/mod_proxy_bala...
apache公式サイト(英/日) Apache Module mod_proxy
-http://httpd.apache.org/docs/trunk/en/mod/mod_proxy.html
-http://httpd.apache.org/docs/trunk/ja/mod/mod_proxy.html
apache公式サイト(日) Apache モジュール mod_headers
-http://httpd.apache.org/docs/2.1/ja/mod/mod_headers.html
apache公式サイト(日) Apache モジュール mod_setenvif
-http://httpd.apache.org/docs/2.0/ja/mod/mod_setenvif.html
apache公式サイト(日) Apache モジュール mod_log_config
-http://www.apache.jp/manual/mod/mod_log_config.html#form...
以下は参考にしたブログサイトです。
HTTP Header Fields
-http://www.studyinghttp.net/header
HTTP Cokies
-http://www.studyinghttp.net/cookies
*** [#jd63296c]
Apache Proxy Balancer上でSet-Cookieするには
-http://dev.worksap.co.jp/Members/funasaki/2010/09/27/apa...
mod_proxy_balancer の stickysession について
-http://d.hatena.ne.jp/kusakari/20080501/1209576904
mod_proxy_balancerの設定、特にstickysessionについて
-http://www.res-system.com/weblog/item/618
ページ名: