ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [AWS] 3-Tier Architecture 인프라 설계
    Backend/AWS 2022. 9. 25. 20:30

    AWS 3-Tier Architecture

    • WEB-WAS-DB로 이루어진 3 계층 구조
    • Bastion 호스트를 두어 private 망에 접근하며 Nat 게이트웨이와 인터넷 게이트웨이를 통해 외부와 통신
      • Bastion Host
        • 외부에서 접근 불가능한 Private 망에 접근하기 위해 Public 망에 Bastion Host를 두어 Private 망에 접근
        • Private 망내의 서버들은 Public 망에 위치한 Nat 게이트웨이와 인터넷 게이트웨이를 통해 외부와 통신
        • 침입 차단 소프트웨어가 설치되어 내부와 외부 네트워크 사이에서 일종의 게이트 역할을 수행하는 호스트
        • Bastion 서버 한곳에서 모든 접근을 관리함으로써, 관리가 수월하며 모든 접근에 대한 로그 또한 한 곳에서 확인 가능
        • Bastion Host를 통해 접근하면 특정 IP만 접근 가능하도록 설정이 가능
    • 2개의 가용영역(AZ-C, AZ-A)을 사용하여 WEB, WAS 모두 두개씩 존재
    • ELB를 통해 부하분산을 이루며 WEB 서버로의 부하 분산을 위해 ALB,  WAS 서버로의 부하분산을 위해 NLB를 사용
    • EC2 - WEB, WAS / RDS - DB

     

    인프라 설계

    VPC

    사용자가 정의한 논리적으로 분리된 클라우드 네트워크

    • Seoul Region으로 ap-northeast-2로 생성
    • Seoul Region의 경우 a, b, c, d 4개의 가용영역이 존재
    • 그 중 a, c 2개의 가용영역 사용

     

    Subnet

    VPC내에서 IPv4 주소가 CIDR 블록에 의해 나눠진 주소 단위

    • AWS 3 계층 구조에서 볼 수 있듯이 8개의 서브넷이 존재
    • a, c 가용영역에 대해 계층별 서브넷 생성
    • ext - bastion, nat
    • int1 - WEB
    • int2 - WAS
    • dat1 - DB

     

    IGW (Internet Gateway)

    • IGW 생성 후 VPC attach 작업을 해주어야 함

     

    NAT (NAT Gateway)

     

    Private Subnet의 인터넷을 향한 Outbound 트래픽 허용

     

    Routing Table

    Route Table Name Associated Subnet Destination Target Description
    kmr-ext-rt kmr-ext1-c-01
    kmr-ext1-a-02
    10.0.10.0/16 Local VPC Default 경로
    0.0.0.0/0 kmr-igw-01 인터넷트래픽을 igw로 전달
    kmr-int1-rt kmr-int1-c-01
    kmr-int1-a-02
    10.0.10.0/16 Local VPC Default 경로
    0.0.0.0/0 kmr-nat-01 인터넷트래픽을 nat로 전달
    kmr-int2-rt kmr-int2-c-01
    kmr-int2-a-02
    10.0.10.0/16 Local VPC Default 경로
    0.0.0.0/0 kmr-nat-01 인터넷트래픽을 nat로 전달
    kmr-dat1-rt kmr-dat1-c-01
    kmr-dat1-a-02
    10.0.10.0/16 Local VPC Default 경로
    Default Routing Table N/A 10.0.10.0/16 Local VPC Default 경로
    • Nat 게이트웨이를 통해 Private 망이 외부와 통신하기 때문에 WEB 서버와 WAS에 해당하는 kmr-int1-rt, kmr-int2-rt 서브넷의 경우 0.0.0.0/0의 경우 nat gateway로 연결

     

    Security Group

    인스턴스에 대한 Inbound와 Outbound 트래픽 제어 가상 방화벽

    SG Name Inbound Rule
    protocol Port Range Source Description
    kmr-ext-bastion-sg TCP 22 My IP SSH 접속 개인 IP
    kmr-ext-web-lbsg TCP 80 0.0.0.0/0 외부서비스 Inbound
    kmr-int-web-sg TCP 80 kmr-ext-web-lbsg 80 서비스 WEB LB
    TCP 22 kmr-ext-bastion-sg SSH 접속 Bastion
    kmr-int-was-sg TCP 8080 10.10.30.0/24 8080 WEB C Inbloud
    TCP 8080 10.10.40.0/24 8080 WEB A Inbloud
    TCP 22 kmr-ext-bastion-sg SSH 접속 Bastion
    kmr-int-mysql-sg TCP 8080 kmr-int-was-sg Mysql Connetion WAS
    TCP 8080 kmr-ext-bastion-sg Bastion
    • kmr-ext-bastion-sg
      • SSH 접근을 위해 22번 port를 허용
    • kmr-ext-web-lbsg
      • WEB 로드밸런서에 대한 외부 서비스 접근 허용
    • kmr-int-web-sg
      • WEB 로드밸런서의 접근 허용
      • bastion을 통한 ssh 접근을 위해 22 포트 허용
    • kmr-int-was-sg
      • AZ-C, AZ-A에 존재하는 WEB 서버 각각에 대해 접근 허용
      • bastion을 통한 ssh 접근을 위해 22 포트 허용
    • kmr-int-mysql-sg
      • WAS 서버 접근 허용
      • bastion을 통해 mysql client 접근을 위해 3306 포트 허용 

     

    EC2 (Elastic Cloud Computing)

    AWS 가상 컴퓨팅을 위한 인스턴스 생성

    Instance Name 용도 AZ Subnet Security Group DHCP IP
    kmr-bastion-c-ec2-01 Bastion AZ-C kmr-ext1-c-01 kmr-ext-bastion-sg 10.10.10.10
    kmr-web-c-ec2-01 web AZ-C kmr-int1-c-01 kmr-int-web-sg 10.10.30.11
    kmr-web-a-ec2-02 web AZ-A kmr-int1-a-02 kmr-int-web-sg 10.10.40.11
    kmr-was-c-ec2-01 web AZ-C kmr-int2-c-01 kmr-int-was-sg 10.10.50.22
    kmr-was-a-ec2-02 web AZ-A kmr-int2-a-02 kmr-int-was-sg 10.10.60.22
    • Instance Type : T2.micro
    • OS : Ubuntu 20.04
    • Root Volume : 30 GB
    • bation, web, was 용 인스턴스 생성
    • DHCP IP의 경우 자동 생성도 되지만 편리하게 이용하기 위해 IP를 지정
    • WEB의 경우 11, WAS의 경우 22로 IP주소가 끝나도록 함

     

    ELB (Elastic Load Balancer)

    ALB (Application Load Balancer)

    • 이름에 Application이 붙은 것처럼 application layer에서 작동
    • HTTP/HTTPS 트래픽을 처리하는 로드밸런싱에 최적화
    • ALB는 path-based routing을 지원하여 인스턴스들은 여러개의 URL과 path를 가질 수 있음

    NLB (Network Load Balancer)

    • 이름에 Network가 붙은 것처럼 Network layer에서 작동
    • TCP/UDP 트래픽을 로드밸런싱하여 내부 인스턴스로 전달
    • TCP/UDP 서버를 구축할 때 NLB는 굉장히 낮은 지연시간으로 최적의 성능
    • 로드밸런서에 대한 고정 IP 주소를 지원

     

    LB Target Group

    AWS ELB가 트래픽을 전달하는 대상을 지정

    ELB Name Target Instance Port Protocol Target Type LB
    kmr-int-web-80-lbtg kmr-web-ec2-01
    kmr-web-ec2-02
    80 HTTP Instance kmr-ext-web-alb
    kmr-int-was-8080-lbtg kmr-was-ec2-01
    kmr-was-ec2-02
    8080 TCP Instance kmr-ext-int-nlb

     

    ALB : Client - ALB(80) - WEB(80)

    ELB Name Scheme Type Port Configuration Added Instance
    ID or Name
    Availability
    Zone
    ELB SG
    kmr-ext-web-alb ext
    internet-facing
    alb 80(HTTP) fowarding to 80(HTTP) cnu-web-ec2-01
    cnu-web-ec2-02
    AZ-C
    AZ-A
    cnu-ext-web-lbsg

     

    NLB : WEB - NLB(8080) - WAS(8080)

    ELB Name Scheme Type Port Configuration Added Instance
    ID or Name
    Availability
    Zone
    ELB SG
    kmr-int-was-nlb int
    internal
    nlb 8080(TCP) fowarding to 8080(TCP) cnu-was-ec2-01
    cnu-was-ec2-02
    AZ-C
    AZ-A
    N/A

     

    RDS Subnet Group

    RDS 인스턴스가 설치되는 서브넷의 그룹을 지정

    Subnet Group Name AZ Subnet 비고
    kmr-mysql-sbngroup-01 AZ-C, AZ-A kmr-dat1-c-sbn-01
    kmr-dat1-a-sbn-02
    RDS 생성이전에완료

     

    RDS 

    AWS의 관리형 Relation Database 서비스

    Instance Name 용도 Instance Type Master Id Master pw AZ Port
    kmr-mysql-rds db db.t3.micro admin ***** AZ-C, AZ-A 3306

     

    탄력적 IP

    bastion instance의 public ip를 위해 탄력적 ip를 생성 후 bastion에 지정

     

    댓글

Designed by Tistory.