데이터 계층화 - Amazon ElastiCache for Redis

데이터 계층화

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

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

예를 들어 500바이트 문자열 값을 가정하면 SSD에 저장된 데이터에 대한 요청 및 메모리의 데이터에 대한 요청과 비교하여 평균 300마이크로초의 지연 시간을 추가로 기대할 수 있습니다.

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

Limitations

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

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

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

  • 엔진은 Redis 6.2 이상을 사용하여야 합니다.

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

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

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

  • 데이터 계층화 클러스터(예: r6gd 노드 유형을 사용하는 클러스터)에서 데이터 계층화를 사용하지 않는 클러스터(예: r6g 노드 유형을 사용하는 클러스터)로 확장은 지원되지 않습니다.

  • 자동 크기 조정은 데이터 계층화를 사용하여 실행되는 클러스터에는 지원되지 않습니다.

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

  • Forkless 저장은 지원되지 않습니다. 자세한 내용은 섹션을 참조하세요동기화 및 백업 구현 방법

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

데이터 계층화 요금

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

Monitoring

ElastiCache for Redis는 데이터 계층화를 사용하는 성능 클러스터를 모니터링하도록 특별히 설계된 지표를 제공합니다. 자세한 내용은 Redis 지표에서 데이터 계층화를 사용하는 Redis 클러스터의 지표를 참조하세요.

데이터 계층화 사용

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

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

기존 클러스터에서 데이터 계층화를 사용하려면 노드 유형을 cache.r6gd.xlarge와 같은 r6gd 패밀리의 노드 유형으로 변경합니다. 해당 노드 유형을 선택하면 데이터 계층화가 자동으로 사용됩니다.

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

AWS CLI를 사용하여 복제 그룹을 생성하는 경우 cache.r6gd.xlarge와 같은 r6gd 패밀리에서 노드 유형을 선택하고 --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 cluster with data tiering" \ --num-node-groups 1 \ --replicas-per-node-group 1 \ --cache-node-type cache.r6gd.xlarge \ --engine redis \ --engine-version 6.2 \ --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 cluster with data tiering" ^ --num-node-groups 1 ^ --replicas-per-node-group 1 ^ --cache-node-type cache.r6gd.xlarge ^ --engine redis ^ --engine-version 6.2 ^ --cache-subnet-group-name default ^ --automatic-failover-enabled ^ --data-tiering-enabled

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

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

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

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

데이터 계층화가 활성화된 새 클러스터로 백업을 복원하려면(콘솔)

  1. AWS Management Console에 로그인하고 https://console.aws.amazon.com/elasticache/에서 ElastiCache 콘솔을 엽니다.

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

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

  4. [Restore]를 선택합니다.

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

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

    2. 클러스터 모드 활성화(스케일 아웃) - Redis(클러스터 모드 활성화됨) 클러스터에서 선택합니다.

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

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

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

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

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

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

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

    10. 파라미터 그룹 - 선택한 노드 유형의 Redis 오버헤드를 수용할 만큼 충분한 메모리가 있는 파라미터 그룹을 선택합니다.

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

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

AWS CLI를 사용하여 복제 그룹을 생성하는 경우 데이터 계층화는 기본적으로 cache.r6gd.xlarge와 같은 r6gd 패밀리의 노드 유형을 선택하고 --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 cluster with data tiering" \ --num-node-groups 1 \ --replicas-per-node-group 1 \ --cache-node-type cache.r6gd.xlarge \ --engine redis \ --engine-version 6.2 \ --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 cluster with data tiering" ^ --num-node-groups 1 ^ --replicas-per-node-group 1 ^ --cache-node-type cache.r6gd.xlarge ^ --engine redis ^ --engine-version 6.2 ^ --cache-subnet-group-name default ^ --automatic-failover-enabled ^ --data-tiering-enabled ^ --snapshot-name my-snapshot

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

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