목표 apache를 이용한 로드밸런싱
Apache 최신버전 컴파일 (2.4.23 released 2016-07-05)
./configure --prefix=/usr/local/apache2-lb --enable-proxy --enable-proxy-balancer --with-pcre=/usr/local/pcre --with-apr=/usr/local/apr
--enable-proxy 가 있으면 proxy_http로 추가된다.
--enable-proxy-balancer 있어야 loadbalancer를 사용할 수 있다.
http.conf
## 주석해제
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
## 추가
# proxy 권한 설정 - 필요한 경우 수정
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
#sticky session을 위한 cookie 설정
Header add Set-Cookie "ROUTEID=route.%{BALANCER_WORKER_ROUTE}e; path=/;" env=BALANCER_ROUTE_CHANGED 2
#balancer 정의 이름은 mycluster
<Proxy balancer://mycluster>
# WAS1
BalancerMember http://192.168.0.2:8080 route=1
# WAS2
BalancerMember http://192.168.0.3:8080 route=2
ProxySet stickysession=ROUTEID
</Proxy>
# balancer 모니터링 페이지
ProxyPass /balancer-manager !
<Location /balancer-manager>
SetHandler balancer-manager
</Location>
1번 서버 : 192.168.0.2
2번 서버 : 192.168.0.3
요청 순서대로 각서버로 연결되며 한번 연결되어 ROUTEID 쿠키가 set 되면 해당 서버로만 요청을 하게 된다.
session을 사용하는 어플리케이션도 처음 접속한 서버로 계속 접속하게 되어 세션을 유지 할 수 있다.
request header를 보면 어느쪽 서버로 요청이 가는지 알 수 있다. 아래 header를 보면 2번 서버로 요청이 가는것을 볼 수 있다.
http://[IP]/balancer-manager 페이지로 접근하면 상태페이지를 확인할 수 있다.
실제 사용하려면 접근권한을 반드시 주어 관리자만 확인할 수 있도록 한다. - (설정을 바꿔 서비스를 중단시킬수 있음. )
- reverse proxy를 사용하면 Off 로 설정해야 한다. [본문으로]
- BALANCER_WORKER_ROUTE -> 각 멤버의 route 번호를 저장한다. env=BALANCER_ROUTE_CHANGED -> 현재 요청된 route번호와 BALANCER_WORKER_ROUTE가 다른경우 1을 넣는다. [본문으로]
- 로드밸런싱 방법, byrequests (요청별 분배), bytraffic (byte 트래픽 가중치 분배) bybusyness (보류중 요청 분배) [본문으로]
- Use incoming Host HTTP request header for proxy request 웹서버에 요청된 header를 proxy request에 사용 [본문으로]
'webserver' 카테고리의 다른 글
apache mod_proxy를 이용한 부드러운 failover (0) | 2016.11.30 |
---|