보통 미들웨어 전환 시에 주로 발생하는 현상이며, 글쓴이의 경우에는 Oracle OHS -> LENA Web으로 전환 후 간헐적 Proxy Error(502)가 발생하는 현상을 겪었으며 이에 대해 원인과 해결 방법에 대해 공유하고자 한다.
최근 O 고객사 미들웨어 전환 프로젝트를 진행하며 겪은 일이며 상황은 이렇다.
아키텍처 구조의 변화는 없이 Web/WAS 솔루션만 Oracle사의 제품에서 LG CNS의 LENA로 변경하였음.
아키텍처 구조
- L4 VIP -> Web -> L4 VIP -> WAS미들웨어 전환
- Web은 OHS -> LENA Web (OSS: Apache HTTPD Based)
- WAS는 WLS -> LENA WAS (OSS: Tomcat Based)현상
- LENA Web에서 간헐적으로 Proxy Error(502)가 발생
- Error Log 중, Backend(Client IP)에 의해 Connection reset by peer가 간헐적으로 발생원인
- 기존 OHS의 경우 mod_wl_ohs 플러그인을 이용해 backend(L4 VIP)에 연결되어 있었음.
- 해당 플러그인 KeepAliveSecs=20 (default) 값에 의해 idle connection에 대한 keep alive 유지 기간이 설정되어 있었음.
- LENA Proxy 설정의 경우, ttl로 동일한 설정이 가능하나 default 값이 unlimited로 되어 있음.
- 하여 L4 Session Timeout에 의해 LENA Web과 L4 간의 idle한 커넥션에 대해 소켓 연결을 L4에서 끊었지만 실제로 LENA Web에서는 그 사실을 인지하지 못하고 이미 끊어진 연결을 재사용할 때 발생하는 에러로 확인 되었음.조치
- LENA의 Proxy 설정(proxy_lb_default.conf)에서 BalancerMember 파라미터에 ttl=20을 추가하여 해결함.
이번 사례를 통해 미들웨어 전환 시에 해당 제품 자체 플러그인 모듈로 연동하는 경우 Default 값을 고려하여 꼼꼼히 분석해야겠다고 배우게 되었음.
※ 참고
WLS 플러그인 모듈 default 설정 - https://docs.oracle.com/middleware/11119/webtier/develop-plugin/plugin_params.htm
Apache Based ttl 설정 - https://httpd.apache.org/docs/current/mod/mod_proxy.html