Amazon RDS 프록시 사용 - Amazon Relational Database Service

Amazon RDS 프록시 사용

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

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

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

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

RDS 프록시는 지원하는 엔진 버전과 완전히 호환됩니다. 코드 변경 없이 대부분의 애플리케이션에 RDS 프록시를 활성화할 수 있습니다.

리전 및 버전 사용 가능 여부

기능 가용성 및 해당 지원은 각 데이터베이스 엔진의 특정 버전 및 AWS 리전에 따라 다릅니다. RDS Proxy에서 사용할 수 있는 Amazon RDS의 버전 및 지역에 대한 자세한 내용은 Amazon RDS 프록시 단원을 참조하십시오.

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

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

  • 각 AWS 계정 ID에 대해 최대 20개의 프록시를 보유할 수 있습니다. 애플리케이션에 더 많은 프록시가 필요한 경우 AWS Support 조직에서 티켓을 열어 추가 프록시를 요청할 수 있습니다.

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

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

  • 복제 구성의 RDS DB 인스턴스의 경우, 프록시는 읽기 전용 복제본이 아닌 라이터 DB 인스턴스에만 연결할 수 있습니다.

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

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

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

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

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

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

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

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

RDS for MariaDB 추가 제한 사항

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

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

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

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

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

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

  • RDS 프록시는 MariaDB auth_ed25519 플러그인을 지원하지 않습니다.

  • RDS 프록시는 MariaDB 데이터베이스용 전송 계층 보안(TLS) 버전 1.3을 지원하지 않습니다.

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

중요

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

RDS for Microsoft SQL Server 추가 제한 사항

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

  • 프록시에 대해 만들어야 하는 Secrets Manager 암호의 수는 DB 인스턴스에서 사용하는 콜레이션에 따라 달라집니다. 예를 들어 DB 인스턴스에서 대/소문자를 구분하는 콜레이션을 사용한다고 가정해 보겠습니다. 애플리케이션에서 'Admin'과 'admin'을 모두 허용하는 경우 프록시에는 두 개의 개별 암호가 필요합니다. SQL Server의 콜레이션에 대한 자세한 내용은 Microsoft SQL Server 설명서를 참조하세요.

  • RDS 프록시는 Active Directory를 사용하는 연결을 지원하지 않습니다.

  • 토큰 속성을 지원하지 않는 클라이언트에는 IAM 인증을 사용할 수 없습니다. 자세한 내용은 Microsoft SQL Server를 사용하여 프록시에 연결할 때 고려할 사항 단원을 참조하십시오.

  • @@IDENTITY, @@ROWCOUNTSCOPE_IDENTITY의 결과가 항상 정확하지는 않습니다. 차선책은 동일한 세션 문에서 해당 값을 검색하여 올바른 정보를 반환하는지 확인하는 것입니다.

  • 연결이 여러 개의 활성 결과 집합(MARS)을 사용하는 경우 RDS 프록시는 초기화 쿼리를 실행하지 않습니다. 사용자 이름에 대한 자세한 정보는 Microsoft SQL 설명서를 참조하세요.

  • RDS 프록시는 메이저 버전 SQL Server 2014에서 실행되는 RDS for SQL Server DB 인스턴스를 지원하지 않습니다.

RDS for MySQL 추가 제한 사항

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

  • RDS 프록시는 MySQL sha256_passwordcaching_sha2_password 인증 플러그인을 지원하지 않습니다. 이 플러그인은 사용자 계정 암호에 대한 SHA-256 해싱을 구현합니다.

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

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

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

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

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

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

중요

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

RDS for PostgreSQL 추가 제한 사항

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

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

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

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

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

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

  • RDS for PostgreSQL 16에서는 scram_iterations 값을 수정해도 프록시와 데이터베이스 간의 인증 프로세스에만 영향을 줍니다. 특히, ClientPasswordAuthTypescram-sha-256으로 구성한 경우 scram_iterations 값을 사용자 지정해도 클라이언트-프록시 암호 인증에는 영향을 주지 않습니다. 대신 클라이언트-프록시 암호 인증의 반복 값은 4096으로 고정됩니다.

중요

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

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

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