AWS re:Post을(를) 사용하면 다음에 동의하게 됩니다. AWS re:Post 이용 약관

Amazon Redshift 클러스터에 간헐적으로 연결 문제가 발생하는 이유는 무엇인가요?

6분 분량
0

제한된 액세스, 유지 관리 기간, 노드 장애, 암호화 키 회전, 너무 많은 활성 연결, 높은 CPU 사용률, 클라이언트 측 연결 문제 등의 요인으로 인해 Amazon Redshift 클러스터에서 발생하는 간헐적인 연결 문제를 해결하고 해결하는 방법을 배우고 싶습니다.

간략한 설명

다음 문제로 인해 Amazon Redshift 클러스터에서 간헐적인 연결 문제가 발생할 수 있습니다.

  • 특정 IP 주소 또는 CIDR 블록에 대한 액세스 제한
  • 유지 관리 기간 업데이트
  • 노드 장애 또는 예약된 관리 작업
  • 암호화 키 교체
  • 너무 많은 활성 네트워크 연결
  • 리더 노드의 높은 CPU 사용률
  • 클라이언트 측 연결 문제

해결 방법

특정 IP 주소 또는 CIDR 블록에 대한 액세스 제한

보안 그룹에서 특정 IP 주소 또는 CIDR 블록에 대한 액세스가 제한되어 있는지 확인하세요. DHCP 구성으로 인해 클라이언트 IP 주소가 변경되어 연결 문제가 발생할 수 있습니다. 또한 Amazon Redshift 클러스터에 Elastic IP 주소를 사용하지 않는 경우, 클러스터 노드의 AWS 관리형 IP 주소가 변경될 수 있습니다. 예를 들어, 클러스터를 삭제하고 스냅샷에서 다시 생성하거나 일시 중지된 클러스터를 다시 시작할 때 IP 주소가 변경될 수 있습니다.

참고: Amazon Redshift 클러스터를 삭제하고 다시 만들 때 공용 IP 주소가 순환됩니다. 노드가 교체될 때마다 프라이빗 IP 주소가 변경됩니다.

네트워크 제한을 해결하려면 다음 조치 중 하나를 수행하세요.

  • 애플리케이션이 클러스터 엔드포인트 뒤에 공용 IP 주소를 캐시하는 경우 이 엔드포인트를 Amazon Redshift 연결에 사용하세요. 네트워크 연결을 안정적이고 안전하게 유지하려면 연결에 DNS 캐시를 사용하지 마세요.
  • Amazon Redshift 클러스터에 Elastic IP 주소를 사용하는 것이 모범 사례입니다. Elastic IP 주소를 사용하면 기본 구성을 변경할 수 있으며 클라이언트가 클러스터에 연결하는 데 사용하는 IP 주소에는 영향을 미치지 않습니다. 이 접근 방식은 장애 발생 후 클러스터를 복구하려는 경우에 유용합니다. 자세한 내용은 VPC에서 클러스터 관리하기를 참조하세요.
  • 개인 IP 주소를 사용하여 리더 노드 또는 컴퓨팅 노드에 연결하는 경우 설정에서 새 IP 주소를 사용하세요. 예를 들어, SSH 수집을 수행했거나 컴퓨트 노드를 사용하는 Amazon EMR 구성이 있는 경우 IP 주소를 업데이트합니다. 노드 교체 후 새 노드에 새 개인 IP 주소가 부여됩니다.

유지 관리 기간 업데이트

Amazon Redshift 클러스터의 유지 관리 기간을 확인하세요. 유지 관리 기간 동안에는 Amazon Redshift 클러스터에서 읽기 또는 쓰기 작업을 처리할 수 없습니다. 유지 관리 이벤트가 특정 주에 예약된 경우, 이벤트는 할당된 30분 유지 관리 기간 동안 시작됩니다. Amazon Redshift가 유지 관리를 수행하면 진행 중인 모든 쿼리 또는 기타 작업이 종료됩니다. 예약된 유지 관리 기간은 Amazon Redshift 콘솔에서 변경할 수 있습니다.

노드 장애 또는 예약된 관리 작업

Amazon Redshift 콘솔이벤트 탭에서 노드 장애 또는 클러스터 크기 조정 또는 재부팅과 같은 예약된 관리 작업을 확인합니다.

하드웨어 장애가 있는 경우 짧은 기간 동안 Amazon Redshift를 사용할 수 없으며 쿼리 실패가 발생할 수 있습니다. 쿼리가 실패하면 다음과 같은 이벤트 설명이 표시됩니다.

“Amazon Redshift 클러스터 [cluster name]에서 하드웨어 문제가 감지되었습니다. [time]에 교체 요청이 시작되었습니다."와 같은 설명이 표시됩니다.

또는 계정 관리자가 Amazon Redshift 클러스터에서 재시작 또는 크기 조정 작업을 예약한 경우 간헐적인 연결 문제가 발생할 수 있습니다. 다음과 유사한 이벤트 설명이 표시됩니다.

“[클러스터 이름] 클러스터가 [시간]에 다시 시작되었습니다.” ”클러스터 [클러스터 이름] 클러스터가 [시간]에 다시 시작을 완료했습니다.”

자세한 내용은 Amazon Redshift 이벤트 범주 및 이벤트 메시지를 참조하세요.

암호화 키 교체

Amazon Redshift 클러스터의 키 관리 설정을 확인하여 AWS Key Management Service(AWS KMS) 키 암호화 및 키 암호화 로테이션을 사용하는지 확인합니다.

