0부터 시작하는 AWS 공부 - 3 Tier 구축 4편 - 결과 살펴보기

Jaehong Lee·2023년 4월 4일
9
post-thumbnail

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 접속

  • 웹 접속에 대한 전체적인 네트워크 트래픽 흐름은 위와 같다
  1. Client가 ALB DNS 주소에 접속
  2. IGW를 통해 ALB에 트래픽 전달
  3. ALB에서는 대상그룹을 지정한 APACHE 서버에 트래픽 전달
  4. APACHE 서버에서 Reverse Proxy를 통해 NLB에 트래픽 전달
  5. NLB에서는 TOMCAT에 트래픽 전달
  6. TOMCAT에서 MySql로부터 데이터를 불러와서 페이지 구성
  7. 요청이 들어온 순서의 역순으로 HTTP 응답 메세지를 Client에게 전송

  • ALB 주소로 접속하면, MySql 데이터 베이스에 저장한 정보를 이용한 웹 페이지가 잘 출력된다. 재접속할 때마다 WAS 서버에 번갈아 접속된다

  • 데이터를 추가하면, 페이지에 잘 반영된다

AWS 3 Tier 구축 프로젝트 끝!!!

profile
멋진 엔지니어가 될 때까지

1개의 댓글

comment-user-thumbnail
2023년 4월 14일

아주 좋아요

답글 달기