Amazon Redshift 연결 오류를 해결하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 9월 10일

Amazon Redshift 클러스터에 연결할 수 없습니다. 이 문제를 해결하려면 어떻게 해야 합니까?

​해결 방법

Amazon Redshift 클러스터의 크기가 최근에 조정됐거나 스냅샷에서 복원되었습니다.

Amazon Redshift 클러스터의 크기를 최근에 조정했거나 스냅샷에서 복원한 경우 클러스터의 서브넷을 확인합니다. 스냅샷의 크기를 조정하거나 복원하기 전에 동일한 서브넷에서 클러스터를 시작해야 합니다.

Amazon Redshift 클러스터의 크기를 조정했거나 최근에 복원하지 않은 경우 네트워크 구성을 확인합니다. 네트워크 구성은 이전 서브넷과 새 서브넷 모두에 대해 동일해야 합니다.

Amazon Redshift 클러스터는 퍼블릭 서브넷에 상주합니다.

퍼블릭 서브넷에 상주하는 Amazon Redshift 클러스터에 연결하려는 경우 다음을 확인합니다.

  • Amazon Redshift 클러스터가 “공개적으로 액세스 가능”으로 설정되어 있는지 확인합니다. 공개적으로 액세스할 수 있는 옵션에 대한 자세한 내용은 VPC에서 클러스터 관리를 참조하십시오.
  • 라우팅 테이블에 인터넷 게이트웨이가 연결되어 있는지 확인합니다.

연결을 테스트하려면 telnet을 사용하여 Amazon Redshift 클러스터에 대한 연결을 테스트합니다.

telnet <cluster endpoint> <cluster port>

Amazon Redshift 클러스터는 프라이빗 서브넷에 상주합니다.

Amazon Redshift 클러스터가 프라이빗 서브넷에 상주하는 경우 다음을 확인합니다.

  • NAT 게이트웨이를 퍼블릭 서브넷의 라우팅 테이블에 연결해야 합니다. NAT 게이트웨이를 사용하면 프라이빗 서브넷의 클러스터를 인터넷에 연결할 수 있습니다.
  • 클러스터가 “공개적으로 액세스 가능”으로 설정되어 있지 않은지 확인합니다.

클라이언트가 Amazon Redshift 클러스터의 리더 노드에 있는 프라이빗 IP 주소에 연결할 수 있는지 확인하려면 dig 명령을 사용합니다.

dig <cluster endpoint>

telnet 명령을 사용하여 Amazon Redshift 클러스터에 대한 연결을 테스트합니다.

telnet <cluster endpoint><cluster port>

Telnet이 실패하거나 Amazon Redshift 클러스터에 액세스할 수 없는 상태로 유지됩니다.

telnet 명령에 Amazon Redshift 클러스터 연결이 “실패”한다고 표시되면 다음 조건에 해당하는지 확인합니다.

  • 보안 그룹의 인바운드 규칙에는 TCP 유형의 Amazon Redshift 포트(기본값 5439)가 허용됩니다.
  • Amazon Redshift 클러스터에 연결하는 CIDR 범위 또는 IP가 보안 그룹의 수신 규칙에 추가됩니다.

telnet 명령이 Amazon Redshift 클러스터 연결이 “성공”으로 표시하지만 클러스터가 클라이언트에서 액세스할 수 없는 상태로 남아 있으면 네트워크의 방화벽을 확인하십시오. 방화벽이 Amazon Redshift 포트(기본 포트는 5439)를 차단하고 있을 수 있습니다.

잘못된 작업 연결 오류

Amazon Redshift 클러스터에서 모든 연결에 대해 SSL을 활성화해야 하는 경우 다음과 같은 연결 오류가 발생할 수 있습니다.

Error: [Amazon](500310) Invalid operation: no pg_hba.conf entry for host "::ffff:205.xxx.xxx.xxx", user "username", database "dbname", SSL off;

require_ssl 파라미터가 “true”로 설정되어 있는지 확인하려면 다음 단계를 수행하십시오.

1.    Amazon Redshift 콘솔을 엽니다.

