IT/DevOps

[AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대

어흥꼬비 2025. 2. 15.

[AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대

이 포스팅에서는 아키텍처 버전2를 구축하는 과정을 다룬다.

[AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대

버전1에서는 Web, WAS1,2번을 하나의 EC2 인스턴스에서 Docker compose로 관리했지만

이번에는 각 서버를 개별 EC2 인스턴스로 분리했고 각 서버에서 Docker로 컨테이너로 서비스를 실행시킨다.

크게 어려울 건 없고 중요한 점WAS1,2번 서버에서 인바운드 규칙EC2 1번 Nginx 서버에게 9090, 9091포트(개발자 마음)를 허용해줘야 하고 RDS에서 2,3번 EC2 서버에게 3306포트를 허용해야 한다.

[AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대

첫번 째 EC2 인스턴스에 프리티어 스토리지 용량을 최대치인 30GB를 할당했기 때문에 2번 째 3번 째 인스턴스의 스토리지 용량t2.micro 유형의 최소용량8GB로 할당해서 생성한다.

그리고 외부에서 접속 할 수 있도록 탄력적 IP 각각 할당 후 연결했다.(탄력적 IP 현재 3개 연결)

보안그룹 설정

WAS 서버로 사용할 EC2 2,3번 째 인스턴스인바운드 규칙에서 WebServer에게 포트를 허용해줘야 한다.

[AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대 - 보안그룹 설정

2번 째 EC2에의 WAS에서 9090포트를 사용할 거라 1번 째 EC2 인스턴스에게 9090포트를 열어줬다.

[AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대 - 보안그룹 설정

3번 째 EC2에서도 9091포트1번 째 EC2 인스턴스에게 허용해줬다.

EC2 1 인스턴스(Nginx)

[AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대 - EC2 1 인스턴스(Nginx)

EC2 1 인스턴스에서는 위 이미지처럼 Dockerfile과 nginx.conf파일만 있으면 된다.

Dockerfile

[AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대 - EC2 1 인스턴스(Nginx) - Dockerfile

최신 nginx 버전으로 이미지를 가져오고 nginx.conf를 복사 한 뒤 80으로 포트를 문서화한다.

nginx.conf

upstream에서  server뒤의 아이피를 EC2 2,3번의 private IP를 입력한다.

AWS 환경내에서 같은 VPC안에 속해 있기 때문에 사설 아이피를 입력해주면 된다.

[AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대 - EC2 1 인스턴스(Nginx) - nginx.conf

EC2 2 인스턴스(Tomcat 1)

테스트용 애플리케이션 war파일과 Dockerfile만 있으면 된다.

[AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대 - EC2 2 인스턴스(Tomcat 1)

Dockerfile

tomcat 이미지 빌드 후 역시 war파일을 배포경로에 옮긴 뒤 실행한다.

[AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대 - EC2 2 인스턴스(Tomcat 1) - Dockerfile

EC2 3 인스턴스(Tomcat 2)

EC2 2번 인스턴스와 동일하고 포트와 war파일만 다르다.

[AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대 - EC2 3 인스턴스(Tomcat 2)

문서화 하는 부분(EXPOSE)이 9090으로 잘못 되어 있어서 ppt로 편집을 했다.(여기선 9091을 사용한다)

[AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대 - EC2 3 인스턴스(Tomcat 2)

 

실행

Nginx

Dockerfile를 먼저 빌드한다.

[AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대 - 실행 - Nginx

컨테이너 실행

[AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대 - 실행 - Nginx

Tomcat 1

빌드 및 컨테이너 실행

[AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대 - 실행 - Tomcat 1
[AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대 - 실행 - Tomcat 1

Tomcat 2

빌드 및 컨테이너 실행

[AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대 - 실행 - Tomcat 2
[AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대 - 실행 - Tomcat 2

결과 확인

브라우저에서 1번 EC2 인스턴스의 public ip를 호출 했을 시 tomcat1,2번의 로그가 번갈아가며 출력되어야 한다.

[AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대 - 결과 확인
[AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대 - 결과 확인
[AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대 - 결과 확인

예상대로 Tomcat1번과 2번에 번갈아가며 로그가 출력된다.

AWS 환경으로 인해 마우스 딸깍 딸깍과 Docker로 금방 구현을 했다.


개인 스터디 기록을 메모하는 공간이라 틀린점이 있을 수 있습니다.

틀린 점 있을 경우 댓글 부탁드립니다.

댓글