Amazon Redshift에서 탄력적 크기 조정은 어떻게 작동합니까?

최종 업데이트 날짜: 2021년 4월 1일

Amazon Redshift 클러스터에서 탄력적 크기 조정을 수행하려고 합니다. 탄력적 크기 조정은 어떻게 작동하며 탄력적 크기 조정을 사용할 때 고려해야 할 사항은 무엇입니까?

간략한 설명

Amazon Redshift를 사용하면 클러스터 크기 조정 중에 특정 개수의 노드로 마이그레이션할 수 있습니다. 기본적으로 Amazon Redshift는 대상 클러스터에 동일한 수의 슬라이스를 유지하려고 합니다. 슬라이스 매핑을 사용하면 클러스터 크기를 조정하는 데 필요한 시간이 줄어듭니다. 슬라이스 매핑 프로세스 중에 Amazon Redshift는 클러스터 슬라이스에 대해 셔플을 수행하여 대상 클러스터의 새 컴퓨팅 노드로 이동합니다.

Amazon Redshift 클러스터에서 탄력적 크기 조정을 수행하려면 다음 사항을 고려하십시오.

  • 탄력적 크기 조정 시 테이블 정렬이나 디스크 공간 회수는 수행되지 않습니다. 테이블을 정렬하고 디스크 공간을 회수하려면 VACUUM을 실행합니다.
  • 탄력적 크기 조정은 EC2-VPC 플랫폼을 사용하는 Amazon Redshift 클러스터에서만 사용할 수 있습니다.
  • 탄력적 크기 조정 작업은 대개 클래식 크기 조정 작업보다 완료하는 데 걸리는 시간이 짧습니다. 탄력적 크기 조정 작업은 테이블 정렬이나 디스크 공간 회수를 수행하지 않기 때문입니다. 그에 비해 클래식 크기 조정 작업은 새 클러스터를 프로비저닝하고 소스 클러스터에서 데이터를 복사합니다. 그런 다음 배포 스타일에 따라 데이터를 새 노드에 배포하고 ANALYZE 명령을 실행하여 이 정보를 업데이트합니다. 따라서 Amazon Redshift 클러스터에서 탄력적 크기 조정보다 클래식 크기 조정을 수행하는 데 더 오랜 시간이 걸릴 수 있습니다.

해결 방법

탄력적 크기 조정의 작동 방식

Amazon Redshift에서는 대상 노드 유형에 따라 탄력적 크기 조정이 다르게 작동할 수 있습니다. 대상 노드 유형이 소스 노드 유형과 같은지 확인하십시오.

노드 유형을 확인하려면 Amazon Redshift 콘솔에 로그인하십시오. 탐색 메뉴에서 [클러스터(Clusters)]를 선택합니다. [클러스터(Clusters)] 페이지의 각 클러스터 이름 아래에 노드 유형이 표시됩니다. 또는 describe-clusters AWS CLI(명령줄 인터페이스) 명령을 사용하여 Amazon Redshift 클러스터에 대한 자세한 정보를 얻을 수 있습니다.

aws redshift describe-clusters --region <Cluster Region>

예 1: 대상 노드 유형이 기존 노드 유형과 같은 경우

Amazon Redshift에서 탄력적 크기 조정을 사용하여 클러스터 크기를 조정하면(노드 유형 변경 안 함) Amazon Redshift가 자동으로 데이터를 새 노드에 재배포합니다. 새 클러스터를 프로비저닝하고 여기로 데이터를 전송하는 클래식 크기 조정과 달리 탄력적 크기 조정의 경우에는 새 클러스터를 생성하지 않습니다. 탄력적 크기 조정 작업은 일반적으로 몇 분 내에 완료됩니다. 탄력적 크기 조정 시에는 백그라운드에서 데이터 재배포를 완료하는 동안 쿼리 실행 시간이 약간 늘어날 수 있습니다.

예 2: 대상 노드 유형이 기존 노드 유형과 다른 경우

노드 유형이 변경된 경우 Amazon Redshift는 새 클러스터를 생성하고 최신 스냅샷에서 이 클러스터로 데이터를 복사합니다. 데이터 전송 중에 Amazon Redshift 클러스터는 읽기 전용 모드로 작동하며 모든 쓰기가 차단됩니다. 크기 조정 작업이 완료되면 Amazon Redshift는 새 클러스터의 엔드포인트를 기존 클러스터의 엔드포인트와 일치하도록 자동으로 업데이트합니다. 그런 다음 원래 클러스터에 대한 모든 연결이 닫힙니다.

