AWS

[AWS] aws 강의 섹션 10 (VPC, 서브넷, 게이트웨이, 3계층 아키텍쳐)

대기업 가고 싶은 공돌이 2024. 9. 26. 17:06

VPC

virtual private cloud

aws에 있는 사설 네트워크를 의미한다. 

우리가 aws에서 자원을 배포할 수 있게 해준다. 

  • VPC는 리전 별 리소스로 AWS 리전이 2개일 때 2개의 다른 VPC를 갖게 된다.
  • VPC는 여러 개의 서브넷으로 이뤄져 있다.

Subnets Primer

  • 서브넷은 AZ 단위 리소스다.
  • 서브넷은 여러 개가 될 수 있다.
  • 퍼블릭 서브넷을 만들 수 있으며, 퍼블릭 서브넷은 인터넷으로부터 접근된다.
  • private 서브넷을 만들 수 있으며, private 서브넷은 인터넷에서 접근할 수 없다.

VPC 내에서 여러 라우팅 테이블을 정의하여

다른 서브넷 사이에서 네트워크가 어떻게 이동할지 정의한다.

 

다음과 Region 내부에 VPC와 AZ가 존재하고

VPC와 AZ 내부에 서브넷이 존재한다. 

인터넷 게이트웨이, NAT 게이트웨이

퍼블릭 서브넷에 EC2가 있다고 할 때

우리는 어떻게 퍼블릭 서브넷에 접근할까?

 

퍼블릭 서브넷에 접근하기 위해 인터넷 게이트웨이를 사용한다.

  • 서브넷에 있는 VPC 인스턴스가 인터넷에 연결되도록 인터넷 게이트웨이가 도와준다.
  • 퍼블릭 서브넷은 인터넷 게이트웨이로 라우팅 된다.
  • 인터넷 게이트웨이는 다른 인터넷과 통신하는 법을 알고 있는 장치다. 
    이 때문에 퍼블릭 서브넷을 모두에게 접근 가능하게 만들어준다.

프라이빗 서브넷 내부에 EC2 한 개가 존재한다.

여기서 해당 EC2를 업데이트하기 위해 잠시 외부 인터넷에 연결시키고 싶다.

 

하지만 인터넷에서 private 서브넷으로의 접근은 막고 싶다. 

 

이럴 때 NAT 게이트 웨이 또는 NAT 인스턴스를 사용한다.

  • 둘 다 프라이빗 서브넷을 위해 NAT를 제공한다.
  • AWS에서 NAT 를 관리하므로 프로비저닝과 스케일링 관련해서 신경 쓸 필요가 없다.
  • 위의 두 개를 통해 외부의 접근은 막으면서 내부ㅇ에서 외부로 나가는 접근은 허용할 수 있다.

NAT 게이트웨이나 NAT 인스턴스를 공용 서브넷에 배포하고 

사설 서브넷의 EC2를 NAT로 라우팅 한다.

 

이제 NAT는 인터넷 게이트웨이로 라우팅 되고 이를 통해 인터넷으로 접근할 수 있다.

Network ACL & Security Groups

  • NACL은 방화벽으로 서브넷으로 들어오거나 나가는 트래픽을 제어하며 
    허용 규칙과 거부 규칙이 있다. 
  • NACL은 IP 주소만을 규칙으로 갖는다. 
  • 따라서 설정한 IP 주소들에서 오는 트래픽은 허용되고 나머지는 다 거부된다.
  • NACL은 퍼블릭 서브넷의 첫 번째 방어 매커니즘으로 서브넷 내부에 있다. 
  • 인터넷에서 오고 가는 트래픽은 모두 NACL을 먼저 거치게 된다.

보안 그룹은 ENI라는 탄련젹 네트워크 인터페이스 또는 EC2 인스턴스를 오고 가는 트래픽을 관리한다.

  • 다른 IP 주소들이나 다른 보안 그룹들만 참조할 수 있다.
  • 서브넷 내부의 두 번째 방어 매커니즘이다.

기본 VPC가 있으면 기본 NACL이 모든 것의 출입을 허용한다.

Vpc Flow Logs

우리의 인터페이스로 가는 모든 IP 트래픽의 정보를 획득한다.

  • 네트워크가 VPC를 통해 지나간다면 로깅될 것이며
  • 이를 통해 모니터링을 강화할 수 있다.

