본문 바로가기

dev/WEB and WAS

docker nginx&tomcat load balancing

docker 환경에서 nginx와 tomat을 연동 및 로드밸런싱 하는 방법을 포스팅하겠습니다.

 

nginx을 실행하기에 앞서 먼저 nginx.conf 파일을 따로 작성합니다.

 

nginx.conf 파일 작성

 

저는 /home 디렉토리 밑에 따로 root 디렉토리를 만들어서 nginx.conf 파일을 작성했습니다.

 

nginx.conf 파일에 대해 간략히 설명하면

 

workers_connections는 하나의 nginx 서버에 접속 가능한 클라이언트 개수를 생각하시면 됩니다.

 

upstream은 nginx 서버에서 받은 요청을 처리하는 서버를 가리키는 모듈입니다.

 

그래서 "192.168.0.32:8080" 서버는 main(active) 역할을, "192.168.0.32:8081" 서버는 backup(standby) 역할을 할 예정이고,

 

backup 서버가 5초 안에 응답하지 않으면 동작하지 않는 것으로 간주됩니다.

 

listen은 80번 포트로 nginx 서버를 매핑하고,

 

proxy_pass는 nginx로 들어온 요청을 upstream으로 넘기는 것으로 이해하면 됩니다.

 

여기서 "http://tomcat;"의 "tomcat"과 "upstream"의 "tomcat" 이름은 같아야 합니다.

 

그러면 이제 nginx와 tomcat을 docker로 실행하겠습니다.

 

nginx&tomcat docker 실행

 

위의 화면처럼 nginx와 tomcat을 docker 컨테이너로 실행했습니다.

 

nginx를 컨테이너로 실행할 때 위에서 작성한 nginx.conf 파일을 볼륨 옵션으로 추가했습니다.

 

tomcat을 2개의 컨테이너로 실행할 때는 포트번호(8080/8081, 8009/8010)와 이름(tomcat_main, tomcat_backup)을 따로 줬습니다.

 

그리고 정상적으로 실행됐는지 확인하기 위해 브라우저로 접속합니다.

 

nginx 접속 화면

 

위의 화면처럼 tomcat 접속화면이 보인다면 정상적으로 nginx와 tomcat이 연동된 것입니다.

 

이제 로드 밸런싱이 제대로 되는지 확인하기 위해 tomcat_main 서버를 내립니다.

 

tomcat_main 서버 stop 화면

 

tomcat_main 서버를 내립니다.(docker stop tomcat_main)

 

nginx와 tomcat_backup 컨테이너가 실행 중인지 확인합니다.(docker ps)

 

tomcat_main 서버가 제대로 내려갔는지 확인하기 위해 실시간 로그를 확인합니다.(docker logs -f tomcat_main)

 

tomcat_main 서버가 내려갔는지 확인됐고, tomcat_backup 서버가 작동 중인지 확인하기 위해 다시 브라우저로 nginx 서버에 접속합니다.

 

nginx 접속 화면

위와 같이 tomcat 접속 화면이 보이면 현재 로드 밸런싱이 실행 중인 것을 확인할 수 있습니다.

 

tomcat_backup 실시간 로그 화면

 

아니면 tomcat_backup 서버의 실시간 로그를 확인해서 화면 맨 밑에 커서가 있으면 정상적으로 로드 밸런싱이 되는 것입니다.

 

nginx 실시간 로그 화면

 

또 다른 방법으로 로드 밸런싱을 확인하기 nginx 실시간 로그를 확인하겠습니다.

 

현재 tomcat_backup 서버로 로드 밸런싱이 되는 것을 확인했습니다.

 

그럼 tomcat_main 서버를 다시 실행하면 어떻게 되는지 확인하겠습니다.

 

tomcat_main 재시작 화면

 

tomcat_main 컨테이너를 재시작하고 실시간 로그가 활성화되고 있어서 정상적으로 실행된 것을 확인했습니다.

 

그리고 nginx 서버에 다시 접속하면 다음과 같이 tomcat 접속 화면이 잘 표출됩니다.

 

nginx 접속 화면

 

이번에 nginx와 tomcat 연동 및 로드 밸런싱을 하면서

 

옛날에 했던 apache와 tomcat 연동하는 것에 비해 쉽고 간편해서

 

앞으로는 WEB/WAS는 nginx와 tomcat을 써야겠습니다.

 

nginx.conf 파일 필요하신 분들은 아래에서 다운받으시면 됩니다.

 

nginx.conf
0.00MB

'dev > WEB and WAS' 카테고리의 다른 글

pinpoint-agent 설치  (2) 2021.07.11
nginx 413 에러  (0) 2021.05.26
docker install tomcat  (0) 2021.03.21
docker nginx install  (0) 2021.03.21
apache&tomcat 연동  (0) 2019.07.31