본문 바로가기
오라클/WebServer

[OHS] 아파치 2.2/2.4 Proxy Balancer를 통한 로드밸런싱 구현

by sangyeon 2021. 11. 24.
728x90

이번 글에서는 OHS에서 mod_proxy_balancer를 통한 loadbalancing 및 failover 테스트를 해보려고 한다.

단순 Proxy pass만 사용하면 뒷 단에 던져주는 역할 밖에 할 수없기 때문에 그 개념에 부하분산 및 FailOver가 추가된 것이다.

 

해당 글의 설정은 아파치 공식문서를 참고하였다.

http://ssh.dukejournals.org/mod/mod_proxy_balancer.html

 

mod_proxy_balancer - Apache HTTP Server Version 2.2

Apache Module mod_proxy_balancer Summary This module requires the service of mod_proxy. It provides load balancing support for HTTP, FTP and AJP13 protocols Thus, in order to get the ability of load balancing, mod_proxy and mod_proxy_balancer have to be pr

ssh.dukejournals.org

 

1. Including 모듈

In order to get the ability of load balancing, mod_proxy and mod_proxy_balancer have to be present in the server.

LB 기능을 사용하기 위해서는 mod_proxy와 mod_proxy_balancer 모듈을 추가해주어야 한다.

LoadModule proxy_module "${ORACLE_HOME}/ohs/modules/mod_proxy.so"
LoadModule proxy_balancer_module "${ORACLE_HOME}/ohs/modules/mod_proxy_balancer.so"

> proxy balancer는 stickyness를 지원하기 때문에 클라이언트의 요청이 백엔드로 프록시되면 동일한 사용자에게로 부터 오는 다음의 모든 요청은 동일한 백엔드 WAS로 프록시되어야 한다.

 

2. 밸런서 구성 방법

cd /home/ohs/ohs1119/instance/hsy01/config/OHS/hsy01
==============
proxy.conf 생성
==============
vi proxy.conf

[ohs@sydev hsy01]$ cat proxy.conf
#NOTE : This is a template to configure mod_proxy_balancer.

Listen 8080

<VirtualHost 192.168.56.106:8080>

Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/;" env=BALANCER_ROUTE_CHANGED

<Proxy balancer://proxyLB1>
    ProxySet stickysession=ROUTEID
    BalancerMember http://192.168.56.106:10011 route=1
    BalancerMember http://192.168.56.106:10021 route=2
</Proxy>

#ProxyPass Set
   ProxyPass  /  balancer://proxyLB1/ 
   ProxyPassReverse /   balancer://proxyLB1/

</VirtualHost>

- ProxySet stickysession=ROUTEID : 클라이언트 요청이 백엔드로 프록시되면 동일한 클라이언트의 다음 요청에 대해 동일한 백엔드 WAS서버로 프록시되게끔 한다.(세션유지) - 어플리케이션의 쿠키네임 설정에 맞게 유지된다.

- Proxy balancer : 프록시 밸런서 이름 설정

- BalancerMember : 프록시할 WAS 노드 정보 

- BALANCER_WORKER_ROUTE : 현재 요청에 사용될 작업 노드가 할당 된다.

* 참고로 ProxyPass와 ProxyPassReverse 작성할 때 balancer://밸런서명/ 와 같이 마지막에 /를 반드시 붙여줘야 한다!!(중요)

 

3. httpd.conf에 proxy.conf Including

# Include the Custom Proxy conf
include "${ORACLE_INSTANCE}/config/${COMPONENT_TYPE}/${COMPONENT_NAME}/proxy.conf"

include "moduleconf/*.conf"

> 이후 ohs 기동 후 호출할 경우 WAS1, WAS2에 동일하게 부하분산된다.

 

 

4. OHS 12c(Apache 2.4) proxy_balancer 설정

httpd.conf에서 아래 3개의 모듈을 오픈 한다.

 

LoadModule proxy_balancer_module "${PRODUCT_HOME}/modules/mod_proxy_balancer.so"

LoadModule proxy_module "${PRODUCT_HOME}/modules/mod_proxy.so"

LoadModule lbmethod_byrequests_module "${PRODUCT_HOME}/modules/mod_lbmethod_byrequests.so"

 

그다음 proxy.conf 설정은 아래와 같다.

- httpd.conf

1207 include "proxy.conf"

 

- proxy.conf

<VirtualHost 192.168.56.106:8080>

Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
<Proxy balancer://mycluster>
    BalancerMember http://192.168.56.106:10011 route=1
    BalancerMember http://192.168.56.106:10021 route=2
    ProxySet stickysession=ROUTEID
</Proxy>
ProxyPass        /  balancer://mycluster/
ProxyPassReverse /  balancer://mycluster/

</VirtualHost>
728x90