네트워크에 문제가 생기면 VPC Flow logs를 보면 된다. 

  • 로드 밸런서, 엘라스틱 캐시, RDS, 오로라 모두 VPC flow에 나타난다.
  • S3, 클라우드 워치 logs등등에 로그를 저장해 확인할 수 있다.

VPC Peering

vpc와 다른 구조를 연결하는 방법

 

가상의 프라이빗 네트워크가 두 개 있다고 가정하자 

다른 계정이나 다른 리전에 존재하는 상황이다.

 

그 둘을 한 네트워크에 있는 것처럼 연결하고 싶다.

 

두 네트워크를 연결하는데 AWS를 통해 프라이빗하게 연결시키는 거다.

다음과 같이 간단하게 VPC 피어링 연결을 해주면 된다.

 

  • 각 VPC에 정의된 IP 범위가 겹치지 않아야 한다.
  • ip 범위가 겹치게 되면 네트워크는 어떤 VPC로 요청을 보내야하는지 모른다.
  • VPC 연결은 전이적이지 않다.

위의 상황에서 B와 C는 서로 통신할 수 없다는 뜻이다

 

VPC Endpoints

시험에서 아주 중요하다.

  • 엔드 포인트를 이용하면 AWS 서비스에 연결할 때 프라이빗 네트워크를 이용할 수 있다.
  • AWS 서비스들은 모두 public이기 때문에 프라이빗 네트워크에 들어있는 Ec2 인스턴스에 연결하려면
    VPC endpoints를 활용해야만 한다.
  • 만약 프라이빗 네트워크에 들어있는 EC2에 연결을 하고 싶다면 VPC 엔드포인트를 사용하면 된다.
  • 보안이 강화되고 지연도 감소한다.

다음과 같이 VPC 내부에 있지 않은 나머지 외부 AWS 와 연결시켜주는 역할이다. 

VPC 내부에서만 사용할 수 있다.

VPC 내부에서 AWS 서비스를 프라이빗 하게 이용해야 할 때 사용하자

ENI도 같은 역할을 수행하는 것이라 알면 된다.

 

사설 데이터 센터와 VPC의 연결

첫 번째 방법은  site to stie VPN이다.

  • 연결은 자동으로 암호화 되고 공개 인터넷상에서 이뤄진다.

두 번째 방법은 Direct Connect (DC)

마찬가지로 온 프레미스 데이터센터와 VPC를 연결해준다.

  • 다만 물리적으로 연결된다는 차이점이 있다.
  • 공개 인터넷을 이용하지 않기 때문에 프라이빗 하고 빠르다.
  • 프라이빗 네트워크 상에서 연결된다.
  •  완료되기 까지 몇 개월이 걸리기도 한다.

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

사용자는 애플리케이션에 접근하기를 원한다.

로드 밸런서를 사용할 것이며 이는 여러 가용 영역에 걸쳐 확산할 것이다. 

  • 로드 밸런서는 공용 서브넷어 배포될 것이다.
  • 로드 밸런서에 접근하기 위해선 DNS 쿼리를 하여 어디에 있는지 알아야 한다.
  • route 53을 통해 로드밸런서에 접근할 수 있다.
  • 이후로드 밸런서는 오토 스케일링 그룹에 속한 EC2에 트래픽을 보낸다.  
  • 오토 스케일링 그룹의 경우 public으로 둘 이유가 없기에 private 서브넷에 둔다.
  • 이제 데이터베이스를 위한 private 서브넷을 또 만들 것이다.
    • 데이터 베이스를 위한 private 서브넷은 데이터 서브넷이라 부른다.
  • EC2 인스턴스는 RDS에 연결된다. 
  • 엘라스틱 캐시를 두어 세션 데이터나 다른 정보들을 저장한다.

이것이 전반적인 3계층 아키텍쳐다

Lamp Stack on EC2

아키텍쳐의 예시중 하나다.

 

Wordpress on AWS

블로깅 도구이다.

 

사용자가 로드밸런서에 이미지를 보내면 다른 모든 Ec2는 해당 이미지를 공유해야 한다.

완벽한 예시는 EFS로 AZ 마다 ENI를 만들어 EC2 인스턴스로 들어온 이미지를 EFS에 저장시켜 공유하면 된다.

 

이는 워드프레스를 위한 간단한 아키텍쳐 이다.