Cloud/Project

AWS 3-tier Architecture Network ( SG, ELB )

dodomp0114 2021. 3. 13. 19:14

AWS 3-tier Architecture  프로젝트 (구성도)

AWS 3-tier Architecture  (VPC, Subnet, NAT, Routing Table)

 

저번 시간에 이어서 AWS 3-tier Architecture 네트워크 구성을 해보겠습니다.

실제 구성에 앞서, 오늘 구성해볼 SG, ELB에 대해서 알아보겠습니다.

SG ELB 

 

● SG 

  - 보안 그룹은 인스턴스에 대한 인바운드 및 아웃바운드 트래픽을 제어하는 가상 방화벽 역할을 합니다.

    VPC에서 인스턴스를 시작할 때 최대 5개의 보안 그룹에 인스턴스를 할당할 수 있습니다.

    보안 그룹은 서브넷 수준이 아니라 인스턴스 수준에서 작동하므로 VPC에 있는 서브넷의 각 인스턴스를

    서로 다른 보안 그룹 세트에 할당할 수 있습니다.

    

인바운드 

   - 클라이언트가 서버 내부로 들어오는 것 을 말합니다. ( 클라이언트가 서버로 업로드하는 것 )

     대표적으로 windows의 방화벽에서는 모든 접속이 기본적으로 차단되어있습니다.

     자신의 컴퓨터로 들어오기 시작하는 네트워크 데이터를 말합니다.

 

아웃바운드

   - 서버 밖으로 나가는 것을 말합니다. ( 클라이언트가 다운로드하는 것 )

      대표적으로 windows 의 방화벽에서는 모든 접속이 기본적으로 허용되어있습니다.

      자신의 컴퓨터에서 나가기 시작하는 네트워크 데이터

      

NAME TYPE PORT SOURCE
Bastion-SG SSH 22 0.0.0.0/0
EXELB-SG HTTP 80 0.0.0.0/0
WEB-SG HTTP 80 0.0.0.0/0
INELB-SG HTTP 8080 WEB-SG
WAS-SG HTTP 8080 INELB-SG
DB-SG HTTP 3306 WAS-SG

 

▶ Bastion Host - SG

  - Bastion Host는 private subnet으로 들어가기 위한 일종의 프록시 서버인데 이 Bastion Host에 접속하기 위해서

    SSH로 접속을 해야 됩니다.

    SSH의 포트 번호인 22와 모든 ip에서 접속할 수 있도록 소스를 0.0.0.0/0으로 설정합니다.

 

Bastion-SG

이처럼 Bastion Host - SG 가 생성되었습니다.

인바운드 - SSH ( 모든 ip 에서 허용 )

아웃바운드 - 모두 허용

 

▶ External Load Balancer - SG

   - External Load Balancer 는 외부에서 들어오는 네트워크 데이터를 WEB서버로

     자동 분배해주는역할을 맡고 있습니다.

     private subnet에 존재하며, 웹서버로 통하는 데이터를 받아서 나누어줘야 되기 때문에 인바운드는 HTTP,

     80포트를 설정하게 됩니다. 접속은 모든 ip에서 허용으로 설정해주겠습니다.

 

External Load Balancer - SG

인바운드 - HTTP ( 모든접속 허용 )

아웃바운드 - 모두 허용 (Default)

 

▶ WEB - SG

   - WEB서버는 웹브라우저 클라이언트로부터 요청을 받아서 정적인 컨텐츠를 제공합니다.

     External Load Balancer 에서 들어온 데이터를 받습니다.

     WEB서버에는 APACHE가 설치되어있으며, 기본적으로 HTTP 프로토콜, 80 포트를 사용합니다.

     

WEB - SG

인바운드 - HTTP, 80번 포트 ( 모든 ip에서 접속 허용 )

아웃바운드 - 모두 허용

 

▶ Internal Load Balancer - SG

    - WEB 서버를 거처 WAS 서버로 가는 데이터를 분배해주는 역할을 합니다.

      WEB서버에서 나오는 데이터를 WAS서버로 전달해주어야 되기 때문에 WEB 보안 그룹과 

      8080 포트를 설정해줍니다.

      

Internal Load Balancer

인바운드 - 사용자 지정 TCP / 8080포트 ( WEB 보안 그룹을 거친 데이터만 허용 )

아웃바운드 - 모두 허용

 

▶ WAS - SG

   - HTTP를 통해 들어온 요청을 동적인 컨텐츠를 제공합니다.

     Internal Load Balancer를 통해 분배되어 전달된 데이터를 수행합니다.

     Internal Load Balancer 보안 그룹을 통해 들어온 데이터만 통과할 수 있습니다. 

     APACHE Tomcat의 8080 포트로 설정합니다.

     

 

WAS - SG

인바운드 - 사용자 지정 TCP / 8080 ( Internal Load Balancer 보안 그룹을 거친 데이터만 허용 )

아웃바운드 - 모두 허용

 

