Amazon Redshift에서 탄력적 크기 조정은 어떻게 작동하나요?
최종 업데이트 날짜: 2022년 10월 31일
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 Command Line Interface(AWS CLI) 명령을 사용하여 Amazon Redshift 클러스터에 대한 자세한 정보를 얻을 수 있습니다.
aws redshift describe-clusters --region <Cluster Region>
예 1: 대상 노드 유형이 기존 노드 유형과 같은 경우
탄력적 크기 조정을 사용하여 클러스터 크기를 조정하면(노드 유형 변경 없이 노드를 추가 또는 제거) Amazon Redshift가 자동으로 데이터를 새 노드에 재배포합니다.
새 클러스터를 프로비저닝하고 여기로 데이터를 전송하는 클래식 크기 조정과 달리 탄력적 크기 조정의 경우에는 새 클러스터를 생성하지 않습니다. 탄력적인 크기 조정 작업은 일반적으로 약 몇 분 정도 걸립니다. 탄력적 크기 조정 시에는 백그라운드에서 데이터 재배포를 완료하는 동안 쿼리 런타임이 약간 늘어날 수 있습니다.
참고: 메타데이터 마이그레이션 중에는 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.xplus 노드 유형의 경우 절반 또는 최대 두 배의 노드 수를 사용하세요. 예를 들어 노드가 6개인 클러스터의 크기를 3, 4, 5, 7, 8, 9, 10, 11, 12개의 노드로 조정할 수 있습니다.
- ra3.16xlarge 또는 ra3.4xlarge 노드 유형의 경우 현재 노드 수의 1/4 또는 최대 4배를 사용하세요. 예를 들어 노드가 8개인 ra3 클러스터의 크기를 2, 3, 4, 5, 6, 7, 9, 최대 32개의 노드로 조정할 수 있습니다.
탄력적 크기 조정 모범 사례
Amazon Redshift 클러스터에서 탄력적 크기 조정을 수행할 때는 다음 모범 사례를 고려하세요.
- 특히 새 클러스터의 크기를 조정하는 경우 탄력적 크기 조정 프로세스를 시작하기 전에 자동 스냅샷을 활성화하거나 수동 스냅샷을 생성합니다. 기본적으로 수동 스냅샷은 클러스터를 삭제한 후에도 무기한 보존됩니다. 그러나 자동 스냅샷은 Amazon Redshift에서 주기적으로 가져온 다음 보존 기간이 끝나면 삭제됩니다.
- describe-node-configuration-options AWS CLI 명령을 사용하여 크기 조정 작업에 가능한 노드 구성을 가져옵니다.
참고: AWS CLI 명령을 실행할 때 오류가 발생하면 최신 버전의 AWS CLI를 사용하고 있는지 확인합니다. - 크기 조정 전에 클러스터를 정리(VACUUM)하세요. 탄력적 크기 조정 시에는 삭제 표시된 행이 자동으로 삭제되지 않습니다.
- resize-cluster 명령을 사용하여 모든 노드 구성 변경 사항을 쉽게 지정할 수 있습니다. Amazon Redshift 콘솔을 사용하여 클러스터의 크기를 조정할 수도 있습니다.
다음 예에서는 describe-node-configuration-options 명령을 사용하는 방법을 보여 줍니다.
aws redshift describe-node-configuration-options --action-type resize-cluster --cluster-identifier <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 클러스터에서 사용 사례에 가장 적합한 옵션이 클래식 크기 조정인 경우에는 이 방식의 크기 조정을 수행합니다. 예를 들어 단일 노드 클러스터로 크기를 조정하는 경우에는 클래식 크기 조정을 수행할 수 있습니다. 탄력적 크기 조정을 사용하면 원래 구성의 슬라이스 수를 보존하여 클러스터에서 노드를 추가하거나 제거할 수 있습니다. 하지만 성능에 차이가 있을 수 있습니다. 노드 슬라이스의 수가 대상 노드 유형의 슬라이스 수와 일치하도록 하려는 경우 클래식 크기 조정을 사용합니다. 자세한 내용은 Amazon Redshift에서 클러스터 크기 조정을 참조하세요.
- 탄력적 크기 조정이 시작되고 스냅샷 작업이 진행 중일 때 몇 분 내에 스냅샷이 완료되지 않으면 크기 조정이 실패할 수 있습니다.
- 탄력적 크기 조정으로는 단일 노드 클러스터에서 또는 단일 노드 클러스터로 크기를 조정할 수 없습니다.
- DS2 예약 노드와 같은 예약 노드의 경우 크기 조정 시 RA3 예약 노드로 업그레이드할 수 있습니다. 탄력적 크기 조정을 수행하거나 콘솔을 사용하여 스냅샷에서 복원할 때 노드를 업그레이드할 수 있습니다.