0부터 시작하는 AWS 공부 - 3 Tier 구축 1편 - 구축 계획 & VPC & Bastion Host

Jaehong Lee·2023년 3월 27일
9
post-thumbnail

1. 구축 계획

아키텍쳐 정보

위의 3 tier 아키텍쳐를 구현해보자

  • Internet Gateway : 인터넷과 연결용
  • Nat Gateway : Private Subnet의 인스턴스들이 외부와 통신하기 위해 사용
  • ALB : 외부 사용자들이 WEB에 접근하기 위해 사용
  • Bastion Host : 개발 및 관리시 해당 노드에 접속하여 각 인스턴스에 ssh를 통해 우회 접근한다
  • NLB : WEB의 APACHE가 WAS의 TOMCAT과 연결할때, NLB를 사용한다.
  • 각 보안그룹은 INBOUND에는 서비스하는 포트를, OUTBOUND에는 이전 단계의 인스턴스를 위해 포트를 설정하자 ( WEB - 80 & 22 , WAS - 8080 & 22 , DB - 3306 & 22 , Bastion Host - 22 )

3 Tier

3 Tier 구조란?

  • 어떠한 플랫폼이나 애플리케이션을 3 계층으로 나누어 별도의 논리적 / 물리적인 장치에 구축 및 운영하는 형태. 보통 프레젠테이션 계층, 어플리케이션 계층, 데이터 계층으로 나눈다

계층 설명

  • 프레젠테이션 계층 : 사용자가 애플리케이션과 상호작용하는 애플리케이션의 사용자 인터페이스. 일반적으로 HTML, JS, CSS 등이 이 계층에 포함되며, 프론트엔드 OR GUI라고 부른다
  • 애플리케이션 계층 : 요청되는 정보를 어떠한 규칙에 따라 처리하고, 가공한다. 미들웨어 OR 백엔드로 불린다
  • 데이터 계층 : 데이터 베이스와 데이터 베이스에 접근하여 데이터를 CRUD 한다

장점

  1. 각 계층이 분리되어 있어 계층별 작업을 나눌 수 있으므로 업무 분담이 가능해지고, 계층별 서로 다른 팀이 동시에 개발할 수 있으므로 업무 효율성이 증가한다
  2. 서버를 계층별 독립적으로 존재하기에 확장하기 편하다
  3. 한 계층에서 일어난 장애가 다른 계층의 가용성이나 성능에 큰 영향을 미치지 않는다
  4. 계층별 순차적인 접근으로 인해 외부에서 직접적인 접근이 불가능하므로, 보안적인 측면에서 2계층이나 1계층보다 좋다

단점

1,2 계층보다 관리가 더 필요하며, 설계 및 구축이 어렵다. 또한, 비용이 많이 발생한다


서버 구성

참조 : https://velog.io/@kdhyo/Apache-Tomcat-%EB%91%98%EC%9D%B4-%EB%AC%B4%EC%8A%A8-%EC%B0%A8%EC%9D%B4%EC%A7%80

  • 컴파일 설치를 통해 Apache, Tomcat, MySql을 설치해보자

컴파일 설치 vs 패키지 설치

이번 프로젝트에서는 Apache, Tomcat, MySql을 소스 설치 방식을 통해 설치한다. 그렇다면, 소스 설치와 패키지 설치의 차이점을 알아보자

컴파일 설치는 세부적인 설정 및 기능 선택을 통해 불필요한 기능 및 파일 설치를 방지하여 자원 낭비를 방지할 수 있으며, 직접 컴파일을 하기에 해당 시스템에 안정적이고, 적합하고, 효율적인 구성이 가능하다


인스턴스 사양

  • 위 사양에 맞게 생성해주자

VPC 및 서브넷 설정

  • VPC 네트워크 대역 : 10.0.118.0/24
  • 서브넷의 개수 : 8개
  • 서브넷 주소
서브넷대역공인 IP허용 포트
public nat10.0.118.0/28탄력적 IP
public bastion10.0.118.16/28탄력적 IP22
private web110.0.118.32/2880,22
private web210.0.118.48/2880,22
private was110.0.118.64/288080,22
private was210.0.118.80/288080,22
private db110.0.118.96/283306,22
private db210.0.118.112/28

2. 네트워크 구축

