Amazon RDS DB 인스턴스에 연결할 때 발생하는 문제를 해결하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2019년 8월 30일

Amazon Relational Database Service(Amazon RDS) DB 인스턴스에 연결할 수 없습니다. 연결할 수 없는 이유는 무엇이며 해결하려면 어떻게 해야 합니까?

간략한 설명

Amazon RDS DB 인스턴스에 연결할 수 없는 이유는 여러 가지 요인이 가능합니다. 다음은 가장 일반적인 몇 가지 이유입니다.

  • RDS DB 인스턴스가 사용 가능 이외의 상태이므로, 연결을 허용할 수 없습니다.
  • 인스턴스에 연결하는 데 사용하는 소스가 보안 그룹, 네트워크 ACL 또는 로컬 방화벽의 RDS DB 인스턴스에 액세스할 권한이 있는 소스에서 누락되었습니다.
  • 잘못된 DNS 이름 또는 엔드포인트가 DB 인스턴스에 연결하는 데 사용되었습니다.
  • 다중 AZ 인스턴스에서 장애 조치가 수행되고 보조 인스턴스가 인바운드 연결을 허용하지 않는 서브넷 또는 라우팅 테이블을 사용합니다.
  • 사용자 인증이 잘못되었습니다.

​해결 방법

인스턴스가 사용 가능한 상태인지 확인

최근에 DB 인스턴스를 시작하거나 재부팅한 경우 Amazon RDS 콘솔에서 인스턴스가 사용 가능 상태인지 확인합니다. DB 인스턴스 크기에 따라 네트워크 연결에 인스턴스를 사용할 수 있을 때까지 최대 20분이 걸릴 수 있습니다.

인스턴스가 실패 상태인 경우 RDS DB 인스턴스가 실패 상태입니다를 참조하십시오.

DB 인스턴스가 연결을 허용하는지 확인

DB 인스턴스에 연결하는 소스에서 전송되는 트래픽이 다음 중 하나 이상에 의해 제한되지 않는지 합니다.

  • DB 인스턴스와 연결된 모든 Amazon Virtual Private Cloud(Amazon VPC) 보안 그룹. 필요한 경우 DB 인스턴스에서 송수신되는 소스와 관련된 트래픽을 허용하는 VPC와 연결된 보안 그룹에 규칙을 추가합니다. IP 주소, IP 주소 범위 또는 다른 VPC 보안 그룹을 지정할 수 있습니다. VPC 및 DB 인스턴스에 대한 일반적인 내용은 VPC에서 DB 인스턴스에 액세스하는 시나리오를 참조하십시오.
  • DB 인스턴스와 연결된 모든 DB 보안 그룹. DB 인스턴스가 VPC에 없는 경우 DB 보안 그룹을 사용하여 트래픽을 제한할 수 있습니다. 연결하는 데 사용하는 IP 주소 범위, Amazon Elastic Compute Cloud(Amazon EC2) 보안 그룹 또는 EC2 Classic 인스턴스에서 트래픽을 허용하도록 DB 보안 그룹을 업데이트합니다.
  • VPC 외부 연결. 인스턴스에 공개적으로 액세스할 수 있고 인스턴스가 퍼블릭 서브넷과 연결되었는지 확인합니다(라우팅 테이블이 인터넷 게이트웨이로부터의 액세스를 허용함). 자세한 내용은 VPC에서 DB 인스턴스에 액세스하는 시나리오를 참조하십시오.
  • 네트워크 ACL(액세스 제어 목록). 네트워크 ACL은 VPC의 특정 서브넷에 있는 리소스에 대한 방화벽 역할을 합니다. VPC에서 ACL을 사용하는 경우 DB 인스턴스에서 송수신되는 인바운드 및 아웃바운드 트래픽을 허용하는 규칙이 있는지 확인해야 합니다.
  • 네트워크 또는 로컬 방화벽. 네트워크 관리자에게 문의하여 네트워크가 DB 인스턴스가 인바운드 및 아웃바운드 통신에 사용하는 포트에서 송수신되는 트래픽을 허용하는지 확인합니다.
    참고: Amazon RDS는 ping을 포함하여 ICMP(인터넷 제어 메시지 프로토콜) 트래픽을 허용하지 않습니다.

잠재적 DNS 이름 또는 엔드포인트 문제 해결

DB 인스턴스에 연결하는 경우 Amazon RDS 콘솔에서 제공하는 DNS 이름(엔드포인트)을 사용합니다. 올바른 엔드포인트를 사용해야 하며, DB 인스턴스에 연결하는 데 사용하는 클라이언트에 올바른 형식으로 엔드포인트를 제공해야 합니다. 다양한 클라이언트 애플리케이션에서 엔드포인트를 찾고 올바르게 사용하는 방법에 대한 지침을 포함하여 DB 엔진 연결 자습서 목록은 Amazon RDS 시작하기를 참조하십시오.

예를 들어, VPC 내 Amazon EC2 인스턴스에서 DB 인스턴스 엔드포인트에 대해 nslookup을 수행합니다.

nslookup myexampledb.xxxx.us-east-1.rds.amazonaws.com 
Server: xx.xx.xx.xx 
Address: xx.xx.xx.xx#53

신뢰할 수 없는 답변에 대한 다음 예제를 참조하십시오.

Name: myexampledb.xxxx.us-east-1.rds.amazonaws.com 
Address: 172.31.xx.x"

다중 AZ 배포와 연결된 라우팅 테이블 확인

다중 AZ 배포를 생성하는 경우 다른 가용 영역에서 여러 복제본 DB 인스턴스를 시작하여 애플리케이션의 내결함성을 개선합니다. 각 인스턴스와 연결된 서브넷이 동일하거나 비슷한 라우팅 테이블과 연결되었는지 확인합니다. 그렇지 않으면 기본 인스턴스가 대기 복제본으로 장애 조치되고 대기 복제본이 다른 라우팅 테이블과 연결된 경우 이전에 DB 인스턴스로 라우팅된 트래픽이 더 이상 올바르게 라우팅되지 않을 수 있습니다.

라우팅 테이블을 구성하는 방법에 대한 자세한 내용은 라우팅 테이블 작업을 참조하십시오. 다중 AZ 배포에 대한 자세한 내용은 Amazon RDS의 고가용성(다중 AZ)을 참조하십시오.

참고: DB 인스턴스에 연결할 수 있지만 인증 오류가 발생하는 경우 Amazon RDS DB 인스턴스의 마스터 사용자 암호를 재설정하려면 어떻게 해야 합니까?를 참조하십시오.

연결 확인

다음 명령 중 하나를 실행하여 연결을 확인합니다.

telnet <RDS endpoint> <port number>
nc <RDS endpoint> <port number>

telnet 또는 nc 명령이 성공하면 네트워크 연결이 설정되었으며 사용자 이름 및 암호와 같은 데이터베이스에 대한 사용자 인증으로 인해 문제가 발생한 것일 수 있음을 표시합니다.