RDS 프록시에 대한 네트워크 사전 조건 설정
RDS 프록시를 사용하려면 Aurora DB 클러스터와 RDS 프록시 간에 공통의 Virtual Private Cloud(VPC)가 있어야 합니다. 이 VPC에는 서로 다른 가용 영역에 있는 최소 2개의 서브넷이 있어야 합니다. 계정은 이러한 서브넷을 소유하거나 다른 계정과 공유할 수 있습니다. VPC 공유에 대한 자세한 내용은 공유 VPC 작업을 참조하세요.
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_id
instance_id_2
instance_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_1
subnet_id_2
subnet_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_1
subnet_id_2
subnet_id_3
subnet_id_4
subnet_id_5
subnet_id_6
IP 주소 용량 계획
RDS 프록시는 등록된 DB 인스턴스의 크기 및 수를 기준으로 필요에 따라 용량을 자동으로 조정합니다. 등록된 데이터베이스 또는 내부 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 |
이러한 권장 IP 주소 수는 기본 엔드포인트만 있는 프록시에 대한 예상 개수입니다. 추가 엔드포인트 또는 읽기 전용 복제본이 있는 프록시에는 여유 IP 주소가 더 필요할 수 있습니다. 각 추가 엔드포인트에 대해 IP 주소를 세 개 더 예약하는 것이 좋습니다. 각 읽기 전용 복제본에 대해 해당 읽기 전용 복제본의 크기를 기준으로 테이블에 지정된 대로 추가 IP 주소를 예약하는 것이 좋습니다.
참고
RDS 프록시는 하나의 VPC 내에서 IP 주소를 215개 이상 지원하지 않습니다.
예를 들어, Aurora DB 클러스터에 연결된 프록시에 필요한 IP 주소를 추정하려는 상황을 가정해 보겠습니다.
이 경우 다음과 같이 가정합니다.
Aurora DB 클러스터에 크기가 db.r5.8xlarge인 라이터 인스턴스 1개와 크기가 db.r5.2xlarge인 리더 인스턴스 1개가 있습니다.
이 DB 클러스터에 연결된 프록시에는 기본 엔드포인트와 읽기 전용 역할을 가진 사용자 지정 엔드포인트 1개가 있습니다.
이 경우 프록시에는 약 63개의 여유 IP 주소(라이터 인스턴스에 45개, 리더 인스턴스에 15개, 추가 사용자 지정 엔드포인트에 3개)가 필요합니다.