2015年11月17日火曜日

Apacheでロードバランサ

ESBグループの打田です。



お客さんからの問い合わせで、Webアプリケーションが動かない動かないと思っていたら、すっかりロードバランサのことを忘れていました。
社内にはロードバランサのハードウェアはないので、Apacheで代用します。

まずhttpd.confを編集し、mod_proxy関係を有効にします。

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_http_module modules/mod_proxy_http.so

httpd.confの末尾にでもProxy設定を追加します。
ここではserver1とserver2にラウンドロビンする設定です。

<Proxy balancer://mycluster>
BalancerMember http://server1:8080
BalancerMember http://server2:8080
</Proxy>
ProxyPass /test balancer://mycluster

また、Tomcatではセッションを使うことが一般的と思いますが、その場合は一工夫が必要です。
まずTomcatのserver.xmlのEngineエレメントのjvmRoute属性を追加し、サーバーを区別します。
<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm2">

httpd.confには以下のようにrouteを設定します。
ProxyPass /test balancer://mycluster stickysession=JSESSIONID|jsessionid scolonpathdelim=On
<Proxy balancer://mycluster>
BalancerMember http://server1:8080 route=jvm1
BalancerMember http://server2:8080 route=jvm2
</Proxy>

これによりTomcatのセッションでサーバーが固定されます。

以上、Apacheのロードバランサを活用ください。

0 件のコメント:

コメントを投稿