-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #69 from gdsc-ssu/sanghyeon/week21
[week21] VPC 엔드포인트 & Transit Gateway
- Loading branch information
Showing
6 changed files
with
117 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
>[!info] 목차 | ||
> - [[#문제 설명]] | ||
> - [[#문제 추가 설명]] | ||
> - [[#해결 방법]] | ||
> - [[#참고]] | ||
> - [[#참고 레퍼런스]] | ||
### 문제 설명 | ||
VPC 내 리소스 대역폭 비용을 낮게 유지하면서 보안을 위해 외부 인터넷을 사용하지 않고, 특정 S3 버킷에 접근해야한다. | ||
### 문제 추가 설명 | ||
- 보안 | ||
- 외부 인터넷을 사용하지 않고 s3 버킷에 접근할 수 있어야 함 | ||
- private subnet에 있는 인스턴스에서 s3 버킷에 접근하려면 일반적인 경우, endpoint를 실제 s3의 엔드포인트로 설정하여 받아오게 되는데, private subnet이면 외부 인터넷 연결이 안되기 때문에 public subnet으로 바꿔줘야 접근할 수 있다. | ||
- 비용 | ||
- vpc 내 리소스에서 internet gateway를 사용하지 않고 s3 버킷으로 데이터 전송 | ||
- vpc에서 s3 버킷에 접근할 때 트래픽은 internet gateway를 통과하게 되고, 다시 돌아오는 과정도 포함함 -> 외부 인터넷을 경유하게 됨으로 인터넷 데이터 비용 발생 | ||
|
||
### 해결 방법 | ||
VPC 엔드포인트를 활용하여 private subnet에 있는 인스턴스에서 private s3 버킷 혹은 public s3 버킷으로 접근할 수 있다. | ||
> ![[Pasted image 20240804154437.png]] | ||
> ![[Pasted image 20240804154502.png]] | ||
> 출처 : 농심 tech 블로그 | ||
Gateway endpoint를 설정하면 routing table에 pl-id (prefix list id / 접두사 목록)가 생성되고, 해당 s3 endpoint는 vpc endpoint를 활용하여 접근하게 된다. | ||
### 참고 | ||
- VPC 엔드포인트 자체는 무료이고, 관련된 서비스를 이용하는 이용료만 발생한다. | ||
- S3 버킷에 대한 엑세스 제한을 위해서 엔드포인트 정책을 사용할 수 있는데, 계정이 소유한 버킷 뿐만 아니라 AWS 내 모든 S3 버킷에 대해서 적용이 가능하다. | ||
```json | ||
{ | ||
"Version": "2012-10-17", | ||
"Statement": [ | ||
{ | ||
"Effect": "Allow", | ||
"Principal": "*", | ||
"Action": "s3:GetObject", | ||
"Resource": "arn:aws:s3:::your-bucket-name/*", | ||
"Condition": { | ||
"StringEquals": { | ||
"aws:sourceVpce": "vpce-xxxxxxxx" | ||
} | ||
} | ||
} | ||
] | ||
} | ||
``` | ||
이렇게 만들면 해당 vpc에서만 버킷 접근이 가능하다. | ||
- VPC 엔드포인트의 라우팅 테이블 항목이 기본 0.0.0.0/0 보다 구체적으로 설정되어 있음으로(pl-id값이 설정되어 있음으로), 해당 서비스로 바인딩 된 모든 트래픽은 public 인터넷 경로가 아니라 vpc 엔드포인트로 이동한다. | ||
|
||
### 참고 레퍼런스 | ||
- [vpc endpoint란?](https://tech.cloud.nongshim.co.kr/2023/03/16/%EC%86%8C%EA%B0%9C-vpc-endpoint%EB%9E%80/) | ||
- |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
>[!info] 목차 | ||
> - [[#문제 설명]] | ||
> - [[#문제 추가 설명]] | ||
> - [[#알아야하는 개념]] | ||
> - [[#해결 방법]] | ||
> - [[#참고]] | ||
> - [[#참고 레퍼런스]] | ||
### 문제 설명 | ||
NAT 게이트웨이 수를 줄이려고 모든 VPC에 전이 라우팅을 적용하여 외부 인터넷 트래픽을 하나의 공유 서비스 VPC를 통해 사용하고자 한다. | ||
### 문제 추가 설명 | ||
- 비용 효율성 | ||
- 각 VPC마다 NAT 게이트웨이를 생성하면 비용이 많이 발생한다. | ||
- 모든 VPC가 하나의 NAT 게이트웨이를 공유하는 구조를 만들면 비용 절감이 가능하다. | ||
- 전이 라우팅(Transit Routing) | ||
- 전이 게이트웨이(Transit Gateway)를 활용하여 여러 VPC간 라우팅을 구현할 수 있다. | ||
- 모든 VPC 외부 트래픽을 공유 서비스 VPC로 라우팅하여 NAT 게이트웨이를 공유할 수 있다. | ||
### 알아야하는 개념 | ||
- Transit Gateway [공식문서](https://docs.aws.amazon.com/ko_kr/vpc/latest/tgw/what-is-transit-gateway.html) | ||
- 여러 VPC 간의 연결을 중앙 집중화하여 네트워크 관리 용이하게 작업 | ||
- 주요 기능 | ||
- 중앙 집중식 라우팅 허브 | ||
- 여러 VPC 연결을 중앙에서 관리 | ||
- 트래픽 모니터링 & 제어 | ||
- 중앙 집중화된 구조로 모니터링 및 제어가 쉬움 | ||
- 보안 정책 일관되게 적용 | ||
- 확장성 | ||
- 다른 VPC 및 온프레미스 네트워크와 연결 및 확장이 쉬움 | ||
- 비용 효율성 | ||
- 트래픽을 하나의 지점으로 집중시켜 네트워크 대역폭 사용을 줄이고, 여러 개별 연결을 하지 않아 비용 절감 가능 | ||
- 사용 사례 | ||
- 온프레미스 데이터 센터와 클라우드 간 연결 | ||
- 여러 지역 및 가용 영역에 걸친 클라우드 리소스 관리 | ||
- VPC간 트래픽을 중앙에서 제어하고 모니터링 | ||
- Hub-Spoke 네트워크 토폴로지 | ||
- Cloud Hub : 하나의 VPC가 모든 연결을 맺는 HUB VPC (중앙 관리용) | ||
- Spoke VPC : 온프레미스 혹은 다른 VPC | ||
### 해결 방법 | ||
AWS TGW(Transit Gateway)를 배포하고, 모든 VPC에 대한 전송 게이트웨이 VPC 연결을 구성한다. | ||
각 VPC의 라우팅 테이블을 모든 외부 트래픽을 트랜짓 게이트웨이로 보내도록 설정하고 모든 스포트(spoke) VPC가 공유 서비스 VPC의 NAT 게이트웨이를 사용할 수 있도록 설정한다. | ||
![[스크린샷 2024-08-04 오후 4.53.01.png]] | ||
|
||
### 참고 | ||
기존 방식으로는 다수의 피어링 연결을 사용하거나 타사 소프트웨어를 사용해야 했다. | ||
#### 문제 | ||
1. 단일 장애점 | ||
- 모든 인터넷 트래픽이 하나의 NAT 게이트웨이로 진행됨으로 해당 NAT 게이트웨이가 장애 발생하면 모든 VPC 인터넷 연결에 문제가 발생할 수 있음 | ||
2. 대역폭 및 성능문제 | ||
- 하나의 NAT 게이트웨이에 트래픽이 몰리면 대역폭 문제가 발생할 수 있음 | ||
### 참고 레퍼런스 | ||
- [AWS Direct Connect](https://aws.amazon.com/ko/directconnect/) |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
### ALB와 접근 매니저 | ||
- Application Load Balancer를 사용하여 각 인스턴스에 로드밸런싱, https 적용 등 다양한 작업을 수행할 수 있다. | ||
### 접두사 목록을 활용한 CIDR 관리 | ||
- 접두사 목록을 활용하여 특정 CIDR(IP) 블록들을 묶어서 관리할 수 있다. | ||
- 보안그룹을 조금 더 쉽게 적용할 수 있다고 생각하면 좋을 듯. | ||
- 이후 VPC 엔드포인트 또한 이 접두사 목록을 활용하면 라우팅 처리를 손쉽게 진행할 수 있다. | ||
### CloudFront | ||
- AWS 내에서 제공하는 CDN 서비스 | ||
- S3나 특정한 콘텐츠에 대해서 빠르게 접속 하거나, S3 객체의 원본 위치를 가리거나 | ||
### DynamoDB | ||
- AWS 내에서 제공하는 NoSQL 서비스 | ||
### VPC 엔드포인트 | ||
- VPC 엔드포인트를 활용하면 private subnet에 있는 인스턴스에서 AWS의 다른 서비스로 빠르게 접속이 가능하다. | ||
- 비용 절감 뿐만 아니라 인스턴스를 외부에 노출시키지 않을 수도 있다. | ||
### Transit Gateway | ||
- NAT가 여러개 있는 경우, 과금이 여러번 발생하는데 Transit Gateway로 단일 NAT를 활용하여 비용 절감할 수 있다. | ||
- 또한 온프레미스 환경의 서버도 동일한 vpc처럼 취급할 수 있는 기능도 추가할 수 있다. |