RDS 프록시에 대한 네트워크 사전 조건 설정
RDS 프록시를 사용하려면 Aurora DB 클러스터와 RDS 프록시 간에 공통의 Virtual Private Cloud(VPC)가 있어야 합니다. 이 VPC에는 서로 다른 가용 영역에 있는 최소 2개의 서브넷이 있어야 합니다. 계정은 이러한 서브넷을 소유하거나 다른 계정과 공유할 수 있습니다. VPC 공유에 대한 자세한 내용은 공유 VPC 작업을 참조하세요.
IPv6 지원의 경우 추가 네트워크 구성이 필요합니다.
-
IPv6 엔드포인트 네트워크 유형 - IPv6를 지원하도록 VPC 및 서브넷을 구성해야 합니다. 여기에는 VPC 및 서브넷에 할당된 IPv6 CIDR 블록이 포함됩니다.
-
듀얼 스택 엔드포인트 네트워크 유형 - VPC 및 서브넷은 IPv4 및 IPv6 주소 지정을 모두 지원해야 합니다.
-
IPv6 대상 연결 네트워크 유형 - 프록시에서 IPv6 연결을 지원하려면 듀얼 스택 모드로 데이터베이스를 구성해야 합니다.
Amazon EC2, Lambda 또는 Amazon ECS와 같은 클라이언트 애플리케이션 리소스는 프록시와 동일한 VPC에 있을 수 있습니다. 또는 프록시와 별도의 VPC에 있을 수도 있습니다. Aurora DB 클러스터에 성공적으로 연결했다면 필요한 네트워크 리소스가 이미 있는 것입니다.
서브넷에 대한 정보 가져오기
Aurora를 막 시작하는 경우 Amazon Aurora 환경 설정의 프로시저에 따라 데이터베이스에 연결하는 기본 사항을 학습할 수 있습니다. Amazon Aurora 시작하기의 자습서를 따를 수도 있습니다.
프록시를 만들려면 프록시가 작동하는 서브넷과 VPC를 제공해야 합니다. 다음 Linux 예에서는 AWS 계정에서 소유한 VPC 및 서브넷을 검사하는 AWS CLI 명령을 보여줍니다. 특히 CLI를 사용하여 프록시를 생성할 경우 서브넷 ID를 파라미터로 전달합니다.
aws ec2 describe-vpcs aws ec2 describe-internet-gateways aws ec2 describe-subnets --query '*[].[VpcId,SubnetId]' --output text | sort
다음 Linux 예시에서는 특정 Aurora DB 클러스터에 해당하는 서브넷 ID를 확인하는 AWS CLI 명령을 보여줍니다.
Aurora 클러스터의 경우 먼저, 연결된 DB 인스턴스 중 하나의 ID를 찾습니다. 해당 DB 인스턴스에서 사용하는 서브넷 ID를 추출할 수 있습니다. 이렇게 하려면 DB 인스턴스에 대한 describe 출력에서 DBSubnetGroup 및 Subnets 속성 내의 중첩된 필드를 검사합니다. 해당 데이터베이스 서버의 프록시를 설정할 때 이러한 서브넷 ID의 일부 또는 전부를 지정합니다.
$# Find the ID of any DB instance in the cluster.$aws rds describe-db-clusters --db-cluster-identifiermy_cluster_id--query '*[].[DBClusterMembers]|[0]|[0][*].DBInstanceIdentifier' --output text
my_instance_idinstance_id_2instance_id_3
DB 인스턴스 식별자를 찾은 다음 연결된 VPC를 검사하여 서브넷을 찾습니다. 다음 Linux 예제에서는 그 방법을 보여 줍니다.
$#From the DB instance, trace through the DBSubnetGroup and Subnets to find the subnet IDs. $ aws rds describe-db-instances --db-instance-identifiermy_instance_id--query '*[].[DBSubnetGroup]|[0]|[0]|[Subnets]|[0]|[*].SubnetIdentifier' --output text
subnet_id_1subnet_id_2subnet_id_3...
$#From the DB instance, find the VPC.$aws rds describe-db-instances --db-instance-identifiermy_instance_id--query '*[].[DBSubnetGroup]|[0]|[0].VpcId' --output text
my_vpc_id
$aws ec2 describe-subnets --filters Name=vpc-id,Values=my_vpc_id--query '*[].[SubnetId]' --output text
subnet_id_1subnet_id_2subnet_id_3subnet_id_4subnet_id_5subnet_id_6
IP 주소 용량 계획
RDS Proxy는 등록된 DB 인스턴스의 구성에 따라 자동으로 용량을 조정합니다. 프로비저닝된 인스턴스의 경우 인스턴스 크기에 따라 결정되고 Aurora Serverless v2 인스턴스의 경우 최대 ACU 용량에 따라 결정됩니다. 등록된 데이터베이스 또는 내부 RDS 프록시 유지 관리 작업의 크기를 늘리는 것과 같은 특정 작업의 경우 용량을 늘려야 할 수 있습니다. 이러한 작업 중에 프록시에 추가 용량을 프로비저닝하기 위해 더 많은 IP 주소가 필요할 수 있습니다. 이러한 추가 주소를 사용하면 워크로드에 영향을 주지 않고 프록시를 확장할 수 있습니다. 서브넷에 사용 가능한 IP 주소가 부족하면 프록시가 스케일 업되지 않을 수 있습니다. 이로 인해 쿼리 지연 시간이 길어지거나 클라이언트 연결이 실패할 수 있습니다. RDS는 서브넷에 사용 가능한 IP 주소가 충분하지 않을 경우 RDS-EVENT-0243 이벤트를 통해 알려줍니다. 이 이벤트에 대한 자세한 내용은 RDS 프록시 이벤트 작업 섹션을 참조하세요.
DB 인스턴스 클래스 크기를 기준으로 프록시의 서브넷에 다음과 같은 최소 개수의 사용 가능한 IP 주소를 예약합니다.
| DB 인스턴스 클래스 | 여유 IP 주소 최소 개수 |
|---|---|
|
db.*.xlarge 이하 |
10 |
|
db.*.2xlarge |
15 |
|
db.*.4xlarge |
25 |
|
db.*.8xlarge |
45 |
|
db.*.12xlarge |
60 |
|
db.*.16xlarge |
75 |
|
db.*.24xlarge |
110 |
Aurora Serverless v2의 경우, 최대 ACU 용량을 기준으로 프록시를 위해 서브넷에서 다음과 같은 최소 개수의 사용 가능한 IP 주소를 예약하세요.
Maximum ACU Capacity |
여유 IP 주소 최소 개수 |
|---|---|
|
16 이하 |
10 |
|
32 |
15 |
|
64 |
25 |
|
96 |
30 |
|
128 |
40 |
|
160 |
50 |
|
192 |
55 |
|
224 |
65 |
|
256 |
75 |
참고
RDS Proxy는 하나의 VPC 내에서 각 프록시에 대해 IP 주소를 215개보다 많이 소비하지 않습니다.
RDS 프록시에는 Aurora 데이터베이스에 최소 10개의 IP 주소가 필요합니다. 이러한 권장 IP 주소 수는 기본 엔드포인트만 있는 프록시에 대한 예상 개수입니다. 각 추가 사용자 지정 엔드포인트에 대해 IP 주소를 세 개 더 예약하는 것이 좋습니다. 각 Aurora 리더 인스턴스에 대해 대상에 대한 리더의 최대 ACU 또는 프로비저닝된 Aurora Serverless v2 대상에 대한 DB 인스턴스 크기를 기반으로 테이블에 지정된 대로 추가 IP 주소를 예약하는 것이 좋습니다.
다음이 있는 Aurora DB 클러스터에 연결된 프록시에 필요한 IP 주소 추정:
-
db.r5.8xlarge크기의 프로비저닝된 라이터 인스턴스 1개와db.r5.2xlarge크기의 프로비저닝된 리더 인스턴스 1개. -
이 클러스터에 연결된 프록시에는 기본 엔드포인트와 읽기 전용 역할을 가진 사용자 지정 엔드포인트가 있습니다.
이 경우 프록시에는 약 63개의 여유 IP 주소(라이터 인스턴스에 45개, 리더 인스턴스에 15개, 추가 사용자 지정 엔드포인트에 3개)가 필요합니다.
다음이 있는 Aurora DB 클러스터에 연결된 프록시에 필요한 IP 주소 추정:
-
최대 용량이 256ACU인 Aurora Serverless v2 라이터 인스턴스 1개와 최대 용량이 192ACU인 Serverless v2 리더 인스턴스 1개.
-
이 클러스터에 연결된 프록시에는 기본 엔드포인트와 읽기 전용 역할을 가진 사용자 지정 엔드포인트 1개가 있습니다.
이 경우 프록시에는 약 133개의 여유 IP 주소(라이터 인스턴스에 75개, 리더 인스턴스에 55개, 추가 사용자 지정 엔드포인트에 3개)가 필요합니다.
다음이 있는 Aurora 클러스터에 연결된 프록시에 필요한 IP 주소 추정:
-
DB 인스턴스 크기가 db.r5.4xlarge인 프로비저닝된 라이터 인스턴스 1개와 최대 용량이 64ACU인 Serverless v2 리더 인스턴스 1개.
-
이 클러스터에 연결된 프록시에는 기본 엔드포인트와 읽기 전용 역할을 가진 사용자 지정 엔드포인트 1개가 있습니다.
이 경우 프록시에는 약 53개의 여유 IP 주소(라이터 인스턴스에 25개, 리더 인스턴스에 25개, 추가 사용자 지정 엔드포인트에 3개)가 필요합니다.
다음이 있는 Aurora DB 클러스터에 연결된 프록시에 필요한 IP 주소 추정:
-
db.r5.24xlarge 크기의 프로비저닝된 라이터 인스턴스 1개와 db.r5.8xlarge 크기의 프로비저닝된 리더 인스턴스 3개.
-
이 DB 클러스터에 연결된 프록시에는 기본 엔드포인트와 읽기 전용 역할을 가진 사용자 지정 엔드포인트 1개가 있습니다.
이 경우 프록시에는 215개의 무료 IP 주소가 필요합니다. 계산에서 248개의 IP(110 + (3*45) + 3)를 제안하지만 RDS 프록시는 VPC의 각 프록시에 대해 215개를 초과하는 IP 주소를 소비하지 않습니다.