▶ DB - SG

   - WAS에서 넘어온 데이터를 반환해줍니다.

     WAS 보안그룹을 통하여 들어온 데이터만 통과 가능합니다.

     MYSQL DB를 설정하며, 3306 포트를 사용합니다.

 

DB - SG

인바운드 - 3306 포트 ( WAS 보안 그룹을 거친 데이터만 허용)

아웃바운드 - 모두 허용

 

 

이로써 총 6개의 보안 그룹이 생성된 걸 확인할 수 있다.

 

● ELB ( Elastic Load Balancing )

    - 로드 밸런싱이란, 서버에 가해지는 요청 등 부하를 적절하게 분배해주는 역할을 맡고 있습니다.

      네트워크 기법인 라운드 로빈 알고리즘을 사용합니다.

     

      이제부터 만들게 될 EX-ELB는 외부 인터넷에서 들어오는 요청을 public zone에서 private zone에 있는 

      WEB서버들에게 골고루 배분해주는 역할입니다.

      IN-ELB는 WEB를 거쳐 동적인 컨텐츠를 요구하는 요청들을 WAS 서버들로 분배해서 전달해주는 역할입니다.

 

      EX-ELB

      외부로부터 들어오는 요청을 WEB서버로 나누어주는 역할인 External Load Balanacer부터 생성해보겠습니다.

       

      파란색 Load Balancer 생성 버튼을 눌러줍니다.

     

Load Balancer 생성

Load Balancer에서 Application Load Balancer을 클릭하여줍니다.

 

Load Balancer 유형 선택

▶1단계 : Load Balancer 구성

유형 선택을 한 뒤 이름과 체계, 아이피 주소 유형을 선택합니다.

이름은 EX-ELB, 체계는 외부와 통신할 수 있는 인터넷 경계를 선택, ipv4를 선택합니다.

 

 

 

VPC는 3 tier VPC와 미리 설정해둔 가용 영역을 선택해줍니다.

External Load Balanacer는 외부 인터넷에서 들어온 요청을 배분해줘야 하므로

public subnet으로 설정해줍니다.

 

 

▶ 2단계 : 보안 설정 구성

HTTPS 보다 보안에 취약한 HTTP를 설정해서 경고문이 뜨지만 그냥 넘어가 줍니다.

 

3단계 : 보안 그룹 구성

앞에서 만들어 두었던 EX-ELB-SG 보안 그룹을 선택해줍니다.

 

 

▶ 4단계 : 라우팅 구성

Load Balancer로 들어온 요청을 어떤 대상에게 보내는지, 어떤 프로토콜과 포트를 사용하는지 등을 설정해줍니다.

 

▶ 5단계 : 대상 등록

Load Balancer를 통해 들어온 데이터를 어떤 인스턴스로 보낼 것인지 대상 등록을 하는  과정입니다.

WEB1,2를 골랐어야 하지만 지금은 만들어두지 않았으므로 넘어가 줍니다.

 

▶ 6단계 : 검토

지금까지 설정한 EX-ELB 사항을 검토한 뒤 생성을 눌러줍니다

 

생성을 눌러 주게 되면 이렇게 EX-ELB가 생성된 걸 볼 수 있습니다.

 

 

IN-ELB

WEB서버에서 WAS 서버로 넘어가는 데이터를 분배해주는 IN-ELB를 만들어 보겠습니다.

 

▶ 1단계 : Load Balancer 구성

EX-ELB와 마찬가지로 VPC와 AZ를 선택해줍니다.

 

IN-ELB로 이름을 설정합니다

체계는 EX-ELB와 다르게 private zone안에서 작동하기 때문에 내부로 선택하여줍니다.

 

 

▶ 2단계 : 보안 설정 구성

참고만 하고 넘어가 줍니다.

 

▶ 3단계 : 보안 그룹 구성

미리 만들어두었던 IN-ELB-SG 보안 그룹을 선택하여줍니다.

 

▶ 4단계 :  라우팅 구성

ELB를 통해 데이터가 어떤 방식으로 나아갈 것인지 구성을 해줍니다

WAS 서버는 APACHE Tomcat을 사용하므로 HTTP와 8080 포트를 사용합니다.

 

▶ 5단계 : 대상 등록

ELB 통해 WAS 서버로 나아가기 때문에 WAS 서버를 등록해야 되지만 

만들어둔 인스턴스가 없으므로 넘어가 줍니다.

 

 

▶ 6단계 : 검토

지금까지 설정한 IN-ELB 구성을 확인하여 줍니다.

 

검토를 끝내고 생성을 누르게 되면 

지금까지 만들었던 EX-ELB, IN-ELB 가 active 상태인 것을 확인할 수 있습니다.

 

 

 

이로써 3 tier Architecture의 네트워크 구성인 SG, ELB까지 설정을 마치게 되었습니다.

 

다음에는 EC2를 생성하여

Bastion Host, WEB, WAS, RDS를 설치해보도록 하겠습니다.