데이터 계층화 - 아마존 ElastiCache (레디 스OSS)

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

데이터 계층화

복제 그룹을 구성하고 r6gd 패밀리의 노드 유형을 사용하는 클러스터는 메모리와 로컬 SSD(solid state drives) 스토리지 간에 데이터를 계층화합니다. 데이터 계층화는 데이터를 메모리에 저장하는 것 외에도 각 클러스터 노드에서 저렴한 SSD (Solid State Drive) 를 활용하여 Redis OSS 워크로드를 위한 새로운 가격 대비 성능 옵션을 제공합니다. 데이터 계층화는 전체 데이터 세트의 최대 20%까지 정기적으로 액세스하는 워크로드와 SSD에서 데이터에 액세스할 때 추가 지연 시간을 허용할 수 있는 애플리케이션에 이상적입니다.

데이터 계층화가 적용된 클러스터에서는 저장하는 모든 항목의 마지막 액세스 시간을 ElastiCache 모니터링합니다. 가용 메모리 (DRAM) 가 완전히 소모되면 LRU (Least-Recest Use) 알고리즘을 ElastiCache 사용하여 자주 액세스하지 않는 항목을 메모리에서 SSD로 자동으로 이동합니다. 이후에 SSD의 데이터에 액세스하면 요청을 처리하기 전에 ElastiCache 자동으로 비동기적으로 데이터를 메모리로 다시 이동합니다. 데이터의 하위 집합에만 정기적으로 액세스하는 워크로드가 있는 경우 데이터 계층화는 용량을 비용 효율적으로 확장할 수 있는 최적의 방법입니다.

데이터 계층화를 사용하면 키 자체는 항상 메모리에 남아 있지만 LRU는 메모리 대 디스크의 값 배치를 제어합니다. 일반적으로 데이터 계층화를 사용하는 경우 키 크기가 값 크기보다 작은 것이 좋습니다.

데이터 계층화는 애플리케이션 워크로드에 미치는 성능 영향을 최소화하도록 설계되었습니다. 예를 들어 500바이트 문자열 값을 가정하면 SSD에 저장된 데이터에 대한 요청 및 메모리의 데이터에 대한 요청과 비교하여 평균 300마이크로초의 지연 시간을 추가로 기대할 수 있습니다.

가장 큰 데이터 계층화 노드 크기(cache.r6gd.16xlarge)를 사용하면 단일 500노드 클러스터에 최대 1페타바이트까지 저장할 수 있습니다(읽기 전용 복제본 1개를 사용하는 경우는 500TB). 데이터 계층화는 에서 지원되는 모든 Redis OSS 명령 및 데이터 구조와 호환됩니다. ElastiCache 이 기능을 사용하려면 클라이언트 측 변경 사항이 필요하지 않습니다.

모범 사례

다음 모범 사례를 따르는 것이 좋습니다.

  • 데이터 계층화는 전체 데이터 세트의 최대 20%까지 정기적으로 액세스하는 워크로드와 SSD에서 데이터에 액세스할 때 추가 지연 시간을 허용할 수 있는 애플리케이션에 이상적입니다.

  • 데이터 계층화 노드에서 사용 가능한 SSD 용량을 사용하는 경우 값 크기가 키 크기보다 큰 것이 좋습니다. DRAM과 SSD 간에 항목이 이동하면 키는 항상 메모리에 남아 있고 값만 SSD 계층으로 이동합니다.

제한 사항

데이터 계층화에는 다음과 같은 제한 사항이 있습니다.

  • 복제 그룹에 속하는 클러스터에서만 데이터 계층화를 사용할 수 있습니다.

  • 사용하는 노드 유형은 us-east-2, us-east-1, us-west-2, us-west-1, eu-west-1, eu-central-1, eu-north-1, eu-west-3, ap-northeast-1, ap-southeast-1, ap-southeast-2, ap-south-1, ca-central-1sa-east-1과 같은 리전에서 사용할 수 있는 r6gd 패밀리의 노드 유형이어야 합니다.

  • Redis OSS 6.2 이상 엔진을 사용해야 합니다.

  • r6gd 클러스터를 사용하지 않는 한 r6gd 클러스터의 백업을 다른 클러스터로 복원할 수 없습니다.

  • 데이터 계층화 클러스터를 위해 백업을 Amazon S3로 내보낼 수 없습니다.

  • r6gd 노드 유형에서 실행되는 클러스터에는 온라인 마이그레이션이 지원되지 않습니다.

  • 데이터 계층화 클러스터(예: r6gd 노드 유형을 사용하는 클러스터)에서 데이터 계층화를 사용하지 않는 클러스터(예: r6g 노드 유형을 사용하는 클러스터)로 확장은 지원되지 않습니다. 자세한 정보는 스케일링 ElastiCache (레디 스 OS) 을 참조하세요.

  • Redis OSS 버전 7.0.7 이상용 데이터 계층화를 사용하는 클러스터에서는 Auto Scaling이 지원됩니다. 자세한 정보는 Auto Scaling ElastiCache (레디 스 OSS) 클러스터섹션을 참조하십시오.

  • 데이터 계층화는 volatile-lru, allkeys-lru, volatile-lfu, allkeys-lfunoeviction 메모리 사용량 제한 정책만 지원합니다.

  • Redis OSS 버전 7.0.7 이상에서는 포크 없는 저장이 지원됩니다. 자세한 정보는 동기화 및 백업 구현 방법을 참조하세요.

  • 128MiB보다 큰 항목은 SSD로 이동되지 않습니다.

