본문 바로가기

WEB-SERVER/OHS & JBCS & Apache

[Apache 2.4] mod_proxy hot-standby

728x90
<VirtualHost *:8012>
    ServerName dodomain.com

    ~~~

    ProxyRequests Off
    ProxyPreserveHost On
    
    <Proxy balancer://DODOMAIN>
        BalancerMember http://192.168.xxx.xxx:8080 loadfactor=1 route=dodomain1 timeout=300 keepalive=on retry=1 ttl=30
        BalancerMember http://192.168.xxx.xxx:8080 loadfactor=1 route=dodomain2 timeout=300 keepalive=on retry=1 ttl=30 status=+H
        ProxySet lbmethod=bybusyness failonstatus=503 nofailover=Off
    </Proxy>

    ProxyPass / balancer://DODOMAIN/
    ProxyPassReverse / balancer://DODOMAIN/

</VirtualHost>

 

VirtualHost 태그 내에 다음과 같이 Proxy 설정을 했다고 생각을 해보자.

route=dodomain2 인 문장 맨 뒤에 작성된 status=+H 옵션을 hot-standby라고 한다.

hot standby란, 모든 액트브 서버가 down된 상황(WEB-WAS가 연결이 잘 안되는 상황 포함)인 경우에,

status=+H 로 정의된 BalancerMember에게 일처리가 넘어가는 것을 말한다.

말 그대로 active-standby 구조인 것이다.

 

여기서 액트브 서버가 정상동작하게 되면, standby 서버는 일처리를 멈추고 standby 상태로 돌아가게 된다.

즉, 액티브 서버쪽으로 failback이 일어난다.

 

추가적으로, 나의 설정은 lbmethod가 bybusiness인데,

이 설정은 일을 가장 안 하고 있는 쪽으로 요청을 보내는 방식이다.

그러면 여기서, BalancerMember를 하나 더 추가하고, status=+H까지 같이 추가한다고 해보자.

액티브가 down 되면 어느쪽 멤버가 일을하게 될까?

그건 알 수 없다.

왜냐면 lbmethod가 bybusiness이니 우리는 어느 장비가 일을 덜 처리하는지 알 수 없는 구조이기 때문이다.

apache의 내부동작으로 작동할 뿐이다.

 

lbmethod를 byrequest를 해도, 결국에는 상황에 따라 어느 하나의 standby 서버로 붙을 것이다.

 

반대로 액티브가 두 개인 상황을 놓고봐도,

스탠바이에서 두 개의 액티브 중에 어떤 밸런서가 일을 하게 될지도 우리는 알 수 없다.