Amazon RDS Proxy for Aurora - Amazon Aurora

Amazon RDS Proxy for Aurora

Amazon RDS 프록시를 사용하면 애플리케이션이 데이터베이스 연결을 풀링하고 공유하도록 허용하여 확장 기능을 향상할 수 있습니다. RDS 프록시는 애플리케이션 연결을 유지하면서 예비 DB 인스턴스에 자동으로 연결하여 데이터베이스 장애에 대한 애플리케이션의 복원력을 높입니다. RDS 프록시를 사용하면 데이터베이스에 대해 AWS Identity and Access Management(IAM) 인증을 사용하고 AWS Secrets Manager에 자격 증명을 안전하게 저장합니다.

RDS 프록시를 사용하여 예기치 않은 데이터베이스 트래픽 급증을 처리할 수 있습니다. 급증을 처리하지 않으면 이러한 현상으로 인해 연결을 초과 구독하거나 새 연결이 빠른 속도로 생성되어 문제가 발생할 수 있습니다. RDS 프록시는 데이터베이스 연결 풀을 설정하고 이 풀에서 연결을 재사용합니다. 이 접근 방식은 매번 새 데이터베이스 연결을 여는 데서 오는 메모리 및 CPU 오버헤드 를 방지합니다. 과다 구독으로부터 데이터베이스를 보호하기 위해 생성되는 데이터베이스 연결 수를 제어할 수 있습니다.

RDS 프록시는 연결 풀에서 즉시 제공할 수 없는 애플리케이션 연결을 대기열에 추가하거나 제한합니다. 대기 시간이 증가할 수 있지만 애플리케이션은 갑작스러운 데이터베이스 장애 또는 압도 없이 계속 확장될 수 있습니다. 연결 요청이 지정된 한도를 초과하는 경우 RDS Proxy는 애플리케이션 연결을 거부합니다(즉, 부하 감소). 동시에 RDS가 사용 가능한 용량으로 제공할 수 있는 부하에 대해 예측 가능한 성능을 유지합니다.

자격 증명을 처리하고 각 새 연결에 대한 보안 연결을 설정하는 데 필요한 오버헤드를 줄일 수 있습니다. RDS 프록시는 데이터베이스를 대신하여 해당 작업 중 일부를 처리할 수 있습니다.

RDS 프록시는 지원하는 엔진 버전과 완전히 호환됩니다. 코드 변경 없이 대부분의 애플리케이션에 RDS 프록시를 활성화할 수 있습니다. 지원되는 엔진 버전의 목록은 Amazon RDS 프록시를 지원하는 리전 및 Aurora DB 엔진 섹션을 참조하세요.

리전 및 버전 사용 가능 여부

데이터베이스 엔진 버전 지원 및 AWS 리전에 지정된 RDS 프록시의 가용성에 대한 자세한 내용은 Amazon RDS 프록시를 지원하는 리전 및 Aurora DB 엔진 단원을 참조하십시오.

RDS 프록시의 할당량 및 제한 사항

