0부터 시작하는 AWS 공부 - 3 Tier 구축 4편 - 결과 살펴보기
3 Tier 프로젝트 구축 결과를 살펴보자
VPC
- VPC 는 위와 같이 구성했다
- Subnet은 2 개의 Public Subnet, 6 개의 Private Subnet으로 구성했다
- Subnet은 2 개의 가용 영역 위에 구성했다
- 각 Subnet의 네트워크 대역은 위와 같이 구성했다
- Nat Gateway : Private Subnet의 인스턴스가 외부와 통신하기 위한 Gateway로 Public Subnet에 위치
- NAT ROUTE TABLE : Private Subnet에서 외부의 주소로 향할 때, NAT 게이트웨이를 거쳐가기 위한 라우팅 테이블
- Internet Gateway : Bastion Host와 Nat Gateway가 외부망과 통신하기 위한 게이트웨이
- INTERNET ROUTE TABLE : Public Subnet에서 외부의 주소로 향할 때, 인터넷 게이트웨이를 거쳐가기 위한 라우팅 테이블
EC2
- 구성 계획에 따라 Bastion Host, WEB, WAS, DB 총 6 개의 인스턴스가 존재한다
보안 그룹
- 보안 그룹은 5개가 존재한다
- ALB를 위한 보안그룹, Bastion Host를 위한 보안그룹, WEB / WAS/ DB 각각을 관리하기 위한 보안그룹으로 구성된다
Bastion Host 보안그룹
- SSH 접속에 대한 전체적인 네트워크 트래픽 흐름은 위와 같다. 각 인스턴스에 대한 작업은 Bastion Host를 통한 SSH 우회 접근을 하며, 대칭 키를 이용한 서버 인증과 비대칭 키를 이용한 사용자 인증을 한다
- 작업 서버에 대해서만 22번 포트에 대해 인바운드를 허용했고, 아웃바운드는 WEB / WAS / DB 보안그룹을 대상으로 22번 포트에 대해 트래픽이 나가는 것을 허용했다
ALB 보안그룹
- ALB의 경우, 외부에서 HTTP 트래픽이 들어오면, WEB 서버의 80번 포트로 HTTP 트래픽을 전달해주어야 한다
- Application Load Balancer의 보안그룹의 경우, 모든 주소에 대해 HTTP 프로토콜을 통한 접근을 허용하고, 해당 트래픽을 WEB 서버에 전달할 수 있도록, WEB 서버를 향해 트래픽이 나갈 수 있게 규칙을 생성했다
WEB 보안그룹
- WEB의 경우, ALB로 부터 전달 받은 트래픽을 Reverse Proxy를 통해 NLB에 전달한다
- 인바운드의 경우 ALB 보안그룹을 대상으로 80번 포트로 들어오는 것을 허용한다
- 아웃바운드의 경우, NLB 인스턴스는 보안그룹이 없기 때문에 대상으로 보안그룹을 지정할 수 없다. 따라서, NLB가 위치한 서브넷 네트워크 대역에 대해 8080번 포트를 향해 나가는 트래픽을 허용하도록 해야 한다
WAS 보안그룹
- WAS의 경우, NLB로부터 전달 받은 트래픽을 처리하고, DB로부터 데이터를 가져와야 한다
- NLB 가 위치한 서브넷에 대해 8080번 포트로 들어오는 트래픽을 허용하고, DB 보안그룹에 대해 3306 포트로 트래픽을 보내도록 허용하자
DB 보안그룹
- DB의 경우, 인바운드만 설정해주면 된다. WAS 서버로부터 8080번 포트로 트래픽이 들어오도록 허용하자
- 보안그룹은 Stateful이다. 들어온 요청 트래픽 정보를 기억하고, 해당 정보를 이용하여 응답 트래픽을 보내기에, 응답에 대한 아웃바운드 규칙을 허용해주지 않아도 된다
ALB
- ALB 인스턴스는 2 개의 가용 영역에 위치한 Public Subnet에 위치한다
- ALB 인스턴스의 80번 포트를 Listen 상태로 설정하였고, 해당 포트로 들어오는 트래픽은 대상 그룹의 WEB 인스턴스로 전달하게 설정했다
- 대상 그룹으로 WEB 인스턴스 2 개를 등록하였다
NLB
- NLB 인스턴스는 2 개의 가용 영역에 위치한 Web Private Subnet에 위치한다
- NLB 인스턴스의 8080번 포트를 Listen 상태로 설정하였고, 해당 포트로 들어오는 트래픽은 대상 그룹은 WAS 인스턴스로 전달하게 설정했다
- NLB의 대상 그룹으로 WAS 인스턴스 2 개를 지정했으며, 8080 포트를 향한 TCP 프로토콜을 통해 헬스체크 하도록 설정했다
WEB 접속
- 웹 접속에 대한 전체적인 네트워크 트래픽 흐름은 위와 같다
- Client가 ALB DNS 주소에 접속
- IGW를 통해 ALB에 트래픽 전달
- ALB에서는 대상그룹을 지정한 APACHE 서버에 트래픽 전달
- APACHE 서버에서 Reverse Proxy를 통해 NLB에 트래픽 전달
- NLB에서는 TOMCAT에 트래픽 전달
- TOMCAT에서 MySql로부터 데이터를 불러와서 페이지 구성
- 요청이 들어온 순서의 역순으로 HTTP 응답 메세지를 Client에게 전송
- ALB 주소로 접속하면, MySql 데이터 베이스에 저장한 정보를 이용한 웹 페이지가 잘 출력된다. 재접속할 때마다 WAS 서버에 번갈아 접속된다
AWS 3 Tier 구축 프로젝트 끝!!!
아주 좋아요