# 테스트 환경
- OS : Oracle Linux Server release 8.6
- JDK : 1.8
- Tomcat : 9.0.89
- Nginx ver. : 1.14.1
Nginx와 Nginx Plus는 upstream에 속해 있는 서버들을 지속적으로 테스트하고 사용 불가능한 서버에는 요청을 분기시키지 않으며 다시 복구된 서버를 LB 그룹에 추가할 수 있다.
다만 Open Source Nginx의 경우엔 수동적인 health check만 가능하며 활성 상태 및 active 활동 모니터링 대시보드 사용을 위해서는 Nginx Plus를 사용해야 한다.
따라서 현재 환경에선 수동 Health Check만 테스트 진행
1. 테스트 환경 및 설정
WAS는 tomcat으로 통일하여 tomcat_1, tomcat_2 두 대를 준비
nginx.conf에 max_fails와 fail_timeout 설정을 추가
- max_fails : 서버가 사용할 수 없음으로 표시되는 동안 발생하는 실패 시도 횟수를 지정할 수 있음
max_fails=3 으로 설정할 경우
트랜잭션이 들어왔을 때 해당 서버에 3회 연결을 요청하고
만약 3회 모두 응답이 없을 경우 사용 불가능한 서버로 인식
- fail_timeout : 서버가 사용 불가능하다고 판단되기까지 실패한 시도 횟수가 발생하는 시간과 사용 불가능하다고 판단되면 해당 판단이 유지되는 시간
fail_timeout=30s 으로 설정할 경우
30초 안에 max_fails 설정값 만큼을 서버에 요청하고 사용 불가능한 서버라고 판단될 경우 30초 동안 해당 상태를 유지
또한 30초마다 서버 사용 가능, 불가능을 판단하기 위해 요청을 보냄
아래는 테스트를 위해 로컬에 설정한 내용이다.
upstream was {
server 192.168.56.230:8080;
server 192.168.56.231:8080 max_fails=5 fail_timeout=20s;
}
LB 방식은 Round Robin 형태로 하여 각 서버로 번갈아 가며 요청을 보낸다.
231 서버에 추가적으로 설정한 값에 대한 설명은 아래와 같다.
- 231 서버에 최초 5회 호출 요청 후 응답이 없을 경우 사용 불가능한 상태로 인식으로 하고 해당 상태를 20초 동안 유지한다.
- 20초가 지난 시점에 231 서버에 다시 호출 요청을 하여 여전히 사용 불가능 상태인지 아니면 현재는 active 한 상태인지 확인한다.
2. 테스트 진행
각 tomcat 서버에 배포되어 있는 어플리케이션 중 sessionTest.jsp 페이지를 지속적으로 호출하는 테스트를 진행.
현재 LB 형태는 Round Robin으로 tomcat_1과 tomcat_2에 1:1로 요청을 분기 및 호출을 요청하였다.
tomcat_1의 경우 Running 상태이기 때문에 지속적으로 호출이 쌓이고 있지만 tomcat_2의 경우 Shutdown 상태이기 때문에 upstream에 작성한 설정값대로
5번 호출 후 사용 불가능 서버로 판단되어 더이상 요청을 분기시키지 않는 것을 확일 할 수 있다.
해당 상태 유지 및 재 테스트 시간인 20초가 지나자 nginx는 tomcat_2번 서버에 다시 호출을 요청했고 여전히 사용 불가능인 상태라고 판단하여 다시 20초 동안 호출을 분기시키지 않는다.
'WEB > NGINX' 카테고리의 다른 글
NGINX Log 설정 (0) | 2024.10.31 |
---|---|
Nginx 보안 취약점 (0) | 2024.08.22 |
HTTP to HTTPS Redirect (0) | 2024.07.31 |
13: Permission denied while connecting to upstream (0) | 2024.07.30 |
nginx & WAS 연동 (0) | 2024.07.30 |