RDS Proxy에는 다음과 같은 제한 사항이 적용됩니다.

  • 각 AWS 계정 ID는 프록시 20개로 제한됩니다. 애플리케이션에 더 많은 프록시가 필요한 경우 AWS Management Console의 Service Quotas 페이지에서 증량을 요청하세요. Service Quotas 페이지에서 Amazon Relational Database Service(Amazon RDS)를 선택하고 프록시를 찾아 할당량 증량을 요청합니다. AWS는 자동으로 할당량을 늘리거나 지원의 요청에 대한 검토를 보류할 수 있습니다.

  • 각 프록시는 최대 200개의 연결된 Secrets Manager 암호를 보유할 수 있습니다. 따라서 각 프록시는 지정된 시간에 최대 200개의 서로 다른 사용자 계정으로 연결할 수 있습니다.

  • 각 프록시에는 기본 엔드포인트가 있습니다. 또한 각 프록시에 최대 20개의 프록시 엔드포인트를 추가할 수 있습니다. 이러한 엔드포인트를 생성, 조회, 수정 및 삭제할 수 있습니다.

  • Aurora 클러스터에서, 기본 프록시 엔드포인트를 사용하는 모든 연결은 Aurora 라이터 인스턴스에 의해 처리됩니다. 읽기 집약적 워크로드에 대한 로드 밸런싱을 수행하기 위해 프록시에 대한 읽기 전용 엔드포인트를 생성할 수 있습니다. 해당 엔드포인트는 클러스터의 리더 엔드포인트에 연결을 전달합니다. 이렇게 하면 프록시 연결에서 Aurora 읽기 확장성의 이점을 활용할 수 있습니다. 자세한 내용은 프록시 엔드포인트 개요 섹션을 참조하세요.

  • Aurora Serverless v2 클러스터에서는 RDS 프록시를 사용할 수 있지만, Aurora Serverless v1 클러스터에서는 사용할 수 없습니다.

  • RDS Proxy는 데이터베이스와 동일한 Virtual Private Cloud(VPC)에 있어야 합니다. 데이터베이스에는 공개적으로 액세스할 수는 있지만 프록시에는 공개적으로 액세스할 수 없습니다. 예를 들어, 로컬 호스트에서 데이터베이스의 프로토타입을 생성하는 경우 프록시에 연결하는 데 필요한 네트워크 요구 사항을 설정하지 않는 한 프록시에 연결할 수 없습니다. 이는 로컬 호스트가 프록시의 VPC 외부에 있기 때문입니다.

    참고

    Aurora DB 클러스터의 경우 VPC 간 액세스를 활성화할 수 있습니다. 이렇게 하려면 프록시를 위한 추가 엔드포인트를 생성하고 해당 엔드포인트에 다른 VPC, 서브넷 및 보안 그룹을 지정합니다. 자세한 내용은 VPC 간에 Aurora 데이터베이스 액세스 단원을 참조하십시오.

  • 테넌시가 dedicated로 설정된 VPC에서는 RDS 프록시를 사용할 수 없습니다.

  • IAM 인증이 활성화된 Aurora DB 클러스터와 함께 RDS 프록시를 사용하는 경우 사용자 인증을 확인합니다. 프록시를 통해 연결하는 모든 사용자가 로그인 보안 인증 정보를 통해 인증되어야 합니다. Secrets Manager 및 RDS 프록시의 IAM 지원에 대한 자세한 내용은 AWS Secrets Manager에서 RDS 프록시용 데이터베이스 자격 증명 설정RDS 프록시에 대한 AWS Identity and Access Management(IAM) 정책 설정 섹션을 참조하세요.

  • SSL 호스트 이름 검증을 사용할 경우, 사용자 지정 DNS와 함께 RDS 프록시를 사용할 수 없습니다.

  • 각 프록시는 단일 대상 DB 클러스터와 연결될 수 있습니다. 그러나 여러 프록시를 동일한 DB 클러스터와 연결할 수 있습니다.

  • 텍스트 크기가 16KB보다 큰 문을 사용하면 프록시가 세션을 현재 연결에 고정합니다.

  • 특정 리전에는 프록시를 만들 때 고려해야 하는 가용 영역(AZ) 제한이 있습니다. 미국 동부(버지니아 북부) 리전은 use1-az3 가용 영역에서 RDS 프록시를 지원하지 않습니다. 미국 서부(캘리포니아 북부) 리전은 usw1-az2 가용 영역에서 RDS 프록시를 지원하지 않습니다. 프록시 생성 시 서브넷을 선택할 때는 위에서 언급한 가용 영역에서 서브넷을 선택하지 않도록 하세요.

  • 현재 RDS 프록시는 모든 전역 조건 컨텍스트 키를 지원하지 않습니다.

    전역 조건 컨텍스트 키에 대한 자세한 내용은 IAM 사용 설명서AWS 전역 조건 컨텍스트 키를 참조하세요.

  • RDS Custom for SQL Server에는 RDS 프록시를 사용할 수 없습니다.

  • 프록시에 데이터베이스 파라미터 그룹 수정을 반영하려면 변경 사항을 즉시 적용하기로 선택한 경우에도 인스턴스 재부팅이 필요합니다. 클러스터 수준 파라미터의 경우 클러스터 전체 재부팅이 필요합니다.

  • 프록시 대상을 등록하면 프록시가 rdsproxyadmin DB 사용자를 자동으로 만듭니다. rdsproxyadmin 사용자 또는 권한을 삭제하거나 수정하면 애플리케이션에 대한 프록시 가용성에 영향을 미칠 수 있습니다.

각 DB 엔진의 추가 제한 사항은 다음 섹션을 참조하세요.

Aurora MySQL 추가 제한 사항

