예시: 프라이빗 서브넷과 NAT에 서버가 있는 VPC
이 예시에서는 프로덕션 환경에서 서버에 사용할 수 있는 VPC를 생성하는 방법을 보여줍니다. 복원력 향상을 위해 Auto Scaling과 Application Load Balancer를 사용하여 2개의 가용 영역에 서버를 배포합니다. 보안 강화를 위해 프라이빗 서브넷에 서버를 배포합니다. 서버는 로드 밸런서를 통해 요청을 수신합니다. 서버는 NAT 게이트웨이를 사용하여 인터넷에 연결할 수 있습니다. 복원력 향상을 위해 두 가용 영역 모두에 NAT 게이트웨이를 배포합니다.
개요
다음 다이어그램에서는 이 예시에 포함된 리소스의 개요를 제공합니다. VPC에는 2개의 가용 영역에 퍼블릭 서브넷과 프라이빗 서브넷이 있습니다. 각 퍼블릭 서브넷에는 NAT 게이트웨이와 로드 밸런서 노드가 있습니다. 서버는 프라이빗 서브넷에서 실행되고, Auto Scaling을 사용하여 시작 및 종료되고, 로드 밸런서에서 트래픽을 수신합니다. 서버는 NAT 게이트웨이를 사용하여 인터넷에 연결할 수 있습니다. 서버는 게이트웨이 VPC 엔드포인트를 사용하여 Amazon S3에 연결할 수 있습니다.
![2개의 가용 영역에 서브넷이 있는 VPC.](images/vpc-example-private-subnets.png)
라우팅
Amazon VPC 콘솔을 사용하여 이 VPC를 생성하면 로컬 경로와 인터넷 게이트웨이에 대한 경로가 있는 퍼블릭 서브넷에 대한 라우팅 테이블이 생성됩니다. 또한 로컬 경로와 NAT 게이트웨이, 송신 전용 인터넷 게이트웨이 및 게이트웨이 VPC 엔드포인트에 대한 경로가 있는 프라이빗 서브넷의 라우팅 테이블이 생성됩니다.
다음은 IPv4와 IPv6 모두에 대한 경로가 있는 퍼블릭 서브넷의 라우팅 테이블 예시입니다. 이중 스택 서브넷 대신 IPv4 전용 서브넷을 생성하는 경우 라우팅 테이블에는 IPv4 경로만 포함됩니다.
대상 주소 | 대상 |
---|---|
10.0.0.0/16 |
로컬 |
2001:db8:1234:1a00::/56 |
로컬 |
0.0.0.0/0 | igw-id |
::/0 | igw-id |
다음은 IPv4와 IPv6 모두에 대한 경로가 있는 프라이빗 서브넷 중 하나의 라우팅 테이블 예시입니다. IPv4 전용 서브넷을 생성한 경우 라우팅 테이블에는 IPv4 경로만 포함됩니다. 마지막 경로는 Amazon S3로 향하는 트래픽을 게이트웨이 VPC 엔드포인트로 전송합니다.
대상 주소 | 대상 |
---|---|
10.0.0.0/16 |
로컬 |
2001:db8:1234:1a00::/56 |
로컬 |
0.0.0.0/0 | nat-gateway-id |
::/0 | eigw-id |
s3-prefix-list-id |
s3-gateway-id |
보안
다음은 서버와 연결하는 보안 그룹에 대해 생성할 수 있는 규칙의 예시입니다. 보안 그룹은 리스너 포트 및 프로토콜을 통한 로드 밸런서의 트래픽을 허용해야 합니다. 또한 상태 확인 트래픽을 허용해야 합니다.
인바운드 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
소스 | 프로토콜 | 포트 범위 | 설명 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
로드 밸런서 보안 그룹의 ID |
리스너 프로토콜 |
리스너 포트 |
리스너 포트에서 로드 밸런서의 인바운드 트래픽 허용 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
로드 밸런서 보안 그룹의 ID |
상태 확인 프로토콜 |
상태 확인 경로 |
로드 밸런서의 인바운드 상태 확인 트래픽 허용 |
1. VPC 생성
다음 절차에 따라 2개의 가용 영역에 퍼블릭 서브넷과 프라이빗 서브넷이 있고 각 가용 영역에 NAT 게이트웨이가 있는 VPC를 생성하세요.
VPC를 생성하려면
https://console.aws.amazon.com/vpc/
에서 Amazon VPC 콘솔을 엽니다. -
대시보드에서 VPC 생성을 선택합니다.
-
생성할 리소스에서 VPC 등을 선택합니다.
-
VPC 구성
-
Name tag auto-generation(이름 태그 자동 생성)에 VPC의 이름을 입력합니다.
-
IPv4 CIDR 블록에 애플리케이션 또는 네트워크에 필요한 CIDR 블록을 입력하거나 기본 사항을 유지할 수 있습니다.
-
애플리케이션이 IPv6 주소를 사용하여 통신하는 경우 IPv6 CIDR 블록, 즉 Amazon에서 제공한 IPv6 CIDR 블록을 선택합니다.
-
-
서브넷 구성
-
복원 향상을 위해 여러 가용 영역에서 인스턴스를 시작할 수 있도록 가용 영역 수에서 2를 선택합니다.
-
퍼블릭 서브넷 수는 2를 선택합니다.
-
프라이빗 서브넷 수는 2를 선택합니다.
-
퍼블릭 서브넷에 대한 기본 CIDR 블록을 유지하거나 서브넷 CIDR 블록 사용자 지정을 확장하고 CIDR 블록을 입력할 수 있습니다. 자세한 내용은 서브넷 CIDR 블록 단원을 참조하십시오.
-
-
NAT 게이트웨이에서 복원력 향상을 위해 AZ당 1개를 선택합니다.
-
애플리케이션이 IPv6 주소를 사용하여 통신하는 경우 송신 전용 인터넷 게이트웨이에서 예를 선택합니다.
-
VPC 엔드포인트에서 인스턴스가 S3 버킷에 액세스해야 하는 경우 S3 게이트웨이를 기본값으로 유지합니다. 그렇지 않으면 프라이빗 서브넷의 인스턴스가 Amazon S3에 액세스할 수 없습니다. 이 옵션에는 비용이 들지 않으므로 나중에 S3 버킷을 사용할 경우 기본값을 유지할 수 있습니다. 없음을 선택하면 나중에 언제든지 게이트웨이 VPC 엔드포인트를 추가할 수 있습니다.
-
DNS 옵션에서 DNS 호스트 이름 활성화를 선택 취소합니다.
-
VPC 생성을 선택합니다.
2. 애플리케이션 배포
개발 또는 테스트 환경에서 서버 테스트를 완료하고 프로덕션 환경에서 애플리케이션을 배포하는 데 사용할 스크립트 또는 이미지를 생성하는 것이 가장 좋습니다.
Amazon EC2 Auto Scaling을 사용하여 여러 가용 영역에 서버를 배포하고 애플리케이션에 필요한 최소 서버 용량을 유지할 수 있습니다.
Auto Scaling을 사용하여 인스턴스 시작
-
시작 템플릿을 생성하여 Amazon EC2 Auto Scaling으로 EC2 인스턴스를 시작하는 데 필요한 구성 정보를 지정합니다. 단계별 지침은 Amazon EC2 Auto Scaling 사용 설명서의 Auto Scaling을 위한 시작 템플릿 생성을 참조하세요.
-
EC2 인스턴스 모음인 Auto Scaling을 최소, 최대 및 원하는 크기로 생성합니다. 단계별 지침은 Amazon EC2 Auto Scaling 사용 설명서의 시작 템플릿을 사용하여 Auto Scaling 생성을 참조하세요.
-
Auto Scaling의 인스턴스 간에 트래픽을 고르게 배포하는 로드 밸런서를 생성하고 Auto Scaling에 로드 밸런서를 연결합니다. 자세한 내용은 Elastic Load Balancing 사용 설명서https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/와 Amazon EC2 Auto Scaling 사용 설명서의 Elastic Load Balancing 사용을 참조하세요.
3. 구성 테스트
애플리케이션 배포를 완료한 후 테스트할 수 있습니다. 애플리케이션이 예상한 트래픽을 전송하거나 수신할 수 없는 경우 Reachability Analyzer를 사용하여 문제를 해결할 수 있습니다. 예를 들어, Reachability Analyzer는 라우팅 테이블 또는 보안 그룹의 구성 문제를 식별할 수 있습니다. 자세한 내용은 Reachability Analyzer 사용 설명서를 참조하십시오.
4. 정리
이 구성을 마치면 이를 삭제할 수 있습니다. VPC를 삭제하려면 먼저 Auto Scaling을 삭제하고, 인스턴스를 종료하고, NAT 게이트웨이를 삭제하고, 로드 밸런서를 삭제해야 합니다. 자세한 내용은 VPC 삭제 단원을 참조하십시오.