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

Amazon RDS 프록시 사용

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

참고

RDS Proxy는 MySQL 및 PostgreSQL과 완전히 호환됩니다. 코드 변경 없이 대부분의 애플리케이션에 RDS Proxy를 활성화할 수 있습니다.

RDS Proxy를 사용하면 연결을 초과 구독하거나 빠른 속도로 새 연결을 생성할 경우 발생할 수 있는 예기치 않은 데이터베이스 트래픽 급증을 처리할 수 있습니다. RDS Proxy는 데이터베이스 연결 풀을 설정하고 매번 새 데이터베이스 연결을 여는 데 필요한 메모리 및 CPU 오버헤드 없이 이 풀에서 연결을 다시 사용합니다. 과다 구독으로부터 데이터베이스를 보호하기 위해 생성되는 데이터베이스 연결 수를 제어할 수 있습니다.

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

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

RDS 프록시에 지원되는 엔진 및 리전 가용성

RDS 프록시는 다음 데이터베이스 엔진 버전을 지원합니다.

  • RDS for MySQL - MySQL 5.6, 5.7, 8.0

  • RDS for PostgreSQL - 버전 10.10 이상 마이너 버전, 버전 11.5 이상 마이너 버전, 및 버전 12.5 이상 마이너 버전, 버전 13.1 이상 마이너 버전

RDS 프록시는 다음 AWS 리전에서 사용할 수 있습니다.

  • 미국 동부(오하이오)

  • 미국 동부(버지니아 북부)

  • 미국 서부(캘리포니아 북부)

  • 미국 서부(오리건)

  • 아프리카(케이프타운)

  • 아시아 태평양(홍콩)

  • 아시아 태평양(뭄바이)

  • 아시아 태평양(오사카)

  • 아시아 태평양(서울)

  • 아시아 태평양(싱가포르)

  • 아시아 태평양(시드니)

  • 아시아 태평양(도쿄)

  • 캐나다(중부)

  • 유럽(프랑크푸르트)

  • 유럽(아일랜드)

  • 유럽(런던)

  • 유럽(밀라노)

  • 유럽(파리)

  • 유럽(스톡홀름)

  • 중동(바레인)

  • 남아메리카(상파울루)

RDS Proxy의 할당량 및 제한 사항

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

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

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

  • 각 프록시에 대해 최대 20개의 엔드포인트를 생성, 보기, 수정 및 삭제할 수 있습니다. 이러한 엔드포인트는 각 프록시에 대해 자동으로 생성되는 기본 엔드포인트에 추가됩니다.

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

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

  • Aurora 서버리스 클러스터에는 RDS Proxy를 사용할 수 없습니다.

  • 현재 Aurora 글로벌 데이터베이스의 일부인 Aurora 클러스터에서 RDS Proxy 사용은 지원되지 않습니다.

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

    참고

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

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

  • IAM 인증이 활성화된 RDS DB 인스턴스 또는 Aurora DB 클러스터와 함께 RDS Proxy를 사용하는 경우 프록시를 통해 연결하는 모든 사용자가 사용자 이름과 암호를 통해 인증되는지 확인합니다. RDS Proxy의 IAM 지원에 대한 자세한 내용은 AWS Identity and Access Management(IAM) 정책 설정 단원을 참조하세요.

  • 사용자 지정 DNS에서는 RDS Proxy를 사용할 수 없습니다.

  • RDS Proxy는 MySQL 엔진 패밀리와 PostgreSQL 엔진 패밀리에서 사용할 수 있습니다.

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

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

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

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

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

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

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

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

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

  • RDS 프록시는 PostgreSQL SCRAM-SHA-256 인증을 지원하지 않습니다.

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

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

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

  • RDS 프록시는 클라이언트 애플리케이션 드라이버가 PostgreSQL 확장 쿼리 프로토콜을 사용할 때 연결을 다중화하지 않습니다.