요금

R6gD 노드는 총 용량(메모리 + SSD)의 4.8배 더 많으며 R6g 노드에 비해 최대 사용률로 실행될 때 60% 이상의 절감 효과를 얻을 수 있습니다(메모리만 해당). 자세한 내용은 요금을 참조하십시오. ElastiCache

모니터링

ElastiCache (Redis OSS) 는 데이터 계층화를 사용하는 성능 클러스터를 모니터링하도록 특별히 설계된 메트릭을 제공합니다. SSD와 비교하여 DRAM의 항목 비율을 모니터링하려면 Redis OSS CurrItems 메트릭스의 지표를 사용할 수 있습니다. 백분율은 다음과 같이 계산할 수 있습니다. (CurrItems 차원: 계층 = 메모리* 100)/(CurrItems 차원 필터 없음).

구성된 제거 정책이 허용하는 경우 메모리의 항목 비율이 5% 미만으로 감소하면 ElastiCache (Redis OSS) 에서 항목 제거를 시작합니다. 제거 금지 정책으로 구성된 노드에서는 쓰기 작업 시 메모리 부족 오류가 발생합니다.

메모리의 항목 비율이 5% 미만으로 감소할 때는 클러스터 모드가 활성화된 클러스터의 규모를 확장하거나 클러스터 모드가 비활성화된 클러스터에 대한 확장을 고려하는 것이 좋습니다. 확장에 대한 자세한 내용은 을 참조하십시오Redis에서 클러스터 스케일링 OSS (클러스터 모드 활성화). 데이터 계층화를 사용하는 Redis OSS 클러스터의 메트릭에 대한 자세한 내용은 을 참조하십시오. 레디 스 OSS 메트릭스

데이터 계층화 사용

복제 그룹에 속하는 클러스터를 생성할 때 cache.r6gd.xlarge와 같은 r6gd 패밀리의 노드 유형을 선택하여 데이터 계층화를 사용합니다. 해당 노드 유형을 선택하면 데이터 계층화가 자동으로 사용됩니다.

클러스터 생성에 대한 자세한 내용은 클러스터 생성 섹션을 참조하세요.

를 사용하여 복제 그룹을 생성할 때는 r6gd 제품군에서 노드 유형 (예: cache.r6gd.xlarge) 을 선택하고 매개 변수를 설정하여 데이터 계층화를 사용합니다. AWS CLI--data-tiering-enabled

r6gd 패밀리의 노드 유형을 선택하는 경우 데이터 계층화를 선택 해제할 수 없습니다. --no-data-tiering-enabled 파라미터를 설정하는 경우 작업이 실패합니다.

Linux, macOS, Unix의 경우:

aws elasticache create-replication-group \ --replication-group-id redis-dt-cluster \ --replication-group-description "Redis OSS cluster with data tiering" \ --num-node-groups 1 \ --replicas-per-node-group 1 \ --cache-node-type cache.r6gd.xlarge \ --engine redis \ --cache-subnet-group-name default \ --automatic-failover-enabled \ --data-tiering-enabled

Windows의 경우:

aws elasticache create-replication-group ^ --replication-group-id redis-dt-cluster ^ --replication-group-description "Redis OSS cluster with data tiering" ^ --num-node-groups 1 ^ --replicas-per-node-group 1 ^ --cache-node-type cache.r6gd.xlarge ^ --engine redis ^ --cache-subnet-group-name default ^ --automatic-failover-enabled ^ --data-tiering-enabled

이 작업을 실행하면 다음과 유사한 응답이 표시됩니다.

{ "ReplicationGroup": { "ReplicationGroupId": "redis-dt-cluster", "Description": "Redis OSS cluster with data tiering", "Status": "creating", "PendingModifiedValues": {}, "MemberClusters": [ "redis-dt-cluster" ], "AutomaticFailover": "enabled", "DataTiering": "enabled", "SnapshotRetentionLimit": 0, "SnapshotWindow": "06:00-07:00", "ClusterEnabled": false, "CacheNodeType": "cache.r6gd.xlarge", "TransitEncryptionEnabled": false, "AtRestEncryptionEnabled": false } }

