![[AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대 [AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대](https://blog.kakaocdn.net/dn/QXNXQ/btsMj8qv5OX/cWkqSckjPJDQwCIlrE9PWK/img.png)
이 포스팅에서는 아키텍처 버전2를 구축하는 과정을 다룬다.
![[AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대 [AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대](https://blog.kakaocdn.net/dn/6TJf9/btsMi0Aq0Mk/rPkGEoaf63D4BfVLAPpD31/img.png)
버전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대 [AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대](https://blog.kakaocdn.net/dn/dbGEKm/btsMmHsi6e7/cg3S6g3y10F932lDxS5Iqk/img.png)
첫번 째 EC2 인스턴스에 프리티어 스토리지 용량을 최대치인 30GB를 할당했기 때문에 2번 째 3번 째 인스턴스의 스토리지 용량은 t2.micro 유형의 최소용량인 8GB로 할당해서 생성한다.
그리고 외부에서 접속 할 수 있도록 탄력적 IP 각각 할당 후 연결했다.(탄력적 IP 현재 3개 연결)
보안그룹 설정
WAS 서버로 사용할 EC2 2,3번 째 인스턴스의 인바운드 규칙에서 WebServer에게 포트를 허용해줘야 한다.
![[AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대 - 보안그룹 설정 [AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대 - 보안그룹 설정](https://blog.kakaocdn.net/dn/qXTBY/btsMlVreseK/uuJOW1iaBxWkiWGOhBxNRk/img.png)
2번 째 EC2에의 WAS에서 9090포트를 사용할 거라 1번 째 EC2 인스턴스에게 9090포트를 열어줬다.
![[AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대 - 보안그룹 설정 [AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대 - 보안그룹 설정](https://blog.kakaocdn.net/dn/dJ0sNG/btsMmGGWO0k/tkIACRjx22ic4yPMqaUvq0/img.png)
3번 째 EC2에서도 9091포트를 1번 째 EC2 인스턴스에게 허용해줬다.
EC2 1 인스턴스(Nginx)
![[AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대 - EC2 1 인스턴스(Nginx) [AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대 - EC2 1 인스턴스(Nginx)](https://blog.kakaocdn.net/dn/sISFZ/btsMlNGLtsv/XMPPWj68WPaUm5Bktwoeyk/img.png)
EC2 1 인스턴스에서는 위 이미지처럼 Dockerfile과 nginx.conf파일만 있으면 된다.
Dockerfile
![[AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대 - EC2 1 인스턴스(Nginx) - Dockerfile [AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대 - EC2 1 인스턴스(Nginx) - Dockerfile](https://blog.kakaocdn.net/dn/woyIH/btsMmLVIYbX/XZEeqoix68D9C2mqRr5KDK/img.png)
최신 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 [AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대 - EC2 1 인스턴스(Nginx) - nginx.conf](https://blog.kakaocdn.net/dn/bR2rXm/btsMmO5XBv4/fRcdMi4pFDEcAMhk1Q5Ga1/img.png)
EC2 2 인스턴스(Tomcat 1)
테스트용 애플리케이션 war파일과 Dockerfile만 있으면 된다.
![[AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대 - EC2 2 인스턴스(Tomcat 1) [AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대 - EC2 2 인스턴스(Tomcat 1)](https://blog.kakaocdn.net/dn/bp5PzD/btsMkCTOXKp/3oW3132ysVyOgmTa2lecS1/img.png)
Dockerfile
tomcat 이미지 빌드 후 역시 war파일을 배포경로에 옮긴 뒤 실행한다.
![[AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대 - EC2 2 인스턴스(Tomcat 1) - Dockerfile [AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대 - EC2 2 인스턴스(Tomcat 1) - Dockerfile](https://blog.kakaocdn.net/dn/4uYt1/btsMkZuqo2t/oTXEj8FJtqk8npncRdRrEK/img.png)
EC2 3 인스턴스(Tomcat 2)
EC2 2번 인스턴스와 동일하고 포트와 war파일만 다르다.
![[AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대 - EC2 3 인스턴스(Tomcat 2) [AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대 - EC2 3 인스턴스(Tomcat 2)](https://blog.kakaocdn.net/dn/cnB9GD/btsMm3Iz4jZ/zvpajgr9p8zlIAW3jFRG5K/img.png)
문서화 하는 부분(EXPOSE)이 9090으로 잘못 되어 있어서 ppt로 편집을 했다.(여기선 9091을 사용한다)
![[AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대 - EC2 3 인스턴스(Tomcat 2) [AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대 - EC2 3 인스턴스(Tomcat 2)](https://blog.kakaocdn.net/dn/eEEc4W/btsMm1RC4OC/4vXakyqp7P3Ymo9xTO2FwK/img.png)
실행
Nginx
Dockerfile를 먼저 빌드한다.
![[AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대 - 실행 - Nginx [AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대 - 실행 - Nginx](https://blog.kakaocdn.net/dn/dEK6uX/btsMm1qx696/vP0eH3UTeJfxkEzBFCRUxK/img.png)
컨테이너 실행
![[AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대 - 실행 - Nginx [AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대 - 실행 - Nginx](https://blog.kakaocdn.net/dn/HWaHd/btsMlHfE3tW/rY2DG4Ky3KH1sv2oOhtCTK/img.png)
Tomcat 1
빌드 및 컨테이너 실행
![[AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대 - 실행 - Tomcat 1 [AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대 - 실행 - Tomcat 1](https://blog.kakaocdn.net/dn/bdfTh4/btsMm14989X/oD6FuKY8xKPqiNcdITK5DK/img.png)
![[AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대 - 실행 - Tomcat 1 [AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대 - 실행 - Tomcat 1](https://blog.kakaocdn.net/dn/kDoaF/btsMk0UkkOf/iBZ5APCvwKLYfstYSl8T4K/img.png)
Tomcat 2
빌드 및 컨테이너 실행
![[AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대 - 실행 - Tomcat 2 [AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대 - 실행 - Tomcat 2](https://blog.kakaocdn.net/dn/VHRNx/btsMkZOC6wr/Zl2oiXYwdWqDLkhlqLnQ51/img.png)
![[AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대 - 실행 - Tomcat 2 [AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대 - 실행 - Tomcat 2](https://blog.kakaocdn.net/dn/bGUCuA/btsMl840Hv4/TDtyvAXXmlH7DguUjzKjf1/img.png)
결과 확인
브라우저에서 1번 EC2 인스턴스의 public ip를 호출 했을 시 tomcat1,2번의 로그가 번갈아가며 출력되어야 한다.
![[AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대 - 결과 확인 [AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대 - 결과 확인](https://blog.kakaocdn.net/dn/bELhsU/btsMmlwgpV8/fd1LpqpYjGqM03uRiSWjL0/img.png)
![[AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대 - 결과 확인 [AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대 - 결과 확인](https://blog.kakaocdn.net/dn/bRA2TH/btsMmm22xn5/DAj5VQxTFn1LfhmZ8qAQ6k/img.png)
![[AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대 - 결과 확인 [AWS] 개별 EC2 아키텍처 구축 – Nginx 리버스프록시 + Tomcat 2대 - 결과 확인](https://blog.kakaocdn.net/dn/x4JZe/btsMmMUBhsf/Fe6hQLM7uG6dwbAtqpfTcK/img.png)
예상대로 Tomcat1번과 2번에 번갈아가며 로그가 출력된다.
AWS 환경으로 인해 마우스 딸깍 딸깍과 Docker로 금방 구현을 했다.
개인 스터디 기록을 메모하는 공간이라 틀린점이 있을 수 있습니다.
틀린 점 있을 경우 댓글 부탁드립니다.
'IT > DevOps' 카테고리의 다른 글
[AWS] 개별 EC2 아키텍처 + DB 이중화(feat. Multi-AZ) (0) | 2025.02.23 |
---|---|
[AWS] 프리티어 과금 경험 기록 (0) | 2025.02.15 |
[AWS] EC2 Nginx Reverse Proxy(feat. Docker compose) (1) | 2025.02.15 |
[AWS] AWS RDS 인스턴스 구축 (0) | 2025.02.08 |
[AWS] AWS EC2에서 Docker-compose로 Nginx, Tomcat 연동 (0) | 2025.02.08 |
댓글