본문 바로가기

Cloud

AWS - VPC & 3계층 아키텍처

1) VPC: Virtual Private Cloud

- 일반적으로 EC2 Instance를 만들때 기본 VPC를 사용하며, AWS 지역마다 1개의 기본 VPC가 있음

 

2) Subnet

- 특정 가용영역에 묶여 EC2 인스턴스를 실행하는 곳, VPC의 네트워크를 분할

 

3) IGN(인터넷 게이트웨이 네트워크)

- VPC 수준에서 정의되며, 공용 서브넷에 있는 인스턴스가 인터넷에 연결될 수 있도록 함

 

4) NAT Gateway / NAT Instance

- 사설 서브넷은 인터넷 연결이 안되기 때문에 공용 서브넷에 있는 NAT Gateway에 연결하고 

NAT Gateway는 IGN에 연결해서 사설 서브넷도 인터넷 연동이 될 수 있도록 함

즉, 인터넷과 사설 서브넷 사이에 연결고리 역할을 함

 

5) NACL(= 네트워크 ACL)

- 들어오고 나가는 트래픽에 대한 무상태 서브넷 규칙 방화벽이고 보안 그룹의 경우 상태를 유지하고 EC2 인스턴스 수준 또는

ENI에서 동작하며 다른 보안 그룹을 참조할 수도 있음

 

6) VPC Peering

- 2개의 VPC가 겹치지 않고 IP 범위도 겹치지 않은 상태에서 연결하는 것

전이되지 않기 때문에 VPC를 서로 연결하고 싶다면, 모든 VPC 사이에 VPC Peering을 연결해둬야 함

 

7) VPC EndPoint

- VPC 내에 있는 AWS 서비스로 비공개 연결을 하며 VPC가 비공개적으로 AWS 서비스를 이용할 때 설정해 둠

 

8) VPC Flow Log

- 네트워크 트래픽 로그랑 같으며 접근이 거부되거나 트래픽이 잠기거나 VPC 내 허용된 트래픽을 디버깅 할 때 사용함

 

9) Site-to-Site VPN

- On-Premise 데이터 센터를 AWS(VPC)에 연결할 때 Site-to-Site VPN을 사용하며 공개 인터넷을 사용해 연결하는 방식이기에

VPC로 가는 과정에서 암호화 작업을 거칩니다.

 

10) Direct Connect(DX) 

- On-Premise 데이터 센터와 AWS(VPC)에 연결할 때 물리적으로 연결하는 방법으로, 사설 네트워크이기에 비공개 라우팅이 진행됩니다.  물리적 연결이기 때문에 설정하는 데에도 많은 시간이 듭니다.

 

 

 


 

※ 전형적인 3계층 솔루션 아키텍처

3계층 솔루션 아키텍처

1) 사용자 -> ELB

▷ 사용자는 Web Application에 접근하길 원하며 그러기 위해선 각 가용영역에 인스턴스의 주소를 알아야 합니다.

▷ 가용영역의 인스턴스에 트래픽을 전달하는 ELB에 접근합니다.   ELB를 통해 각 가용영역에 인스턴스에 접근할 수 있기 때문입니다.

▷ ELB는 공개적으로 접근할 수 있기 때문에 Public Subnet에 포함되어 있고 해당 IP를 알기 위해서 Route53을 통해 

DNS Query를 거쳐 접근하게 됩니다.

 

2 ELB -> ASG

▷ ELB는 Traffic을 EC2 Instance에 보내는데, EC2 Instance는 ASG 그룹 내 가용영역에 포함되어 있습니다.

▷ 각 가용영역에 대한 인스턴스(⊂ASG)는 인터넷에 공개적으로 접근할 필요가 없기 때문에, 즉 ELB를 통해서만 접근하므로 

사설 서브넷에 배포합니다. (사설 서브넷에 아키텍처의 연산 부분을 분리하여야 더 안전할 수 있음)

 

3) ASG <-> Data Subnet

▷ 각 인스턴스는 AWS 서비스를 이용할 때 VPC EndPoint를 통해 접근합니다.

▷ VPC EndPoint는 사설 서브넷이 AWS 서비스에 접근할 수 있도록 비공개 연결을 제공해주는 창구로, 데이터 서브넷과 같이

RDS, Elastic Cache 등을 제공합니다.

▷ 데이터 서브넷(사설)에 있는 AWS 서비스는 각 AZ의 인스턴스와 연결되어 서비스를 공유할 수 있습니다.


 

 

다음과 같은 구조 예시는 아래와 같습니다.

 

1) LAMP (Linux, Apache, Mysql, Php)

ㄱ. EC2 인스턴스에서 사용할 운영체제인 Linux와 여기서 실행될 웹서버 아파치