데이터 계층화가 활성화된 상태에서 백업에서 클러스터로 데이터 복원

(콘솔), () 또는 (API) 를 사용하여 데이터 계층화를 활성화한 상태에서 새 클러스터로 백업을 복원할 수 있습니다.AWS CLI ElastiCache r6gd 패밀리의 노드 유형을 사용하여 클러스터를 생성하는 경우 데이터 계층화가 활성화됩니다.

데이터 계층화가 활성화된 새 클러스터로 백업을 복원하려면(콘솔)
  1. 에 AWS Management Console 로그인하고 https://console.aws.amazon.com/elasticache/ 에서 ElastiCache 콘솔을 엽니다.

  2. 탐색 창에서 [Backups]를 선택합니다.

  3. 백업 목록에서 복원할 백업의 이름 왼쪽에 있는 상자를 선택합니다.

  4. 복원을 선택합니다.

  5. [Restore Cluster] 대화 상자를 완료합니다. 모든 필수 필드와 기본값을 변경하려는 다른 필드를 완료해야 합니다.

    1. 클러스터 ID - 필수입니다. 새 클러스터의 이름입니다.

    2. 클러스터 모드 활성화 (스케일 아웃) - Redis OSS (클러스터 모드 활성화) 클러스터의 경우 이 옵션을 선택합니다.

    3. 노드 유형 - cache.r6gd.xlarge 또는 r6gd 패밀리의 다른 노드 유형을 지정합니다.

    4. 샤드 수(Number of Shards) - 새 클러스터(API/CLI: 노드 그룹)에 포함할 샤드 수를 선택합니다.

    5. 샤드 당 복제본 - 각 샤드에 포함할 읽기 전용 복제본 노드 수를 선택합니다.

    6. 슬롯 및 키스페이스 - 샤드에 키를 배포할 방법을 선택합니다. 키 배포를 지정하도록 선택할 경우 각 샤드의 키 범위를 지정하는 표를 완료합니다.

    7. 가용 영역 - 클러스터의 가용 영역 선택 방법을 지정합니다.

    8. 포트 - 이 클러스터에 다른 포트를 사용하려는 경우에만 변경합니다.

    9. VPC 선택 - 이 클러스터를 생성할 VPC를 선택합니다.

    10. 파라미터 그룹 - 선택한 노드 유형에 대해 Redis OSS 오버헤드를 위한 충분한 메모리를 예약하는 파라미터 그룹을 선택합니다.

  6. 원하는 대로 설정되었으면 [Create]를 선택합니다.

클러스터 생성에 대한 자세한 내용은 클러스터 생성 섹션을 참조하세요.

를 사용하여 복제 그룹을 생성할 때는 기본적으로 r6gd 제품군에서 노드 유형 (예: cache.r6gd.xlarge) 을 선택하고 매개변수를 설정하여 데이터 계층화를 사용합니다. AWS CLI --data-tiering-enabled

r6gd 패밀리의 노드 유형을 선택하는 경우 데이터 계층화를 선택 해제할 수 없습니다. --no-data-tiering-enabled 파라미터를 설정하는 경우 작업이 실패합니다.

Linux, macOS, Unix의 경우:

aws elasticache create-replication-group \ --replication-group-id redis-dt-cluster \ --replication-group-description "Redis OSS cluster with data tiering" \ --num-node-groups 1 \ --replicas-per-node-group 1 \ --cache-node-type cache.r6gd.xlarge \ --engine redis \ --cache-subnet-group-name default \ --automatic-failover-enabled \ --data-tiering-enabled \ --snapshot-name my-snapshot

Linux, macOS, Unix의 경우:

aws elasticache create-replication-group ^ --replication-group-id redis-dt-cluster ^ --replication-group-description "Redis OSS cluster with data tiering" ^ --num-node-groups 1 ^ --replicas-per-node-group 1 ^ --cache-node-type cache.r6gd.xlarge ^ --engine redis ^ --cache-subnet-group-name default ^ --automatic-failover-enabled ^ --data-tiering-enabled ^ --snapshot-name my-snapshot

이 작업을 실행하면 다음과 유사한 응답이 표시됩니다.

{ "ReplicationGroup": { "ReplicationGroupId": "redis-dt-cluster", "Description": "Redis OSS cluster with data tiering", "Status": "creating", "PendingModifiedValues": {}, "MemberClusters": [ "redis-dt-cluster" ], "AutomaticFailover": "enabled", "DataTiering": "enabled", "SnapshotRetentionLimit": 0, "SnapshotWindow": "06:00-07:00", "ClusterEnabled": false, "CacheNodeType": "cache.r6gd.xlarge", "TransitEncryptionEnabled": false, "AtRestEncryptionEnabled": false } }