티스토리 뷰

728x170

 포스팅은 WebtoB Reverse Proxy를 활용한 로드밸런싱 테스트입니다.


본 포스팅에서는 REVERSE PROXY GROUP의 로드밸런싱과 Sticky Session routing에 대한 설정 및 테스트를 가이드 합니다. 기본적인 REVERSE PROXY 설정은 WebtoB Administrator 메뉴얼을 참조하시기 바랍니다.

 

REVERSE PROXY GROUP 설정은 PROXY(내부 서버)를 여러 개 설정하여 다중 서버를 구성할 경우 사용되며 로드 밸런싱 및 Sticky Session routing을 할 수 있습니다.

 

1. 테스트 환경

구성환경

WebtoB 4.1.9.1 Enterprise (Enterprise Edition에서만 REVERSE PROXY GROUP 설정 사용 가능)

Tomcat 8.5.23

 

2. WebtoB 환경

2.1 REVERSE_PROXY_GROUP 설정

REVERSE_PROXY_GROUP 주요 설정

자세한 REVERSE_PROXY_GROUP 절 설정은 WebtoB Administrator 메뉴얼을 참조하시기 바랍니다.

 

설정 예시(http.m)

...

*REVERSE_PROXY_GROUP

rpg             VhostName = "rpvhost",

                PathPrefix = "/",

ServerPathPrefix = "/",

WBRoutingCookieKey = "RPID",

 FlexibleStickySessionRouting = N

...

 

2.2 REVERSE_PROXY_GROUP 모니터링

wsadmin에서 모니터링

st –rpg 명령으로 REVERSE_PROXY_GROUP에 설정된 rp1, rp2를 모니터링 할 수 있습니다. 기본적으로는 Round Robin으로 동작하며 WBRoutingCookieKey를 설정할 경우 Sticky Session routing으로 동작합니다.

 

3. 이중화 테스트

3.1 Round Robin 테스트

설정 http.m

...

*VHOST

rpvhost        DOCROOT="/home/jang/test1",

                PORT = "28888",

                ServiceOrder = "uri,ext",

                LOGGING = "log1",

                ERRORLOG = "log2",

                HOSTNAME = "test.co.kr"

 

*REVERSE_PROXY_GROUP

rpg             VhostName = "rpvhost",

                PathPrefix = "/",

ServerPathPrefix = "/"

 

*REVERSE_PROXY

rp1

               ServerAddress = "192.168.0.100:28080",

               ReverseProxyGroupName = "rpg"

 

rp2

               ServerAddress = "192.168.0.150:28080",

               ReverseProxyGroupName = "rpg"

...

 

st –rpg 명령으로 REVERSE PROXY GROUP에 설정된 rp1, rp2를 모니터링 하면 총 3번의 요청이 Round Robin으로 rp1 rp2로 각각 요청된 것을 확인 할 수 있습니다.

 

3.2 Session Routing 테스트

설정 http.m

...

*REVERSE_PROXY_GROUP

rpg             VhostName = "rpvhost",

                PathPrefix = "/",

ServerPathPrefix = "/",

WBRoutingCookieKey = "RPID",

...

※ 3.1 Round Robin 테스트의 환경설정과 동일하며 WBRoutingCookieKey 항목이 추가되었음.

 

st –rpg 명령으로 REVERSE PROXY GROUP에 설정된 rp1, rp2를 모니터링 하면 총 3번의 요청이 모두 rp1으로 요청된 것을 확인 할 수 있습니다.

 

3.3 FlexibleStickySessionRouting 테스트

3.3.1 FlexibleStickySessionRouting을 설정한 경우

설정 http.m

...

*REVERSE_PROXY_GROUP

rpg             VhostName = "rpvhost",

                PathPrefix = "/",

ServerPathPrefix = "/",

WBRoutingCookieKey = "RPID",

FlexibleStickySessionRouting = Y

 

*REVERSE_PROXY

rp1            ServerAddress = "192.168.0.100:28080",

                ReverseProxyGroupName = "rpg",

                MaxPersistentServerConnections = 3,

                PersistentServerCheckUrl = "/ping.html"

 

rp2            ServerAddress = "192.168.0.150:28080",

                ReverseProxyGroupName = "rpg",

             MaxPersistentServerConnections = 3,

                PersistentServerCheckUrl = "/ping.html"

...

REVERSE PROXY GROUP절에 FlexibleStickySessionRouting 항목을 Y로 설정하고 REVERSE PROXY절에는 MaxPersistentServerConnectionsPersistentServerCheckUrl을 설정하여 PROXY 서버에서 Tomcat으로 연결하는 Connection의 개수를 3개로 제한하도록 설정합니다.

 

호출 테스트

1) test.co.kr:28888/sleep.jsp 3개의 브라우저에서 호출

- PROXY rp1에서 Tomcat으로 가는 Connection 3개가 모두 RUN 상태로 변경됨.

 

2) test.co.kr:28888/getsession.jsp 호출

- RPID rpg.rp1이지만 rp2 요청되는 것을 확인

 

기본적으로 RPID에 설정된 PROXY 서버로 요청하지만 MaxPersistentServerConnections 만큼의 Connection이 모두 RUN일 경우 다른 PROXY 서버로 요청을 보내는 것을 확인 할 수 있습니다.

※ Flexible routing을 하는 경우 동일한 JSESSIONID를 가진 다른 클라이언트의 요청이 각각 다른 서버로 routing될 수 있으므로 주의해야하며 기본값 사용을 권장합니다.

 

3.3.2 FlexibleStickySessionRouting을 설정하지 않은 경우

설정 http.m

...

*REVERSE_PROXY_GROUP

rpg             VhostName = "rpvhost",

                PathPrefix = "/",

ServerPathPrefix = "/",

WBRoutingCookieKey = "RPID",

...

※ 3.3.1의 환경설정과 동일하며 FlexibleStickySessionRouting = Y 항목만 삭제됨(기본값 : N)

호출 테스트

1) test.co.kr:28888/sleep.jsp 3개의 브라우저에서 호출

- PROXY rp1에서 Tomcat으로 가는 Connection 3개가 모두 RUN 상태로 변경됨.

 

 

2) test.co.kr:28080/getsession.jsp 호출

- 요청이 큐잉되는 것을 확인 할 수 있음

RPID에 설정된 PROXY 서버로 요청하고 MaxPersistentServerConnections 만큼 Connection이 모두 RUN일 경우 해당 PROXY 서버에 큐잉 되는 것을 확인 할 수 있습니다.

 

본 포스팅에서는 REVERSE PROXY GROUP을 활용한 로드밸런싱 방법에 대해 알아보았습니다.

고맙습니다.

그리드형
댓글
댓글쓰기 폼