예시: 웹 및 데이터베이스 서버용 VPC
이 예시에서는 프로덕션 환경에서 2계층 아키텍처에 사용할 수 있는 VPC를 생성하는 방법을 보여줍니다. 복원력 향상을 위해 2개의 가용 영역에 서버를 배포합니다.
개요
다음 다이어그램에서는 이 예시에 포함된 리소스의 개요를 제공합니다. VPC에는 2개의 가용 영역에 퍼블릭 서브넷과 프라이빗 서브넷이 있습니다. 웹 서버는 퍼블릭 서브넷에서 실행되며 로드 밸런서를 통해 클라이언트로부터 트래픽을 수신합니다. 웹 서버의 보안 그룹은 로드 밸런서의 트래픽을 허용합니다. 데이터베이스 서버는 프라이빗 서브넷에서 실행되며 웹 서버로부터 트래픽을 수신합니다. 데이터베이스 서버의 보안 그룹은 웹 서버의 트래픽을 허용합니다. 데이터베이스 서버는 게이트웨이 VPC 엔드포인트를 사용하여 Amazon S3에 연결할 수 있습니다.

라우팅
Amazon VPC 콘솔을 사용하여 이 VPC를 생성하면 로컬 경로와 인터넷 게이트웨이에 대한 경로가 있는 퍼블릭 서브넷의 라우팅 테이블과 로컬 경로 및 게이트웨이 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 |
로컬 |
s3-prefix-list-id |
s3-gateway-id |
보안
이 예시 구성에서는 로드 밸런서용 보안 그룹, 웹 서버용 보안 그룹 및 데이터베이스 서버용 보안 그룹을 생성합니다.
로드 밸런서
Application Load Balancer 또는 Network Load Balancer의 보안 그룹에서는 로드 밸런서 리스너 포트의 클라이언트에서 제공되는 인바운드 트래픽이 허용되어야 합니다. 인터넷상의 위치와 관계 없이 모든 트래픽을 수락하려면 소스를 0.0.0.0/0으로 지정하세요. 로드 밸런서 보안 그룹에서는 로드 밸런서에서 출발하여 인스턴스 리스너 포트 및 상태 확인 포트의 대상 인스턴스로 향하는 아웃바운드 트래픽도 허용되어야 합니다.
웹 서버
다음 보안 그룹 규칙을 사용하면 웹 서버가 로드 밸런서로부터 HTTP 및 HTTPS 트래픽을 수신할 수 있습니다. 웹 서버가 네트워크에서 SSH 또는 RDP 트래픽을 수신하도록 허용할 수도 있습니다. 웹 서버는 데이터베이스 서버에 SQL 또는 MySQL 트래픽을 전송할 수 있습니다.
소스 | 프로토콜 | 포트 범위 | 설명 |
---|---|---|---|
로드 밸런서 보안 그룹의 ID |
TCP | 80 | 로드 밸런서에서 접근하는 인바운드 HTTP 액세스를 허용 |
로드 밸런서 보안 그룹의 ID |
TCP | 443 | 로드 밸런서에서 접근하는 인바운드 HTTPS 액세스를 허용 |
네트워크의 퍼블릭 IPv4 주소 범위 |
TCP | 22 | (선택 사항) 네트워크에서 IPv4 IP 주소의 인바운드 SSH 액세스 허용 |
네트워크의 IPv6 주소 범위 |
TCP | 22 | (선택 사항) 네트워크에서 IPv6 IP 주소의 인바운드 SSH 액세스 허용 |
네트워크의 퍼블릭 IPv4 주소 범위 |
TCP | 3389 | (선택 사항) 네트워크에서 IPv4 IP 주소의 인바운드 RDP 액세스 허용 |
네트워크의 IPv6 주소 범위 |
TCP | 3389 | (선택 사항) 네트워크에서 IPv6 IP 주소의 인바운드 RDP 액세스 허용 |
대상 | 프로토콜 | 포트 범위 | 설명 |
---|---|---|---|
Microsoft SQL Server를 실행하는 인스턴스의 보안 그룹 ID |
TCP |
1433 |
데이터베이스 서버에 대한 아웃바운드 Microsoft SQL Server 액세스 허용 |
MySQL을 실행하는 인스턴스의 보안 그룹 ID |
TCP |
3306 |
데이터베이스 서버에 대한 아웃바운드 MySQL 액세스 허용 |
데이터베이스 서버
다음 보안 그룹 규칙은 데이터베이스 서버가 웹 서버로부터 읽기 및 쓰기 요청을 수신하도록 허용합니다.
소스 | 프로토콜 | 포트 범위 | 설명 |
---|---|---|---|
웹 서버 보안 그룹의 ID |
TCP | 1433 | 웹 서버의 인바운드 Microsoft SQL Server 액세스 허용 |
웹 서버 보안 그룹의 ID |
TCP | 3306 | 웹 서버의 인바운드 MySQL Server 액세스 허용 |
대상 | 프로토콜 | 포트 범위 | 설명 |
---|---|---|---|
0.0.0.0/0 | TCP | 80 | IPv4를 통해 인터넷에 대한 아웃바운드 HTTP 액세스 허용 |
0.0.0.0/0 | TCP | 443 | IPv4를 통해 인터넷에 대한 아웃바운드 HTTPS 액세스 허용 |
Amazon RDS DB 인스턴스의 보안 그룹에 대한 자세한 내용은 Amazon RDS 사용 설명서의 보안 그룹을 통한 액세스 제어를 참조하세요.
1. VPC 생성
다음 절차에 따라 2개의 가용 영역에 퍼블릭 서브넷과 프라이빗 서브넷이 있는 VPC를 생성하세요.
VPC를 생성하려면
https://console.aws.amazon.com/vpc/
에서 Amazon VPC 콘솔을 엽니다. -
대시보드에서 VPC 생성을 선택합니다.
-
생성할 리소스에서 VPC 등을 선택합니다.
-
VPC 구성:
-
이름 태그 자동 생성을 선택한 상태로 유지하여 VPC 리소스에 이름 태그를 생성하거나 선택을 취소하여 VPC 리소스에 고유한 이름 태그를 제공합니다.
-
IPv4 CIDR 블록에 애플리케이션 또는 네트워크에 필요한 CIDR 블록을 입력하거나 기본 사항을 유지할 수 있습니다. 자세한 내용은 VPC CIDR 블록 단원을 참조하십시오.
-
(선택 사항) 애플리케이션이 IPv6 주소를 사용하여 통신하는 경우 IPv6 CIDR 블록, 즉 Amazon에서 제공한 IPv6 CIDR 블록을 선택합니다.
-
테넌시 옵션을 선택합니다. 이 옵션은 VPC로 시작하는 EC2 인스턴스가 다른 AWS 계정과 공유되는 하드웨어에서 실행되는지 아니면 사용자 전용 하드웨어에서 실행되는지를 정의합니다. VPC의 테넌시를
Default
로 선택하면 이 VPC로 시작된 EC2 인스턴스에서는 인스턴스를 시작할 때 지정된 테넌시 속성을 사용합니다. 자세한 내용은 Amazon EC2 사용 설명서의 정의된 파라미터를 사용하여 인스턴스 시작을 참조하세요. VPC의 테넌시를Dedicated
로 선택하면 인스턴스는 항상 전용 하드웨어에서 전용 인스턴스로 실행됩니다.
-
-
서브넷 구성:
-
복원 향상을 위해 2개의 가용 영역에서 인스턴스를 시작할 수 있도록 가용 영역 수에서 2를 선택합니다.
-
퍼블릭 서브넷 수는 2를 선택합니다.
-
프라이빗 서브넷 수는 2를 선택합니다.
-
서브넷에 대한 기본 CIDR 블록을 유지하거나 서브넷 CIDR 블록 사용자 지정을 확장하고 CIDR 블록을 입력할 수 있습니다. 자세한 내용은 서브넷 CIDR 블록 단원을 참조하십시오.
-
-
NAT 게이트웨이에서 기본값인 없음을 유지합니다.
-
VPC 엔드포인트에서 기본값인 S3 게이트웨이를 유지합니다. S3 버킷에 액세스하지 않으면 효과가 없지만 이 VPC 엔드포인트를 활성화하는 데 비용이 들지 않습니다.
-
DNS 옵션에서 두 옵션을 모두 선택된 상태로 둡니다. 결과적으로 웹 서버는 퍼블릭 IP 주소에 해당하는 퍼블릭 DNS 호스트 이름을 수신하게 됩니다.
-
VPC 생성을 선택합니다.
2. 애플리케이션 배포
개발 또는 테스트 환경에서 웹 서버와 데이터베이스 서버 테스트를 완료하고 프로덕션 환경에서 애플리케이션을 배포하는 데 사용할 스크립트 또는 이미지를 생성하는 것이 가장 좋습니다.
웹 서버에 EC2 인스턴스를 사용할 수 있습니다. EC2 인스턴스를 배포하는 다양한 방법이 있습니다. 예:
가용성 향상을 위해 Amazon EC2 Auto Scaling을 사용하여 여러 가용 영역에 서버를 배포하고 애플리케이션에 필요한 최소 서버 용량을 유지할 수 있습니다.
Elastic Load Balancing을 사용하여 서버 전체에 트래픽을 균일하게 배포할 수 있습니다. Auto Scaling에 로드 밸런서를 연결할 수 있습니다.
데이터베이스 서버용 EC2 인스턴스를 사용하거나 목적별 데이터베이스 유형 중 하나를 사용할 수 있습니다. 자세한 내용은 AWS의 데이터베이스: 선택 방법을 참조하세요.
3. 구성 테스트
애플리케이션 배포를 완료한 후 테스트할 수 있습니다. 애플리케이션이 예상한 트래픽을 전송하거나 수신할 수 없는 경우 Reachability Analyzer를 사용하여 문제를 해결할 수 있습니다. 예를 들어, Reachability Analyzer는 라우팅 테이블 또는 보안 그룹의 구성 문제를 식별할 수 있습니다. 자세한 내용은 Reachability Analyzer 사용 설명서를 참조하세요.
4. 정리
이 구성을 마치면 이를 삭제할 수 있습니다. VPC를 삭제하려면 먼저 인스턴스를 종료하고 로드 밸런서를 삭제해야 합니다. 자세한 내용은 VPC 삭제 단원을 참조하십시오.