티스토리 뷰
본 포스팅은 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
REVERSE_PROXY_GROUP 주요 설정
※ 자세한 REVERSE_PROXY_GROUP 절 설정은 WebtoB Administrator 메뉴얼을 참조하시기 바랍니다.
설정 예시(http.m)
...
*REVERSE_PROXY_GROUP
rpg VhostName = "rpvhost",
PathPrefix = "/",
ServerPathPrefix = "/",
WBRoutingCookieKey = "RPID",
FlexibleStickySessionRouting = N
...
wsadmin에서 모니터링
st –rpg 명령으로 REVERSE_PROXY_GROUP에 설정된 rp1, rp2를 모니터링 할 수 있습니다. 기본적으로는 Round Robin으로 동작하며 WBRoutingCookieKey를 설정할 경우 Sticky Session routing으로 동작합니다.
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절에는 MaxPersistentServerConnections와 PersistentServerCheckUrl을 설정하여 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을 활용한 로드밸런싱 방법에 대해 알아보았습니다.
고맙습니다.
'④ 미들웨어 > ⓦ WebtoB' 카테고리의 다른 글
[WebtoB] Caching Test (0) | 2018.07.06 |
---|---|
[WebtoB] 로드밸런싱 테스트 (0) | 2018.07.05 |
[Web Server] SSL 설정 가이드 (0) | 2018.06.29 |
[Web Server] WEBTOB 사용 포트 가이드 (0) | 2018.06.07 |
[WebtoB] Access 절 활용 (0) | 2018.03.25 |
- Total
- Today
- Yesterday
- OpenStack
- 쿠버네티스
- 오픈스택
- openstack token issue
- SWA
- wildfly
- webtob
- Architecture
- nodejs
- openstack tenant
- k8s
- API Gateway
- Da
- node.js
- MSA
- SA
- JEUS7
- 아키텍처
- 마이크로서비스
- aws
- aa
- JEUS6
- Docker
- git
- apache
- kubernetes
- JBoss
- jeus
- TA
- 마이크로서비스 아키텍처
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |