2023-11-29 23:04:45
728x90
728x90

이번 글에서 구성할 아키텍

1. VPC(Virtual Private Cloud)

AWS를 이용해 네트워크를 구축할때는 VPC라는 시스템을 이용할 수 있다. 여기서 virtual이란 '가상'이라는 의미다. AWS의 데이터센터에 있는 전용기기에서 서버나 네트워크 장비가 가진 기능을 에뮬레이션하는 소프트웨어를 작동시켜, 물리적인 기기를 이용하지 않고 가상의 네트워크를 구축할 수 있다. 따라서 기기 추가나 삭제를 소프트웨어 실행이나 정지처럼 간단히 수행할 수 있다. VPC끼리는 독립적이므로 서로 영향을 미치지 않는다.

 

1.1. VPC 설정 항목

항목 설명
이름 태그  my-vpc VCP를 식별하는 이름
IPv4 CIDR 블록 10.0.0.0/16 VPC에서 이용하는 프라이빗 네트워크의 IPv4 주소 범위
IPv6 CIDR 블록 IPv6 CIDR 블록 없음 VPC에서 이용하는 프라이빗 네트워크의 IPv6 주소 범위
테넌시(tenancy) 기본값 VPC 리소스의 전용 하드웨어에서의 실행 여

 

 

1.2. VPC 생성

VPC 서비스 -> Virtual private cloud -> Your VPCs -> Create VPC

 

설정 항목 대로 설정 후 Create VPC

 

2. 서브넷과 가용 영역

VPC안에는 하나 이상의 서브넷을 만들어야 한다. 서브넷은 VPC의 IP 주소 범위를 나누는 단위이다. IP 주소 범위를 나누는 대표적인 이유는 다음 두 가지다.

  • 역할 분리: 외부에 공개하는 리소스 여부를 구별
  • 기기 분리: AWS 안에서의 물리적인 이중화(다중화)를 수행

2.1. 역할 분리

리소스가 담당하는 역할에 따라 분리한다. 시스템을 구축할 때는 다양한 리소스를 조합하게된다. 예를 들어 리소스의 하나인 로드 밸런서는 외부 공개가 목적이므로 외부에서 접근할 수 있어야 한다. 반대로 DB 서버는 VPC 내부 서버에서의 사용을 전제로 하므로 외부에 공개되어서는 안 된다. 이런 규칙을 리소스마다 개별적으로 할당하지 않고, 리소스가 포함된 그룹 전체에 대해 할당하면 설정 누락 등을 피할 수 있다.

 

2.2. 기기 분리

내결함성을 높이기 위해 기기를 분리한다. 내결함성이란 하드웨어 고장 등 예측할 수 없는 사태가 발생했을 때 시스템 자체를 사용하지 못하게 되는 것을 방지하는 능력이다. 클라우드라 하더라도 최종적으로는 어딘가 위치한 물리적인 기기상에서 작동한다. 

VPC에는 가용 영역(Availability Zone)이라는 개념이 존재한다. 가용 영역이 다르면 독립되었음을 보장할 수 있으므로, 가용 영역별로 서브넷을 제공하면 여러 서브넷을 동시에 이용하지 못하는 가능성을 낮출 수 있다.

 

2.3. 서브넷 4개를 생성하는 정보

대상 항목
외부 서브넷 1 VPC ID VPC의 ID
서브넷 이름 my-subnet-public01
가용 영역 ap-northeast-2a
IPv4 CIDR 블록 10.0.0.0/20
외부 서브넷 2 VPC ID VPC의 ID
서브넷 이름 my-subnet-public02
가용 영역 ap-northeast-2c
IPv4 CIDR 블록 10.0.16.0/20
내부 서브넷1  VPC ID VPC의 ID
서브넷 이름 my-subnet-private01
가용 영역 ap-northeast-2a
IPv4 CIDR 블록 10.0.64.0/24
내부 서브넷2 VPC ID VPC의 ID
서브넷 이름 my-subnet-private02
가용 영역 ap-northeast-2c
IPv4 CIDR 블록 10.0.80.0/20

 

2.4. 서브넷 생성

VPC 서비스 -> Virtual private cloud -> Subnets -> Create subnet

VPC ID는 my-vpc 선택

Subnet settings 목록에서 서브넷 생성 정보대로 입력

반복해서 총 4개의 서브넷 생성

 

3. 인터넷 게이트웨이(Internet Gateway)

VPC에서 생성된 네트워크와 인터넷 사이의 통신을 가능하게 하는 것이다. 인터넷 게이트웨이가 없으면 인터넷과 VPC안의 리소스는 서로 통신할 수 없다.

 

3.1. 인터넷 게이트웨이 생성내용

VPC에 인터넷 게이트웨이를 붙이는 것을 연결(attach)한다고 부른다.

항목
이름 태그 my-igw
VPC my-vpc

 

3.2. 인터넷 게이트웨이 생성

VPC 서비스 -> Virtual private cloud -> Internet gateways -> create internet gateway

생성 내용 대로 네임태그 입력 후 create internet gateway

생성된 internet gateway 상세페이지 우측에 Actions 드롭메뉴 -> Attach to VPC

my-vpc 선택 후 Attach internet gateway

 

4. NAT 게이트웨이(Network Address Translation)

인터넷 게이트웨이의 역할은 VPC에서 생성된 네트워크와 인터넷 사이의 통신을 수행하는 것이다. 이때 VPC에서 생성된 네트워크 안에 만들어진 리소스는 외부 네트워크와 직접 통신하므로 공개 IP를 가져야 한다. 하지만 공개 IP를 가진다는 것은 인터넷에 직접 갱개된다는 의미이므로, 애써 서브넷을 퍼블릭과 프라이빗으로 구분한 의미가 사라진다.

