목차

websocket 설정 방법

LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so

<Proxy balancer://TEST_WS>
    BalancerMember ws://192.168.0.81:8080 route=node11 timeout=5 retry=300
    BalancerMember ws://192.168.0.82:8080 route=node21 timeout=5 retry=300
    ProxySet lbmethod=byrequests failontimeout=on
    #ProxySet stickysession=JSESSIONID|jsessionid
</Proxy>

<Proxy balancer://TEST_HTTP>
    BalancerMember http://192.168.0.81:8080 route=node11 timeout=5 retry=300
    BalancerMember http://192.168.0.82:8080 route=node21 timeout=5 retry=300
    ProxySet lbmethod=byrequests failontimeout=on
    #ProxySet stickysession=JSESSIONID|jsessionid
</Proxy>

RewriteEngine On

RewriteCond %{HTTP:Connection} upgrade [NC]
RewriteCond %{HTTP:Upgrade} websocket [NC]
RewriteRule /jboss-websocket-hello/(.*)               balancer://TEST_WS/jboss-websocket-hello/$1 [P,L]

ProxyPass /jboss-websocket-hello balancer://TEST_HTTP/jboss-websocket-hello
ProxyPassReverse /jboss-websocket-hello balancer://TEST_HTTP/jboss-websocket-hello

timeout 옵션

해당 옵션은 balancer가 정상인지 판단하기 위한 타임아웃 시간이다. 지정된 시간동안 응답이 없는경우 해당 노드가 fail상태로 판단한다.

retry 옵션

해당 옵션은 balancer가 fail상태일때 재시도할때까지의 지연시간이다. 즉 fail상태가 되면 300초동안은 해당 노드로 요청을 하지 않다가 300초가 지나면 다시 시도하도록 한다.

ProxySet

해당 밸런서의 속성값을 정의 하는 부분이다. 위에서 정의된 예시중 lbmethod=byrequests failontimeout=on 부분은
밸런싱 메소드를 request단위로 밸런싱 하겠다는 부분과, 위의 timeout과 retry 속성을 통한 failover를 사용하겠다는 설정이다.

참조 : https://httpd.apache.org/docs/current/mod/mod_proxy.html