2.    [구성(Config)] 탭을 선택합니다.

3.    Amazon Redshift 클러스터와 연결된 파라미터 그룹을 수정합니다.

4.    (선택 사항) AWS Command Line Interface(AWS CLI)를 사용하여 SSL 구성을 확인합니다.

describe-cluster-parameters

SSL 구성이 “true”로 설정된 경우 다음 방법을 고려하십시오.

  • require_ssl 파라미터를 다시 “false”(기본 파라미터 값)로 업데이트하십시오. Amazon Redshift 클러스터와 연결된 파라미터 그룹을 편집하여 SSL 구성을 변경할 수 있습니다. 파라미터 그룹은 Amazon Redshift 콘솔의 [파라미터(Parameters)] 탭에서 편집할 수 있습니다.
  • 사용 사례 또는 환경에서 SSL 연결이 필수적인 경우 연결 문자열에 필요한 SSL 파라미터가 포함되어 있는지 확인합니다.

예:

jdbc:redshift://examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.com:5439/dev?ssl=true

치명적인 연결 오류

Amazon Redshift 클러스터에 열려 있는 연결이 너무 많으면 다음과 같은 오류가 나타납니다.

Error: FATAL:  connection limit [500]/[2000] exceeded for user

오류 메시지에서 알 수 있듯이, 500은 Amazon Redshift의 dc1.large, dc2.large 및 ds2.xlarge 노드 유형에 대한 최대 연결 제한입니다. ds2.8xlarge, dc2.8xlarge, dc1.8xlarge, ra3.4xlarge 및 ra3.16xlarge 노드의 경우 최대 연결 제한은 2000입니다.

Amazon Redshift 클러스터에서 열린 연결 수를 확인하려면 다음 단계를 수행하십시오.

1.    Amazon CloudWatch 콘솔을 엽니다.

2.    Amazon CloudWatch Logs 항목에서 DatabaseConnections 지표를 찾습니다.

3.    STL_CONNECTION_LOG 테이블을 사용하여 열려 있는 연결을 확인합니다.

select recordtime, username, dbname, remotehost, remoteport
from stl_connection_log
where event = 'initiating session'
and pid not in
(select pid from stl_connection_log
where event = 'disconnecting session')
order by 1 desc;

4.    STV_SESSIONS 테이블을 사용하여 Amazon Redshift의 활성 사용자 세션에 대한 정보를 볼 수 있습니다.

select * from stv_sessions;

열려 있는 연결이 많은 경우 다음 방법을 고려하십시오.

  • PG_TERMINATE_BACKEND 명령을 사용하여 유휴 세션을 모두 종료합니다.
  • Amazon Redshift 클러스터에 연결하는 데 사용된 운영 체제에 따라 클라이언트 측에서TCP/IP 시간 초과 설정을 변경합니다. TCP/IP 시간 초과 설정을 업데이트하면 유휴 세션이 열려 있지 않도록 합니다.

연결 거부됨(Connection refused) 오류

Amazon Redshift 클러스터가 연결을 설정하지 못할 경우 다음과 같은 연결 거부됨(Connection Refused) 오류가 나타날 수 있습니다.

Error:  amazon 500150 error setting/closing connection: operation timed out/ connection refused.

이 오류는 Amazon Redshift 클러스터에 액세스할 때 권한 문제를 나타낼 수 있습니다. 이 연결 오류를 해결하려면 다음 방법을 고려하십시오.

  • Amazon Virtual Private Cloud(Amazon VPC)에서 클러스터를 생성한 경우 클라이언트 CIDR/IP 주소를 VPC 보안 그룹에 추가합니다. 클러스터에 VPC 보안 그룹을 구성하는 방법에 대한 자세한 내용은 VPC에서 클러스터 관리를 참조하십시오.
  • VPC 외부에서 클러스터를 생성한 경우 클라이언트 CIDR/IP 주소를 클러스터 보안 그룹에 추가합니다. 클러스터 보안 그룹 구성에 대한 자세한 내용은 Amazon Redshift 클러스터 보안 그룹을 참조하십시오.