VPC 생성

  • 계획한 네트워크 대역으로 VPC를 생성하자. 이름과 태그에 주의해야 한다

VPC는 기본적으로 리전당 5개로 제한되있으므로, 더 생성하고 싶으면, 따로 개수 제한을 늘려야 한다


Subnet 생성

  • 해당 VPC에 Subnet 8개를 추가하자. 미리 계획한대로 네트워크 대역을 설정하며, 가용영역은 아키텍쳐 그림과 같이 a와 c 구분해야 한다
  • 그런데 생성 화면에는 Private / Public 설정이 없다? AWS에서 Public / Private은 인터넷 게이트웨이에 연결되있느냐 아니냐로 구분된다

  • 8개를 모두 생성하자

Internet Gateway

Public Subnet은 Internet Gateway를 통해 외부망 ( 인터넷 ) 과 연결된 서브넷이다. 따라서 Internet Gateway와 nat & bastion Subnet을 연결해야 한다

  • 인터넷 게이트웨이를 생성하자

  • VPC에 연결을 누르자

  • 연결할 VPC를 선택하자

하지만 생성하고, 연결한다고 끝이 아니다. 이제 트래픽이 전달될 수 있게, 라우팅 테이블을 설정하자


Internet - Routing Table

  • 라우팅 테이블을 생성하자

라우팅 테이블은 서브넷에서 밖으로 나가는 아웃바운드에 대한 라우팅 경로를 설정하는 것으로, 목적지와 타겟을 설정한다. 패킷의 목적지가 설정한 목적지라면, 해당하는 타켓으로 라우팅 해준다

  • 먼저, 모든 모든 IP 주소에 대해 인터넷 게이트웨이로 라우팅하게끔 설정하자
  • local은 기본 라우팅 설정으로 VPC 내부 네트워크에 대한 트래픽은 local ( 내부 통신 ) 하게끔 설정된 것이다

  • 그런 다음, Public 서브넷을 연결해주자
  • Nat Gateway는 Internet Gateway와 연결된 서브넷 ( 퍼블릭 서브넷 )에 위치해야 한다!! Nat Gateway도 외부망과 연결되어야 하기 때문이다

NAT Gateway

  • NAT GW를 생성해주자. 유형이 프라이빗이라면, 외부와 통신이 안되기에 퍼블릭으로 설정하자.
  • 탄력적 IP는 외부와 통신하기 위한 IP로, 인스턴스에서 외부와 통신을 할 때 사용하는 출발지 IP이다. 하나 할당해주자

하지만, 이 역시 라우팅 테이블 설정이 필요하다


NAT - Routing Table

  • 라우팅 테이블을 생성하자

  • 모든 주소에 대해 NAT GW를 타겟을 하자

  • Private Subnet을 모두 연결해주자

  • 네트워크 기본 구성이 끝났다! 이제 LB, EC2, 보안그룹 설정을 해주면 된다!

3. Bastion Host

Bastion Host 생성

사양 설정은 위 그림에 따라 설정하면 되므로, 따로 사진을 두진 않는다. 서브넷 지정에 주의하자!

  • 키페어를 생성하자. 해당 키페어를 이용해 Putty로 접속해야 하므로 잃어버리면 안된다!!!

  • 보안 그룹의 경우, 인바운드는 나만 ssh 접속 가능하게 설정하자
  • 아웃바운드의 경우, 추후 다른 인스턴스를 생성 후 추가할 계획이다

탄력적 IP 할당

해당 Bastion Host에 접속하려면 Public IP가 필요하다

  • 탄력적 IP를 할당하자

  • 탄력적 IP 연결을 누르자

  • Bastion Host 인스턴스를 선택해서 연결해주자

Bastion Host 접속

  • Putty에 들어가서 퍼블릭 주소를 입력하자

  • Private Key를 지정하자

  • ec2-user로 접속이 된다

WEB & WAS & LB 생성 및 연동은 다음 편에서 이어집니다

https://velog.io/@lijahong/0%EB%B6%80%ED%84%B0-%EC%8B%9C%EC%9E%91%ED%95%98%EB%8A%94-AWS-%EA%B3%B5%EB%B6%80-3-Tier-%EA%B5%AC%EC%B6%95-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-2-WEB-WAS-LB

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

0개의 댓글