암호화 키가 켜져 있고 암호화 키가 순환 중인 경우, 이 시간 동안에는 Amazon Redshift 클러스터를 사용할 수 없습니다. 그 결과 다음과 같은 오류 메시지가 표시됩니다.

"pg_query(): Query failed: SSL SYSCALL error: EOF detected"

키 교체 주기는 사용 중인 환경의 데이터 보안 정책 및 표준에 따라 다릅니다. 필요할 때마다 또는 암호화된 키가 손상될 수 있을 때마다 키를 교체하세요. 또한 보안 및 클러스터 가용성 요구 사항을 모두 지원하는 키 관리 계획을 세워야 합니다.

너무 많은 활성 연결

Amazon Redshift에서는 클러스터에 대한 모든 연결이 리더 노드로 전송되며, 활성 연결에 대한 최대 한도가 있습니다. 노드 유형은 노드 수가 아니라 Amazon Redshift 클러스터가 지원할 수 있는 최대 할당량을 결정합니다.

Amazon Redshift 클러스터에 활성 연결이 너무 많으면 다음과 같은 오류 메시지가 표시됩니다.

“[Amazon](500310) 잘못된 작업: 부트스트랩이 아닌 사용자의 연결 제한 “500”을 초과했습니다.”

Amazon Redshift 클러스터에 연결할 때 잘못된 작업 오류가 발생하면 연결 할당량에 도달한 것입니다. 클러스터의 활성 연결 수를 확인하려면 Amazon CloudWatch에서 DatabaseConnections 지표를 검토하세요.

데이터베이스 연결이 급증하는 경우, Amazon Redshift 클러스터에 유휴 연결이 많을 수 있습니다. 유휴 연결 수를 확인하려면 다음 SQL 쿼리를 실행하세요.

select process, trim(a.user_name) as user_name, a.usesysid, a.starttime,
  datediff(s,a.starttime,sysdate) as session_dur, b.last_end,
 datediff(s,case when b.last_end is not null then b.last_end else
 a.starttime end,sysdate) idle_dur
     FROM
    (select starttime,process,u.usesysid,user_name
     from stv_sessions s, pg_user u
     where
     s.user_name = u.usename
      and u.usesysid>1
and process NOT IN (select pid from stv_inflight where userid>1
 union select pid from stv_recents where status != 'Done' and
  userid>1)
    ) a
     LEFT OUTER JOIN (select
 userid,pid,max(endtime) as last_end from svl_statementtext where
  userid>1 and sequence=0 group by 1,2) b ON a.usesysid = b.userid AND
 a.process = b.pid
    WHERE (b.last_end > a.starttime OR b.last_end is null)
    ORDER BY idle_dur;

출력은 다음 예제와 비슷합니다.

 process | user_name  | usesysid |      starttime      | session_dur | last_end | idle_dur
---------+------------+----------+---------------------+-------------+----------+----------
   14684 | myuser     |      100 | 2020-06-04 07:02:36 |           6 |          |        6
(1 row)

유휴 연결이 확인되면 다음 명령 구문을 사용하여 연결을 종료합니다.

select pg_terminate_backend(process);

출력은 다음 예제와 비슷합니다.

pg_terminate_backend ----------------------
                    1
(1 row)

리더 노드의 높은 CPU 사용률

모든 클라이언트는 리더 노드를 사용하여 Amazon Redshift 클러스터에 연결합니다. 리더 노드의 CPU 사용률이 높으면 간헐적으로 연결 문제가 발생할 수 있습니다.

Amazon Redshift 클러스터에 연결하려고 하는데 리더 노드가 높은 CPU를 사용 중이면 다음과 같은 오류 메시지가 표시됩니다.

“연결 설정/종료 중 오류 발생”

리더 노드가 높은 CPU 사용률에 도달했는지 확인하려면 Amazon CloudWatch에서 CPUUtilization 지표를 확인하세요. 자세한 내용은 Amazon Redshift 지표를 참조하세요.

클라이언트 측 연결 문제

Workbench/J 또는 PostgreSQL과 같은 클라이언트와 Amazon Redshift 클러스터 간의 연결 문제가 있는지 확인하세요. 클라이언트가 해제된 포트에서 요청을 보내려고 하면 클라이언트 측 연결 재설정이 발생할 수 있습니다. 결과적으로 연결 재설정으로 인해 간헐적인 연결 문제가 발생할 수 있습니다.

이러한 클라이언트 측 연결 문제를 방지하려면 다음 조치 중 하나를 수행하세요.

  • Amazon Redshift의 keepalive 기능을 사용하여 클라이언트와 서버 간의 연결이 올바르게 작동하는지 확인합니다. keepalive 기능은 연결 링크가 끊어지는 것을 방지하는 데도 도움이 됩니다. keepalive값을 확인하거나 구성하려면 TCP/IP 시간 제한 설정 변경DSN 시간 제한 설정 변경을 참조하세요.
  • 쿼리가 실행 중인 것처럼 보이지만 SQL 클라이언트 도구에서 응답이 중지되면 최대 전환 단위(MTU)를 확인하세요. 패킷 드롭으로 인해 쿼리가 Amazon Redshift에 표시되지 않을 수 있습니다. 패킷 드롭은 두 IP 호스트 간의 네트워크 경로에 서로 다른 MTU 크기가 있을 때 발생합니다. 패킷 드롭 문제를 관리하는 방법에 대한 자세한 내용은 쿼리가 응답을 중지하고 때때로 클러스터에 도달하지 못하는 것처럼 보임 문서를 참조하세요
AWS 공식
AWS 공식업데이트됨 8달 전
댓글 없음