AWS DMS 엔드포인트 연결 실패 문제를 해결하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2022년 6월 15일

AWS Database Migration Service(AWS DMS) 엔드포인트에 연결할 수 없습니다. 테스트 연결이 실패하는 이유는 무엇이며 이러한 연결 문제를 해결하려면 어떻게 해야 합니까?

간략한 설명

복제 인스턴스에서 원본 또는 대상 엔드포인트로의 연결을 테스트할 때 일반적으로 나타나는 두 가지 유형의 오류가 있습니다.

1.    복제 인스턴스와 소스 또는 대상 간의 연결 문제로 인해 오류가 발생한 경우 다음과 유사한 오류가 표시됩니다.

  • "Application-Status: 1020912, Application-Message: Failed to connect Network error has occurred, Application-Detailed-Message: RetCode: SQL_ERROR SqlState: HYT00 NativeError: 0 Message: [unixODBC][Microsoft][ODBC Driver 13 for SQL Server]Login timeout expired ODBC general error."
  • "Application-Status: 1020912, Application-Message: Cannot connect to ODBC provider Network error has occurred, Application-Detailed-Message: RetCode: SQL_ERROR SqlState: 08001 NativeError: 101 Message: [unixODBC]timeout expired ODBC general error."
  • "Application-Status: 1020912, Application-Message: Cannot connect to ODBC provider ODBC general error., Application-Detailed-Message: RetCode: SQL_ERROR SqlState: HY000 NativeError: 2005 Message: [unixODBC][MySQL][ODBC 5.3(w) Driver]Unknown MySQL server host 'mysql1.xxxxx.us-east-1.rds.amazonaws.com' (22) ODBC general error."

2.    데이터베이스 사용 권한 또는 인증 오류 등의 기본 데이터베이스 오류로 인해 오류가 발생한 경우 다음과 유사한 오류가 표시됩니다.

  • "Application-Status: 1020912, Application-Message: Cannot connect to ODBC provider Network error has occurred, Application-Detailed-Message: RetCode: SQL_ERROR SqlState: 08001 NativeError: 101 Message: [unixODBC]FATAL: password authentication failed for user "dmsuser" ODBC general error."

발생 오류 유형 및 네트워크 구성에 따라 적절한 해결 방법 섹션을 참조하십시오.

참고: AWS DMS 소스 및 대상 엔드포인트를 생성한 후에 AWS DMS 복제 인스턴스에서 엔드포인트로의 연결을 테스트하는 것이 모범 사례입니다. AWS DMS 마이그레이션 작업을 시작하기 전에 테스트를 먼저 진행하세요. 그렇지 않으면 엔드포인트와의 연결 문제로 인해 작업이 실패할 수 있습니다.

해결 방법

AWS 호스팅 리소스의 연결 문제 해결

소스 또는 대상 데이터베이스와 복제 인스턴스 간에 연결을 설정할 수 있는지 확인합니다. 사용 사례 및 네트워크 인프라에 따라 원본 또는 대상 데이터베이스를 퍼블릭 서브넷 또는 프라이빗 서브넷의 복제 인스턴스에 연결합니다. 자세한 내용은 복제 인스턴스용 네트워크 설정을 참조하세요.

복제 인스턴스 구성 확인

복제 인스턴스에서 구성에 다음이 포함되어 있는지 확인합니다.

  • 보안 그룹에 원본 또는 대상 데이터베이스의 포트가 있는 IP 주소에 대한 아웃바운드 규칙입니다. 기본적으로 보안 그룹의 아웃바운드 규칙은 모든 트래픽을 허용합니다. 보안 그룹은 상태 유지 그룹이므로, 기본값에서 인바운드 규칙을 수정할 필요는 없습니다.
  • 네트워크 ACL에 원본 또는 대상 데이터베이스의 포트가 있는 IP 주소에 대한 아웃바운드 규칙입니다. 기본적으로 아웃바운드 규칙(네트워크 액세스 제어 목록(ACL))은 모든 트래픽을 허용합니다.
  • 인바운드 규칙으로 네트워크 ACL에 원본 또는 대상 데이터베이스의 임시 포트를 갖춘 IP 주소에 대한 규칙입니다. 기본적으로 네트워크 ACL의 인바운드 규칙은 모든 트래픽을 허용합니다.