DC2 및 DS2 노드 수 제한

Amazon Redshift 클러스터에서 탄력적 크기 조정을 수행하는 경우 DC2 및 DS2 노드 유형에 대한 다음 제한을 고려합니다.

  • dc2.large 또는 ds2.xlarge 노드 유형의 경우 현재 노드 수의 절반 또는 두 배를 사용합니다. 예를 들어 노드가 6개인 클러스터는 12개 노드 또는 3개 노드로 크기 조정할 수 있습니다.
  • dc2.8xlarge, ds2.8xlarge, ra3.4xlarge 또는 ra3.16xlarge 노드 유형의 경우 현재 노드 수를 절반에서 두 배까지 늘리십시오. 예를 들어 노드가 6개인 클러스터의 크기를 3, 4, 5, 7, 8, 9, 10, 11 또는 12개의 노드로 조정할 수 있습니다.

탄력적 크기 조정 모범 사례

Amazon Redshift 클러스터에서 탄력적 크기 조정을 수행할 때는 다음 모범 사례를 고려하십시오.
  • 탄력적 크기 조정 프로세스를 시작하기 전에 스냅샷을 생성합니다(특히 새 클러스터의 크기를 조정하는 경우).
  • describe-node-configuration-options AWS CLI 명령을 사용하여 크기 조정 작업에 가능한 노드 구성을 확인합니다.
    참고: AWS CLI 명령을 실행할 때 오류가 발생하면 최신 버전의 AWS CLI를 사용하고 있는지 확인하세요.
  • 크기 조정 전에 클러스터를 정리(VACUUM)하세요. 탄력적 크기 조정 시에는 삭제 표시된 행이 자동으로 삭제되지 않습니다.
  • resize-cluster 명령을 사용하여 클러스터 크기를 조정하세요.

다음 예에서는 describe-node-configuration-options 명령을 사용하는 방법을 보여 줍니다.

aws redshift describe-node-configuration-options --action-type resize-cluster --cluster <Cluster Name> --region <Cluster Region>

다음 예에서는 resize-cluster 명령을 사용하는 방법을 보여 줍니다.

aws redshift resize-cluster --cluster-identifier  <Cluster Name> --cluster-type multi-node --node-type <Target Node Type> --number-of-nodes <Number of Target Nodes> --no-classic —region <Cluster Region>

추가 고려 사항

Amazon Redshift 클러스터에서 탄력적 크기 조정을 수행할 때 다음과 같은 추가 고려 사항을 검토하십시오.

  • 탄력적 크기 조정에는 클러스터 스냅샷이 필요합니다. 콘솔이나 Amazon Redshift CLI 및 API를 사용하여 스냅샷을 관리할 수 있습니다.
    참고: AWS CLI 명령을 실행할 때 오류가 발생하면 최신 버전의 CLI를 사용하고 있는지 확인합니다.
  • Amazon Redshift에서 탄력적 크기 조정 작업을 시작한 후에는 작업을 취소할 수 없습니다. 크기 조정 작업이 완료될 때까지 기다렸다가 다른 크기 조정 작업을 수행하거나 클러스터를 재부팅해야 합니다.
  • 새 노드 구성에는 기존 데이터를 저장할 수 있는 충분한 스토리지가 있어야 합니다. 노드를 추가하는 경우에도 데이터가 재배포되는 방식 때문에 새 구성에 스토리지가 충분하지 않을 수 있습니다. 스토리지 공간에 대한 자세한 내용은 Amazon Redshift 클러스터의 테이블이 예상보다 많거나 적은 디스크 스토리지 공간을 소비하는 이유는 무엇입니까?를 참조하세요.
  • Amazon Redshift 클러스터에서 탄력적 크기 조정을 수행하면 슬라이스가 고르지 않게 배포되어 노드 간에 데이터 스큐가 발생할 수 있습니다. Amazon Redshift 클러스터에서 데이터 스큐가 관찰되면 대신 클래식 크기 조정을 수행합니다.
  • Amazon Redshift 클러스터에서 사용 사례에 가장 적합한 옵션이 클래식 크기 조정인 경우에는 이 방식의 크기 조정을 수행합니다. 예를 들어 단일 노드 클러스터로 크기를 조정하는 경우에는 클래식 크기 조정만 수행할 수 있습니다. 또한 노드 슬라이스의 수가 대상 노드 유형의 슬라이스 수와 일치하도록 하려는 경우에도 클래식 크기 조정을 수행합니다.