프라이빗 서브넷에 생성된 리소스는 인터넷으로 내보낼 수는 있지만 인터넷에서 접근할 수는 없어야 한다. 이런 요구사항을 구현하기 위해 AWS에서는 NAT 게이트웨이라는 네트워크 주소 변환 시스템이 있다. NAT 게이트웨이는 퍼블릭 서브넷에 생성한다. 이중성을 확보하려면 여러 NAT 게이트웨이를 생성하는 것이 좋지만 게이트웨이마다 각각 비용이 들기 때문에 하나의 NAT 게이트웨이만 재공해 운용하기도 한다.

 

4.1. NAT 게이트웨이 설정 항목

대상 항목 설명
NAT 게이트웨이 1 이름 my-ngw-01 NAT 게이트웨이 이름
서브넷 my-subnet-public01 NAT 게이트웨이를 생성할 서브넷
탄력적 IP 할당 ID 자동 생성 NAT 게이트웨이에 할당할 EIP
NAT 게이트웨이 2 이름 my-ngw-02 동일
서브넷 my-subnet-public02
탄력적 IP 할당 ID 자동 생성

 

4.2. NAT 게이트웨이 생성

VPC 서비스 -> Virtual private cloud -> NAT gateways -> Create NAT gateway 

NAT gateway settings 섹션에서 설정 항목대로 입력 후 Allocate Elastic IP눌 눌러 EIP 할당 받은 후 Create NAT gateway

같은 방식으로 2개의 NAT gateway 생성 State가 Available이 되야함.

 

5. 라우트 테이블(Route Table)

VPC상에 서브넷을 생성하고 리소스를 생성할 장소를 준비하고 인터넷 게이트웨이와 NAT 게이트웨이를 생성해 리소스가 인터넷과 통신할 수 있도록 출입구를 만들었다. 하지만 이 상태에서는 서브넷과 서브넷, 또는 서브넷과 각 게이트웨이가 통신할 수 있는 경로가 아직 존재하지 않는다. 따라서 어떤 서브넷 안의 리소스가 해당 서브넷 밖의 리소스에는 접근할 수 없다. 이러한 서브넷 사이의 통신 경로를 설정하고자 AWS에서는 라우트 테이블 기능을 제공한다. 라우트 테이블에는 '이 서버에 접속할 때는 이 곳을 경유한다'라는 규칙을 테이블 형식으로 설정할 수 있다.

5.1. 라우트 테이블의 태표적인 타깃

타깃 용도
로컬 동일 VPC 안의 리소스에 접근
인터넷 게이트웨이 퍼블릭 서브넷에 생성된 리소스가 인터넷 서버와 통신
NAT 게이트웨이 프라이빗 서브넷에 생성된 리소스가 인터넷 서버와 통신
VPN 게이트웨이 VPN을 통해 접속된 독자 네트워크상의 서버와 통신
VPC 피어링 접속을 허가한 다른 VPC상의 리소스와 통신

 

5.2. 라우트 테이블 생성

VPC 서비스 -> Virtual private cloud -> Route tables -> Create route table

Route table settings 섹션에서 public01,02 서브넷에 대한 라우트 테이블 생성

생성 후 상세페이지 Routes 탭에서 Edit routes 

Destination은 0.0.0.0/0 즉 모든 IP, Target은 my-igw 지정 후 Save changes

Subnet associations 탭에서 Edit subnet associations

my-subnet-public01,02 선택 후 Save associations

마찬가지로 NAT 게이트웨이에 대한 라우트 테이블 생성, private 서브넷마다 각각 생성한다.

인터넷 게이트웨이와 과정은 동일, Target은 my-ngw-01 선택

my-subnet-private01 선택 후 Save associations

인터넷 게이트웨이에 대한 퍼블릭 서브넷 라우트 테이블, NAT 게이트웨이에 대한 프라이빗 라우트 테이블 생

 

6. 보안 그룹(Security Group)

VPC 안의 리소스를 보호하려면 외부로부터의 접근에 제한을 걸어야 한다. 이런 접근 제한을 수행하기 위해 보안 그룹이라는 기능을 제공한다.

보안 그룹에서는 외부로부터의 접근을 다음과 같은 두 가지 개념을 이용해 제어할 수 있다.

  • 포트 번호
  • IP 주소

6.1. 보안 그룹 생성 내용

6.1.1 점프 서버용 보안 그룹 설정 항목

항목
보안 그룹 이름 my-sg-bastion
설명 for bastion server
VPC my-vpc
인바운드 규칙 유형: SSH
소스: 0.0.0.0/0

 

6.1.2 로드 밸런서용 보안 그룹 설정 항목

항목
보안 그룹 이름 my-sg-elb
설명 for load balancer
VPC my-vpc
인바운드 규칙 유형: HTTP
소스: 0.0.0.0/0
유형: HTTPS
소스: 0.0.0.0/0

6.2. 보안 그룹 생성

VPC 서비스 -> Security -> Security groups  -> Create security group

보안 그룹 설정 항목대로 입력후 Inbound rules에서 Add rule을 클릭해서 설정, Outbound rules는 기본값 

my-sg-elb도 동일하게 생성

728x90

'AWS' 카테고리의 다른 글

AWS - 6. ELB(Elastic Load Balancing)  (0) 2023.12.02
AWS- 5. 웹 서버(Web Server)  (0) 2023.12.01
AWS - 4. 점프 서버(Jump Server)  (0) 2023.11.30
AWS - 2. IAM(Identity and Access Management)  (0) 2023.11.28
AWS - 1. 개요  (0) 2023.11.27