ㄴ. RDS에서 쓰이는 Database인 MySQL

ㄷ. Application Logic인 PHP

 

→ Redis나 MemCached(Elastic Cache)를 추가하여 캐싱 기술을 포함할 수 있음

→ Local에서 데이터를 저장하고, 캐싱하거나 Application 데이터나 SW를 사용하기 위해 EBS 드라이브를 EC2 인스턴스에

연결할 수 있음

 

 

2) WordPress on AWS

→ 블로깅 도구; AWS에 워드프레스 배포하는 방법 체크

워드프레스 구조

 

 

→ 사용자는 ELB를 통해 EC2 Instance에 이미지를 전달한다고 했을때, 다른 EC2 Instance도 공유가 필요한 경우

EFS를 통해 ENI에 거쳐 각 가용영역에 인스턴스에 이미지(데이터)를 공유하도록 할 수 있습니다. 

 


※ 한 번 더 확인할 내용

1) NACL(Network Access Control List)

: 서브넷 수준에서 특정 인바운드 또는 아웃바운드 트래픽을 허용하거나 거부합니다.

VPC에 대한 기본 네트워크 ACL을 사용하거나 보안 그룹에 대한 규칙과 유사한 규칙을 사용하여 VPC에 대한 사용자 지정 네트워크

ACL을 생성하여 VPC에 보안 계층을 추가할 수 있습니다.

보안그룹 NACL
인스턴스 레벨 서브넷 레벨
인스턴스와 연결된 경우에만 인스턴스에 적용 연결된 서브넷에서 배포된 모든 인스턴스에 적용되며,
보안 그룹 규칙이 지나치게 허용적일 경우 추가 보안 계층을 제공
허용 규칙만 지원 허용 및 거부 규칙까지 지원
트래픽 허용 여부를 결정하기 전에 모든 규칙을 평가 트래픽 허용 여부를 결정할 때 가장 낮은 번호의 규칙부터
순서대로 규칙을 평가
상태를 저장하며 규칙에 관계없이 반환 트래픽이 허용됨 상태를 저장하지 않으며 반환 트래픽이 규칙에 따라 명시적으로 허용됨
   

 

2) VPC 엔드포인트를 사용할 때 VPC 게이트웨이 엔드포인트로 연결되는 AWS 서비스는 Amazon S3 & DynamoDB이고 그 외

나머지 AWS 서비스는 인터페이스 엔드포인트(Private IP)로 연결된다.

 

3) VPC Flow Log는 VPC의 네트워크 인터페이스로 들어오고 나가는 IP 트래픽에 대한 정보를 캡처하는 VPC의 기능

 

4) 인터넷 게이트웨이를 VPC에 연결했지만 여전히 인터넷에 엑세스 할 수 없는 경우

▶ Root Table에 항목이 없음(라우팅 테이블에 내용 없음)

▶ EC2 Instance에 Public IP가 없음

▶ NACL은 네트워크 트래픽을 허용하지 않음

 


☆ 인터넷 게이트웨이는 사용자의 인스턴스를 대신하여 논리적으로 1:1 NAT를 제공하므로 트래픽이 VPC 서브넷을 떠나 인터넷으로

이동할 때 회신 주소는 Private IPv4 주소가 아닌 인스턴스의 Public IPv4 또는 Elastic IP로 설정됩니다.

 

☆ Private Subnet은 Routing Table에 인터넷 게이트웨이에 대한 경로가 없기 때문에 인터넷 연결이 되지 않고, 나아가 Private Subnet의 인스턴스는 Public IP 주소를 가지고 있어도 인터넷 게이트웨이를 통해 인터넷과 통신할 수 없습니다.

 

☆ Public Subnet은 Routing Table에 인터넷 바운드 IPv4 트래픽을 인터넷 게이트웨이로 전송하는 경로가 있고, Public Subnet의 인스턴스에는 Public IP 또는 Elastic IP주소가 있기 때문에 인터넷 게이트웨이를 통해 인터넷과 통신이 가능합니다. 

 

 

 

 


☆ RDS: Data Read/Write

☆ Elastic Cache: RDS에서 데이터를 캐싱하거나 Web Application을 위한 EC2 인스턴스의 세션 데이터를

메모리에서 저장하거나 검색할 때 유용함

☆ EFS: Elastic File System으로 네트워크 파일 시스템이자 네트워크 드라이브

각 AZ마다 ENI(Elastic Network Interface)를 설치해서 EC2 인스턴스가 이미지(데이터)를 파일 시스템에 저장하도록 만듬

즉, 모든 EC2 Instance는 파일 시스템을 공유할 수 있어 해당 이미지(데이터)에 접근할 수 있음

 

반응형