소스 또는 대상 데이터베이스 구성 확인

    소스 또는 대상 데이터베이스에서 구성에 다음이 포함되어 있는지 확인합니다.

    • 인바운드 규칙은 복제 인스턴스의 IP 주소 또는 복제 인스턴스의 서브넷 그룹의 CIDR에 적용되며, 원본 또는 대상 데이터베이스의 포트가 보안 그룹에 있습니다. 보안 그룹은 상태 유지 그룹이므로, 기본값에서 아웃바운드 규칙을 수정할 필요는 없습니다.
      참고: IP 주소 및 CIDR을 찾으려면 서브넷 그룹 섹션의 IP 주소 및 CIDR 결정을 참조하세요.
    • 인바운드 규칙은 복제 인스턴스의 IP 주소 또는 복제 인스턴스의 서브넷 그룹의 CIDR에 대한 것으로, 원본 또는 대상 데이터베이스의 포트가 네트워크 ACL에 있습니다. 허용된 IP 주소 및 포트에 대한 명시적 거부 규칙이 없는지 확인합니다.
    • 네트워크 ACL에 휘발성 포트가 있는 복제 인스턴스의 서브넷 그룹의 IP 주소 또는 CIDR에 대한 아웃바운드 규칙입니다. 기본적으로 네트워크 ACL의 아웃바운드 규칙은 모든 트래픽을 허용합니다.
    • 가장 좋은 방법은 복제 인스턴스의 서브넷 그룹의 CIDR을 허용하도록 네트워크를 구성하는 것입니다. 장애 조치 또는 호스트 교체 이벤트 중 복제 인스턴스의 IP 주소가 변경됩니다.

    서브넷 그룹의 IP 주소 및 CIDR 결정

    인바운드 및 아웃바운드 규칙을 설정할 서브넷 그룹의 IP 주소와 CIDR을 확인하려면 AWS DMS 콘솔 또는 CLI를 사용합니다.

    AWS 콘솔 사용:

    1. AWS DMS 콘솔에 액세스합니다.
    2. 탐색 창에서 [복제 인스턴스]를 선택합니다.
    3. 복제 인스턴스의 이름을 선택합니다.
    4. [세부 정보]에서 복제 인스턴스의 퍼블릭 IP 주소, 프라이빗 IP 주소복제 서브넷 그룹을 기록합니다.
    5. 복제 서브넷 그룹에서 링크를 선택하여 서브넷 그룹 페이지에 액세스합니다. 서브넷 그룹에 있는 각 서브넷의 이름을 기록해 둡니다.
    6. 각 서브넷 액세스의 CIDR은 Amazon Virtual Private Cloud (Amazon VPC) 콘솔에서 확인할 수 있습니다.
    7. [서브넷] 탭에서 5단계에서 기록한 서브넷을 검색합니다. 각 서브넷에 대해 CIDR을 기록해 둡니다.

    AWS CLI 사용:

    describe-subnets 명령을 실행하여 각 서브넷의 CIDR을 확인합니다. replication-instance-name에 복제 인스턴스의 이름을 입력합니다.

    aws ec2 describe-subnets --filters Name=subnet-id,Values="$(aws dms describe-replication-instances --filters "Name=replication-instance-id,Values=replication-instance-name" --query "ReplicationInstances[*].ReplicationSubnetGroup.Subnets[*].SubnetIdentifier" --output text | sed -e 's/\t/,/g')" --query "Subnets[*].{SubnetId:SubnetId,CidrBlock:CidrBlock}" --output table

    describe-replication-instances 명령을 실행하여 복제 인스턴스의 IP 주소를 확인할 수 있습니다. replication-instance-name에 복제 인스턴스의 이름을 입력합니다.

    aws dms describe-replication-instances --filters "Name=replication-instance-id,Values=replication-instance-name" --query "ReplicationInstances[*].{ReplicationInstancePublicIpAddresses:ReplicationInstancePublicIpAddresses,ReplicationInstancePrivateIpAddresses:ReplicationInstancePrivateIpAddresses}" --output table

    연결 문제 해결(온프레미스 리소스)

    대상 데이터베이스가 온프레미스에서 호스팅되는 경우 다음을 확인합니다.

    • 네트워크 관리자에게 문의하여 데이터베이스가 AWS DMS 복제 인스턴스에서 들어오는 연결을 허용하는지 확인하세요.
    • 방화벽이 원본 또는 대상 데이터베이스에 대한 통신을 차단하고 있지 않은지 확인합니다.
    • DNS 구성이 올바르게 설정되었는지 확인합니다. DNS 확인이 필요한 경우 Amazon Route 53 Resolver를 사용합니다. 온프레미스 이름 서버를 사용하여 Amazon Route 53 Resolver를 이용해 엔드포인트를 확인하는 방법에 대한 자세한 내용은 자체 온프레미스 이름 서버 사용 단원을 참조하십시오.

    이전 항목을 확인한 후에도 계속 문제가 발생하면, AWS DMS 복제 인스턴스의 동일한 VPC에 새로운 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스를 생성합니다. 이 새 EC2 인스턴스는 연결 문제가 네트워크 구성으로 인한 것인지 여부를 확인합니다.

    Amazon EC2 인스턴스의 네트워크 구성과 연결 문제가 발생하는 AWS DMS 복제 인스턴스와 동일한지 확인합니다. 새 EC2 인스턴스에서 다음 명령을 실행하여 네트워크 연결 문제를 해결합니다.

    telnet <database_IP_address_or_DNS> <port_number>
    nslookup <domain_name>

    database_IP_address_or_DNS의 경우 DMS 소스 또는 대상 엔드포인트에 대해 지정된 데이터베이스의 IP 주소 또는 도메인 이름을 사용합니다. port_number의 경우 DMS 소스 또는 대상 엔드포인트에 대해 지정된 데이터베이스의 포트 번호를 사용합니다. domain_name의 경우 DMS 소스 또는 대상 엔드포인트에 대해 지정된 데이터베이스의 도메인 이름을 사용합니다.

    기본 데이터베이스 오류 해결

    이러한 오류를 해결하려면 다음 기본 엔드포인트 구성이 올바르게 설정되었는지 확인하세요.

    • 사용자 이름
    • 암호
    • ServerName은 온프레미스 데이터베이스의 DNS 또는 IP 또는 RDS 엔드포인트로 설정합니다.
    • 포트
    • 데이터베이스 이름
      참고: MySQL 소스 또는 대상에 데이터베이스 이름을 지정하지 마십시오.

    참고: 이러한 필드 중 하나라도 AWS Secrets Manager에 지정된 경우 암호를 사용하여 AWS Database Migration Service 엔드포인트에 액세스 단원을 참조하십시오.

    소스 또는 대상 데이터베이스와 관련된 기본 데이터베이스 오류에 대해서는 해당 데이터베이스 설명서의 해결 방법을 참조하세요. DMS 콘솔에서 오류 코드 및 오류 메시지를 사용합니다.

    자세한 내용은 소스 또는 대상 데이터베이스에서 오류, 추적, 경보 또는 기타 로그를 확인하세요.

    데이터베이스 액세스 오류의 경우 특정 원본 또는 대상에 대해 DMS에 필요한 권한을 확인합니다.

    보안 소켓 계층(SSL)을 사용하는 소스 및 대상 엔드포인트에 대한 연결을 암호화하는 방법에 대한 자세한 내용은 AWS Database Migration Service에서 SSL 사용을 참조하세요.