Aurora MySQL 데이터베이스를 사용하는 RDS 프록시에는 다음과 같은 추가 제한 사항이 적용됩니다.

  • caching_sha2_password 인증에 대한 RDS Proxy 지원에는 보안(TLS) 연결이 필요합니다.

  • caching_sha2_password에 대한 RDS Proxy 지원에는 특정 go-sql 드라이버 버전과의 호환성 문제가 있는 것으로 알려져 있습니다.

  • MySQL 8.4 C 드라이버를 사용할 때 파라미터 수가 준비된 문에서 자리 표시자 수를 초과하는 경우 mysql_stmt_bind_named_param API가 잘못된 형식의 패킷을 형성할 수 있습니다. 이로 인해 잘못된 응답이 발생합니다. 자세한 내용은 MySQL bug report를 참조하세요.

  • 현재 모든 프록시는 MySQL에 대한 포트 3306에서 수신합니다. 프록시는 여전히 데이터베이스 설정에서 지정한 포트를 사용하여 데이터베이스에 연결됩니다.

  • EC2 인스턴스에서 실행되는 자체 관리형 MySQL 데이터베이스에는 RDS 프록시를 사용할 수 없습니다.

  • DB 파라미터 그룹의 read_only 파라미터가 1로 설정된 MySQL DB 인스턴스에는 RDS 프록시를 사용할 수 없습니다.

  • RDS 프록시는 MySQL 압축 모드를 지원하지 않습니다. 예를 들어 mysql 명령의 --compress 또는 -C 옵션에서 사용하는 압축을 지원하지 않습니다.

  • RDS 프록시가 동일한 데이터베이스 연결을 재사용하여 다른 쿼리를 실행하면 GET DIAGNOSTIC 명령을 처리하는 데이터베이스 연결에서 부정확한 정보가 반환될 수 있습니다. 이는 RDS 프록시가 데이터베이스 연결을 멀티플렉싱할 때 발생할 수 있습니다.

  • SET LOCAL 같은 일부 SQL 문 및 함수는 고정을 야기하지 않고 연결 상태를 변경할 수 있습니다. 최신 고정 동작은 RDS 프록시 고정 방지 단원을 참조하십시오.

  • 다중 문 쿼리에서는 ROW_COUNT() 함수를 사용할 수 없습니다.

  • RDS 프록시는 하나의 TLS 레코드에서 여러 응답 메시지를 처리할 수 없는 클라이언트 애플리케이션을 지원하지 않습니다.

중요

MySQL 데이터베이스와 관련된 프록시의 경우 초기화 쿼리에서 구성 파라미터 sql_auto_is_nulltrue로 설정하거나 0이 아닌 값으로 설정하지 마시기 바랍니다. 이렇게 하면 잘못된 애플리케이션 동작이 발생할 수 있습니다.

Aurora PostgreSQL 추가 제한 사항

Aurora PostgreSQL 데이터베이스를 사용하는 RDS 프록시에는 다음과 같은 추가 제한 사항이 적용됩니다.

  • RDS 프록시는 PostgreSQL에 대한 세션 고정 필터를 지원하지 않습니다.

  • 현재 모든 프록시는 PostgreSQL에 대한 포트 5432에서 수신합니다.

  • PostgreSQL의 경우 RDS 프록시는 현재 CancelRequest를 실행하여 클라이언트에서 쿼리를 취소하는 것을 지원하지 않습니다. Ctrl+C를 사용하여 대화형 psql 세션에서 장기 실행 쿼리를 취소하는 경우를 예로 들 수 있습니다.

  • PostgreSQL 함수 lastval의 결과가 항상 정확하지는 않습니다. 해결 방법으로 RETURNING 절과 함께 INSERT 문을 사용합니다.

  • RDS 프록시는 현재 스트리밍 복제 모드를 지원하지 않습니다.

  • default 데이터베이스가 있어야 합니다.

  • ALTER ROLE 또는 SET ROLE을 사용하여 사용자 역할을 변경하는 경우 해당 사용자와 프록시의 후속 연결에서 고정이 발생하는 경우 이 역할 설정을 사용하지 않을 수 있습니다. 이를 방지하려면 프록시를 사용할 때 프록시의 초기화 쿼리에 SET ROLE을 사용합니다. 자세한 내용은 RDS 프록시 생성에서 초기화 쿼리 섹션을 참조하세요.

중요

PostgreSQL 데이터베이스를 사용하는 기존 프록시의 경우, SCRAM만 사용하도록 데이터베이스 인증을 수정하면 최대 60초 동안 프록시를 사용할 수 없게 됩니다. 문제를 방지하려면 다음 중 하나를 수행합니다.

  • 데이터베이스에서 SCRAMMD5 인증이 모두 허용되는지 확인합니다.

  • SCRAM 인증만 사용하려면 새 프록시를 생성하고, 애플리케이션 트래픽을 새 프록시로 마이그레이션한 다음 이전에 데이터베이스와 연결된 프록시를 삭제합니다.