Amazon Relational Database Service(Amazon RDS) DB 인스턴스에 연결할 수 없습니다. Amazon Virtual Private Cloud(Amazon VPC)의 퍼블릭 또는 프라이빗 서브넷에서 연결 문제를 해결하려면 어떻게 해야 합니까?
간략한 설명
Amazon RDS 데이터베이스는 VPC의 퍼블릭 또는 프라이빗 서브넷에서 시작할 수 있습니다. 하지만 RDS 인스턴스 측의 잘못된 VPC 구성은 연결 문제를 일으킬 수 있습니다. 또는 연결하려는 클라이언트의 구성 또는 연결 문제로 인해 연결 문제가 발생할 수도 있습니다.
이러한 문제를 해결하려면 환경에 따라 다음 해결 방법을 참조하십시오.
해결 방법
참고: AWS 명령줄 인터페이스(AWS CLI) 명령을 실행할 때 오류가 발생할 경우 AWS CLI의 가장 최신 버전을 사용하고 있는지 확인하십시오.
내 DB 인스턴스가 퍼블릭 서브넷에 있고, 로컬 컴퓨터에서 인터넷을 통해 연결할 수 없는 경우
이 문제는 DB 인스턴스의 [공개적으로 액세스 가능(Publicly Accessible)] 속성이 [아니요(No)]로 설정된 경우 발생합니다. DB 인스턴스에 공개적으로 액세스할 수 있는지 확인하는 방법:
Amazon RDS 콘솔을 열고 탐색 창에서 Databases를 선택한 다음 DB 인스턴스를 선택합니다. 그런 다음 인스턴스의 연결 및 보안 섹션을 검토합니다.
또는
AWS CLI에서 describe-db-instance 명령을 사용합니다.
Amazon RDS 인스턴스의 [공개적으로 액세스 가능(Publicly Accessible)] 속성을 [예(Yes)]로 변경하려면 다음을 수행합니다.
1. Amazon RDS 콘솔을 엽니다.
2. 탐색 창에서 [데이터베이스]를 선택하고 DB 인스턴스를 선택합니다.
3. Modify(수정)를 선택합니다.
4. [연결(Connectivity)]에서 [추가 구성(Additional configuration)] 섹션을 확장한 다음 [공개적으로 액세스 가능(Publicly accessible)]을 선택합니다.
5. Continue를 선택합니다.
6. DB 인스턴스 수정을 선택합니다.
참고: 이 변경 사항은 즉시 적용 옵션을 선택하지 않은 경우에도 즉시 적용됩니다. 다운타임은 이 수정과 함께 보류 중인 유지 관리 작업을 설정하여 다운타임이 필요한 경우에만 발생하며 Apply Immediately를 선택하면 됩니다.
공개적으로 액세스 가능 속성을 예로 설정했는데도 여전히 RDS 인스턴스에 연결할 수 없는 경우 다음 세부 정보를 확인하십시오.
내 DB 인스턴스가 프라이빗 서브넷에 있고, 로컬 컴퓨터에서 연결할 수 없는 경우
퍼블릭 서브넷을 사용하여 이 문제를 해결할 수 있습니다. 퍼블릭 서브넷을 사용하면 인터넷을 통해 서브넷의 모든 리소스에 액세스할 수 있습니다. 이 해결 방법이 보안 요구 사항을 충족하지 않으면, AWS Site-to-Site VPN을 사용합니다. 사이트 간 VPN을 사용하여 원격 네트워크에 VPC를 연결할 수 있는 고객 게이트웨이를 구성합니다.
이 문제를 해결하는 또 다른 방법은 Amazon EC2 인스턴스를 bastion(점프) 호스트로 사용하는 것입니다. 자세한 내용은 로컬 시스템에서 Amazon EC2 인스턴스를 bastion 호스트로 사용하여 프라이빗 Amazon RDS DB 인스턴스에 연결하려면 어떻게 해야 합니까?를 참조하세요.
퍼블릭 서브넷을 전환하려면 다음을 수행합니다.
1. Amazon RDS 콘솔을 엽니다.
2. 탐색 창에서 [데이터베이스]를 선택하고 DB 인스턴스를 선택합니다.
3. [연결 및 보안] 섹션에서 DB 인스턴스의 엔드포인트를 복사합니다.
4. VPC 내 EC2 인스턴스에서 DB 인스턴스 엔드포인트에 대해 nslookup을 수행합니다. 다음 예제 출력을 참조하십시오.
nslookup myexampledb.xxxx.us-east-1.rds.amazonaws.com
Server: xx.xx.xx.xx
Address: xx.xx.xx.xx#53
Non-authoritative answer:
Name: myexampledb.xxxx.us-east-1.rds.amazonaws.com
Address: 172.31.xx.x
5. RDS DB 인스턴스의 프라이빗 IP 주소를 얻은 후 프라이빗 IP 주소를 VPC의 특정 서브넷에 연결할 수 있습니다. 해당 VPC 서브넷은 서브넷 CIDR 범위와 프라이빗 IP 주소를 기반으로 합니다.
6. Amazon VPC 콘솔을 열고 탐색 창에서 [서브넷]을 선택합니다.
7. 5단계에서 찾은 DB 인스턴스에 연결된 서브넷을 선택합니다.
8. [Description] 창에서 [Route Table]을 선택합니다.
9. [Actions]를 선택하고 [Edit routes]를 선택합니다.
10. 라우팅 추가를 선택합니다. IPv4 및 IPv6 트래픽의 경우 대상 상자에 외부 또는 온프레미스 네트워크의 경로를 입력합니다. 그런 다음 대상 목록에서 인터넷 게이트웨이 ID를 선택합니다.
참고: 인스턴스에 대한 인바운드 보안 그룹 규칙은 외부 또는 온프레미스 네트워크 주소로 트래픽을 제한해야 합니다.
11. **저장(Save)**을 선택합니다.
중요: 서브넷을 퍼블릭으로 변경하면, 서브넷의 다른 DB 인스턴스도 인터넷에서 액세스할 수 있습니다. DB 인스턴스는 연결된 퍼블릭 주소가 있는 경우 인터넷에서 액세스할 수 있습니다.
이 단계를 수행한 후에도 DB 인스턴스에 여전히 액세스할 수 없는 경우 DB 인스턴스가 **공개적으로 액세스 가능(Publicly Accessible)**인지 확인합니다. 이렇게 하려면 내 DB 인스턴스가 프라이빗 서브넷에 있고, 로컬 컴퓨터에서 연결할 수 없는 경우에 나와 있는 단계를 따릅니다.
다른 VPC에 있는 Amazon EC2 인스턴스에서 내 DB 인스턴스에 액세스할 수 없는 경우
VPC 간에 VPC 피어링 연결을 생성합니다. VPC 피어링 연결을 사용하면 두 VPC가 프라이빗 IP 주소를 사용하여 서로 통신할 수 있습니다.
1. VPC 피어링 연결을 생성하고 수락합니다.
중요: VPC가 동일한 AWS 계정에 있는 경우 IPv4 CIDR 블록이 겹치지 않는지 확인합니다. 자세한 내용은 VPC 피어링 제한을 참조하세요.
2. 두 라우팅 테이블 모두를 업데이트합니다.
3. 피어 VPC 그룹을 참조하도록 보안 그룹을 업데이트합니다.
4. VPC 피어링 연결에 대한 DNS 확인 지원을 활성화합니다.
5. Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에서 네트워킹 유틸리티를 사용하여 VPC 피어링 연결을 테스트합니다. 다음 예시를 참조하세요.
nc -zv <hostname> <port>
연결이 작동하는 경우 출력은 다음과 비슷합니다.
$ nc -zv myexampledb.xxxx.us-east-1.rds.amazonaws.com 5439
found 0 associations
found 1 connections:
1: flags=82<CONNECTED,PREFERRED>
outif en0
src xx.xxx.xxx.xx port 53396
dst xx.xxx.xxx.xxx port 5439
rank info not available
TCP aux info available
Connection to myexampledb.xxxx.us-east-1.rds.amazonaws.com port 5439 [tcp/*] succeeded!
관련 정보
VPC에서 DB 인스턴스에 액세스하는 시나리오
VPC에서 DB 인스턴스 작업