Apache Load Balance 설정

다음과 같이 설정한다.

<IfModule mod_proxy_ajp.c>
<IfModule mod_proxy_balancer.c>

<Location /bm/>
SetHandler balancer-manager
ProxyPass !
AuthType Basic
AuthName “Secret Zone”
AuthUserFile /etc/httpd/.htpasswd
Require user lov2jh
</Location>

<Location />
Header add Set-Cookie “ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/” env=BALANCER_ROUTE_CHANGED
ProxyPass balancer://lb01/ stickysession=ROUTEID nofailover=Off lbmethod=byrequests
</Location>

<Proxy balancer://lb01/>
BalancerMember ajp://web01:8009 loadfactor=10 route=jvm1 retry=3
BalancerMember ajp://web02:8009 loadfactor=10 route=jvm2 retry=3
BalancerMember ajp://web03:8009 loadfactor=10 route=jvm3 retry=3
</Proxy>

</IfModule>
</IfModule>

위의 문제점은 간혹 http://localhost/apple.jpg.jvm1 과 같이 나타나는 경우가 있다.
(세션이 없을때 첫 접속시)

다음과 같이 Rewrite 를 이용하여 임시적으로 해결하였다.

RewriteEngine On
RewriteLog “/etc/httpd/logs/rewrite.log”
RewriteLogLevel 4

# (4) RewriteCond: input=’/images/login/jp/btn_login.jpg.jvm1′ pattern=’^(.*).jvm1$’ => matched
# (2) rewrite ‘/images/login/jp/btn_login.jpg.jvm1′ -> ‘/images/login/jp/btn_login.jpg’
RewriteCond %{REQUEST_URI} ^(.*).jvm[0-9]$
RewriteRule (.*).jvm[0-9]$ $1 [R,L]

2013/12/18
stickysession=ROUTEID 으로 하면 ROUTEID라는 쿠키를 이용합니다.
그런데 이번에 사용하는 환경에서는 쿠키를 사용하지 않는 환경이라서 참 애매한데요.

http://httpd.apache.org/docs/2.2/mod/mod_proxy_balancer.html

위 사이트에서 설명하는대로 scolonpathdelim=On 를 설정하여 url;jsessionid=xxxx.jvm1 등과 같이 url rewrite된 부분도 인식하도록 하였습니다.
또한 이 경우에는 stickysession에 | 로 구분하여 sticky세션으로 이용할 항목을 나열합니다.

This entry was posted in Apache. Bookmark the permalink.