AWS VPC 인프라 통합 구성 - 25년 05월
- 1 Disclaimer
- 2 VPC
- 3 Subnets
- 4 RDS Subnet groups
- 5 ElastiCache Subnet groups
- 6 Internet gateways
- 7 NAT gateways
- 8 Route tables
- 9 Security Group
- 10 Identity and Access Management (IAM)
- 11 EC2 Instance
- 12 RDS Instance
- 12.1 MySQL
- 12.2 Aurora MySQL
- 13 Amazon ElastiCache
- 14 Application load balancer
- 15 Network load balancer
- 15.1 Target Group 생성
- 15.2 Network load balancer 생성
- 15.3 Target Group 생성
- 15.4 Network load balancer 생성
- 16 S3 (Optional)
- 16.1 S3 버킷 생성
- 17 Gateway VPC Endpoint (Optional)
Disclaimer
이 문서는 High Availability 설정을 포함하여, Reference Architecture 를 독립적으로 새로 구성하는 과정을 예시적으로 제공하는 문서입니다. 이 문서에서 제시하는 VPC 생성, Security Group 생성 방식 등 설정내용은 참조용으로 제시하는 것입니다.
실제 설치 환경에서는 새로운 VPC, Subnets 가 아니라, 기존 VPC, Subnets 내에 QueryPie 를 설치하는 것이 적절할 가능성이 높습니다.
실제 설치 환경에서는 해당 환경의 특성을 고려하여, 시스템을 구성하시기 바랍니다.
VPC
AZ 의 선택은 Subnet 을 구성 시 할당됩니다.
VPC 는 하나의 리전(e.g. ap-northeast-2) 기준으로 복수의 AZ 를 걸친 형태로 구성할 수 있습니다.
논리적으로 격리된 가상 네트워크를 생성합니다.
생성 경로: VPC dashboard → Virtual private cloud → Your VPCs → Create VPC
VPC Settings
Resources to create: VPC only
Name tag: 식별 가능한 VPC 이름 지정
IPv4 CIDR block: IPv4 CIDR manual input
IPv4 CIDR: VPC 에 할당할 IP block 범위를 지정
IPv6 CIDR block: No IPv6 CIDR block
Tenancy: Default
Create VPC 클릭
VPC 생성 시 main route table 이 자동으로 생성됩니다.
Subnets
VPC 에서 하나의 AZ 를 지정하여 Subnet 대역을 생성합니다.
Subnet 은 생성 방법론에 따라 Private Subnet / Public Subnet으로 나뉩니다.
생성 경로: VPC dashboard → Virtual private cloud → Subnets → Create subnet
VPC
VPC ID: Subnet 을 생성할 VPC 를 선택
Subnet settings
Subnet name: 식별 가능한 Subnet 이름 지정
Availability Zone: 해당 리전에 맵핑할 AZ 선택
IPv4 VPC CIDR block: (VPC 에 할당한 CIDR block 이 여러개인 경우) CIDR block 을 선택
IPv4 subnet CIDR block: Subnet 에 할당할 IP block 지정
필요 시 Add new subnet 을 클릭하여 필요한 만큼의 Subnet을 추가 정의합니다.
정의가 끝나면 Create subnet 을 클릭 합니다.
Private subnet 과 Public subnet 을 각각 생성합니다.
Subnet 생성 시 main Network ACL 이 자동으로 생성됩니다.
Route table 은 main route table 이 자동으로 할당됩니다.
RDS Subnet groups
Amazon RDS 생성 시 위치할 Subnet group을 생성합니다.
Subnet group은 사전에 생성한 VPC (Private) Subnet 에서, RDS 를 할당할 영역을 그룹화합니다.
RDS를 Multi-AZ DB clusters로 구성 시에는, 3개의 서로 다른 AZ 에 위치한 3개의 Subnet 을 생성하여야 합니다.
생성 경로: Amazon RDS → Subnet groups → Create DB subnet group
Subnet group details
Name: 식별 가능한 Subnet group 이름 지정
Description: 생성 용도를 간략하게 작성
VPC: 위에서 생성한 VPC 선택
Add subnets
Availability Zones: Private subnet 이 존재하는 AZ 선택
Subnets: Private subnet 기준으로 2개 이상 선택 (Multi-AZ DB clusters 의 경우 3개 이상)
Create 클릭
ElastiCache Subnet groups
생성 경로: Amazon ElastiCache → Configurations → Subnet groups → Create subnet group
Amazon ElastiCache 생성 시 위치할 Subnet group을 생성합니다.
Subnet group은 사전에 생성한 VPC (Private) Subnet 에서, ElastiCache 를 할당할 영역을 그룹화합니다.
Subnet group settings
Name: 식별 가능한 Subnet group 이름 지정
VPC ID: 위에서 생성한 VPC 선택
Selected subnets: Private subnet 기준으로 2개 이상 선택
Create 클릭
Internet gateways
Public Subnet 에서 외부와 양방향 통신이 가능하도록 게이트웨이를 생성 및 할당 합니다.
Internet gateway 생성
생성 경로: VPC dashboard → Virtual private cloud → Internet gateways → Create internet gateway
Internet gateway settings
Name: 식별 가능한 igw 이름 지정
Create internet gateway 클릭
Internet gateway VPC 할당
할당 경로: VPC dashboard → Virtual private cloud → Internet gateways → 생성한 igw 선택 → Actions → Attatch to VPC
VPC
Available VPCs: 생성한 VPC 할당
Attach Internet gateway 클릭
NAT gateways
Private Subnet 에서 외부로부터 업데이트 정보 등을 받을 수 있는 NAT게이트웨이를 생성 합니다.
NAT게이트웨이는 Public Subnet에 생성되며, 가용할 Public Subnet 수 만큼 생성합니다.
생성 경로: VPC dashboard → Virtual private cloud → NAT gateways → Create NAT gateway
NAT gateway settings
Name: 식별 가능한 NAT gateway 이름 지정
Subnet: Private Subnet 에 설치 될 예정인 EC2 와 통신 할 Public Subnet 을 지정
Connectivity type: Public
Elastic IP allocation ID:
Allocate Elastic IP클릭 (Elastic IP 는 생성 후, 서비스 할당하지 않으면 별도 비용이 발생합니다.)Additional settings:
N/A
Create NAT gateway 클릭
Route tables
Subnet 의 Route table 관리합니다.
여기서는 기존 main route table 을 해제하고 각 Subnet 용도에 맞는 Route table을 생성하고 할당합니다.
Public route table 및 Private route table 생성
생성 경로: VPC dashboard → Virtual private cloud → Route tables → Create route table
Route table settings
Name: 식별 가능한 Route table 이름 지정
VPC: Route table 을 생성할 VPC 지정
Create route table 클릭
Private 전용 Route table 과 Public 전용 Route table 을 각각 생성합니다.
Route table 에 Subnet 할당
신규 생성한 Route table 에 subnet 을 할당합니다.
Private route table 에는 Private subnet 을, Public route table 에는 Public subnet 을 각각 할당합니다.
할당 경로: VPC dashboard → Virtual private cloud → Route tables → 생성한 route table 선택 → Actions → Edit subnet associations
Available subnets
Route table 에 local connection 으로 맵핑할 Subnet 지정
Save associations 클릭
Public Route table 에 Default Gateway 할당
신규 생성한 Public Route table 에 인터넷 구간 통신을 할 수 있도록 Default Gateway 를 할당합니다.
할당 경로: VPC dashboard → Virtual private cloud → Route tables → 생성한 route table 선택 → Actions → Edit routes
Add route 클릭
Destination: 0.0.0.0/0
Target: Internet Gateway → 생성한 igw 선택
Save Changes 클릭
Private Route table 에 NAT Gateway 할당
인스턴스가 신규 생성한 Private Route table 을 이용하여 업데이트 등을 수행할 수 있도록 NAT gateway 를 할당합니다.
할당 경로: VPC dashboard → Virtual private cloud → Route tables → 생성한 route table 선택 → Actions → Edit routes
Add route 클릭
Destination: 0.0.0.0/0
Target: NAT Gateway → 생성한 NAT gateway 선택
Save Changes 클릭
Security Group
생성 경로: VPC dashboard → Security → Security groups → Create security group
Basic details
Security group name: 식별 가능한 Security group 이름 지정
Description: 생성 용도를 간략하게 작성
VPC: Security group 을 생성 할 VPC를 지정
Inbound rules
Add rule클릭 하여 Inbound rule 을 생성한다 (없을 경우 ALL DENY 로 동작)설정 정보는 아래 각 Instance 유형별 Details를 참조하여 작성합니다.
Outbound rules
일반적으로는 별도 지정하지 않아도 됩니다.
Create security group 클릭
Application load balancer
Inbound
Type | Protocol | Port range | Source | Description |
|---|---|---|---|---|
HTTPS | TCP | 443 | 사용자 접속 대역 | 사용자의 QueryPie 웹 접속 |
HTTP | TCP | 80 | 사용자 접속 대역 | (Optional) 사용자의 QueryPie 웹 접속 |
HTTPS | TCP | 443 | Windows Server 대역 | Windows Server Agent Health Check, API Calls |
HTTP | TCP | 80 | Windows Server 대역 | (Optional) Windows Server Agent Health Check, API Calls |
Outbound
Type | Protocol | Port range | Destination | Description |
|---|---|---|---|---|
HTTP | TCP | 80 | QueryPie EC2 instances | Target Group Health Check |
Network load balancer
Inbound
Type | Protocol | Port range | Source | Description |
|---|---|---|---|---|
Custom TCP | TCP | 9000 | 사용자 접속 대역 | (DAC, SAC) Accessing QueryPie Agent Proxy for General Users |
Custom TCP | TCP | 6443 | 사용자 접속 대역 | (KAC) Accessing QueryPie Agent Proxy for General Users |
Custom TCP | TCP | 7447 | 사용자 접속 대역 | (WAC) Accessing QueryPie Agent Proxy for General Users |
Custom TCP | TCP | 40000-40100 | 사용자 접속 대역 | (DAC Only) Accessing QueryPie Agent Proxy for SaaS |
Outbound
Type | Protocol | Port range | Destination | Description |
|---|---|---|---|---|
HTTP | TCP | 80 | QueryPie EC2 instances | Target Group Health Check |
Custom TCP | TCP | 9000 | QueryPie EC2 instances | (DAC, SAC) Accessing QueryPie Agent Proxy for General Users |
Custom TCP | TCP | 6443 | QueryPie EC2 instances | (KAC) Accessing QueryPie Agent Proxy for General Users |
Custom TCP | TCP | 7447 | QueryPie EC2 instances | (WAC) Accessing QueryPie Agent Proxy for General Users |
Custom TCP | TCP | 40000-40100 | QueryPie EC2 instances | (DAC Only) Accessing QueryPie Agent Proxy for SaaS |
QueryPie EC2 instances
Inbound
Type | Protocol | Port range | Source | Description |
|---|---|---|---|---|
SSH | TCP | 22 | Bastion Hosts | (Optional) EC2 제어 |
HTTP | TCP | 80 | Application Load balancer | QueryPie 웹 접속 / Load balancer Health Check |
HTTP | TCP | 80 | Network Load balancer | Load balancer Health Check |
Custom TCP | TCP | 9000 | Network Load balancer | (DAC, SAC) Accessing QueryPie Agent Proxy for General Users |
Custom TCP | TCP | 6443 | Network Load balancer | (KAC) Accessing QueryPie Agent Proxy for General Users |
Custom TCP | TCP | 7447 | Network Load balancer | (WAC) Accessing QueryPie Agent Proxy for General Users |
Custom TCP | TCP | 40000-40100 | Network Load balancer | (DAC Only) Accessing QueryPie Agent Proxy for SaaS |
Outbound
Type | Protocol | Port range | Destination | Description |
|---|---|---|---|---|
HTTPS | TCP | 443 | 0.0.0.0/0 | External Communications (e.g. Okta, Slack, WAC External Domains) |
HTTP | TCP | 80 | 0.0.0.0/0 | External Communications (e.g. WAC External Domains) |
MySQL/Aurora | TCP | 3306 | RDS | QueryPie MySQL |
Custom TCP | TCP | 6379 | ElastiCache | QueryPie Redis |
(Optional) Bastion host instances
Inbound
Type | Protocol | Port range | Source | Description |
|---|---|---|---|---|
SSH | TCP | 22 | 사용자 접속 대역 | Private Subnet 의 EC2 instances 제어 |
Outbound
Type | Protocol | Port range | Destination | Description |
|---|---|---|---|---|
All Traffic | ALL | ALL | 0.0.0.0/0 |
|
RDS
Inbound
Type | Protocol | Port range | Source | Description |
|---|---|---|---|---|
MySQL/Aurora | TCP | 3306 | QueryPie EC2 instances | QueryPie Database |
Outbound: N/A
Type | Protocol | Port range | Destination | Description |
|---|---|---|---|---|
- | - |