MemoryDB를 위한 온라인 리샤딩 및 샤드 재분배 - Amazon MemoryDB

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

MemoryDB를 위한 온라인 리샤딩 및 샤드 재분배

MemoryDB를 통한 온라인 리샤딩 및 샤드 재분배를 사용하여 중단 시간 없이 동적으로 MemoryDB를 조정할 수 있습니다. 이러한 접근 방식은 조정 또는 재분배 진행 중에도 클러스터에서 계속해서 요청을 처리할 수 있음을 의미합니다.

다음을 수행할 수 있습니다.

  • 스케일 아웃 - MemoryDB 클러스터에 샤드를 추가하여 읽기 및 쓰기 용량을 늘립니다.

    클러스터에 샤드를 하나 이상 추가하는 경우, 각 샤드의 노드 수는 기존의 가장 작은 샤드에 있는 노드 수와 동일합니다.

  • 스케일 인 – MemoryDB 클러스터에서 샤드를 제거해 읽기 및 쓰기 용량을 줄여 비용을 절감합니다.

현재, MemoryDB 온라인 리샤딩에는 다음 제한 사항이 적용됩니다.

  • 슬롯 또는 키스페이스와 대용량 항목에 대한 제한 사항이 있습니다.

    샤드 내 키에 대용량 항목이 포함되어 있으면 확장 또는 재분배 시 해당 키가 새 샤드로 마이그레이션되지 않습니다. 이 기능으로 인해 불균형 샤드가 발생할 수 있습니다.

    샤드 내 키에 대용량 항목(직렬화 후 256MB보다 큰 항목)이 포함되어 있으면 축소 시 해당 샤드는 삭제되지 않습니다. 이 기능으로 인해 일부 샤드가 삭제되지 않을 수 있습니다.

  • 스케일 아웃 시 새 샤드의 노드 수는 기존 샤드의 노드 수와 같습니다.

자세한 정보는 모범 사례: 온라인 클러스터 크기 조정을 참조하세요.

AWS Management Console, AWS CLI 및 MemoryDB API를 사용하여 MemoryDB 클러스터를 수평적으로 조정 또는 재분배할 수 있습니다.

온라인 리샤딩을 사용하여 샤드 추가

, 또는 MemoryDB API를 사용하여 MemoryDB 클러스터에 샤드를 추가할 수 있습니다. AWS Management Console AWS CLI

를 사용하여 MemoryDB AWS Management Console 클러스터에 샤드를 하나 이상 추가할 수 있습니다. 다음 절차에서는 이러한 프로세스를 설명합니다.

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

  2. 클러스터 목록에서 샤드를 추가할 클러스터 이름을 선택합니다.

  3. 샤드 및 노드 탭에서 샤드 추가/삭제를 선택합니다.

  4. 새 샤드 수에 원하는 샤드 수를 입력합니다.

  5. 변경 내용을 저장하려면 확인을 선택하고 취소하려면 취소를 선택합니다.

다음 프로세스에서는 AWS CLI을(를) 사용해 샤드를 추가하여 MemoryDB 클러스터에서 샤드를 재구성하는 방법을 설명합니다.

update-cluster에 다음 파라미터를 사용합니다.

파라미터
  • --cluster-name - 필수입니다. 샤드 재구성 작업을 수행할 클러스터를 지정합니다.

  • --shard-configuration - 필수입니다. 샤드 수를 설정할 수 있습니다.

    • ShardCount - 이 속성을 설정하여 원하는 샤드 수를 지정합니다.

다음 예제에서는 클러스터 my-cluster의 샤드 수를 2로 수정합니다.

Linux, macOS, Unix의 경우:

aws memorydb update-cluster \ --cluster-name my-cluster \ --shard-configuration \ ShardCount=2

Windows의 경우:

aws memorydb update-cluster ^ --cluster-name my-cluster ^ --shard-configuration ^ ShardCount=2

다음과 같은 JSON 응답을 반환합니다.

{ "Cluster": { "Name": "my-cluster", "Status": "updating", "NumberOfShards": 2, "AvailabilityMode": "MultiAZ", "ClusterEndpoint": { "Address": "clustercfg.my-cluster.xxxxxx.memorydb.us-east-1.amazonaws.com", "Port": 6379 }, "NodeType": "db.r6g.large", "EngineVersion": "6.2", "EnginePatchVersion": "6.2.6", "ParameterGroupName": "default.memorydb-redis6", "ParameterGroupStatus": "in-sync", "SubnetGroupName": "my-sg", "TLSEnabled": true, "ARN": "arn:aws:memorydb:us-east-1:xxxxxxexamplearn:cluster/my-cluster", "SnapshotRetentionLimit": 0, "MaintenanceWindow": "wed:03:00-wed:04:00", "SnapshotWindow": "04:30-05:30", "DataTiering": "false", "AutoMinorVersionUpgrade": true } }

상태가 업데이트 중에서 사용 가능으로 변경된 후 업데이트된 클러스터의 세부 정보를 보려면 다음 명령을 사용하세요.

Linux, macOS, Unix의 경우:

aws memorydb describe-clusters \ --cluster-name my-cluster --show-shard-details

Windows의 경우:

aws memorydb describe-clusters ^ --cluster-name my-cluster --show-shard-details

다음과 같은 JSON 응답을 반환합니다.

{ "Clusters": [ { "Name": "my-cluster", "Status": "available", "NumberOfShards": 2, "Shards": [ { "Name": "0001", "Status": "available", "Slots": "0-8191", "Nodes": [ { "Name": "my-cluster-0001-001", "Status": "available", "AvailabilityZone": "us-east-1a", "CreateTime": "2021-08-21T20:22:12.405000-07:00", "Endpoint": { "Address": "clustercfg.my-cluster.xxxxxx.memorydb.us-east-1.amazonaws.com", "Port": 6379 } }, { "Name": "my-cluster-0001-002", "Status": "available", "AvailabilityZone": "us-east-1b", "CreateTime": "2021-08-21T20:22:12.405000-07:00", "Endpoint": { "Address": "clustercfg.my-cluster.xxxxxx.memorydb.us-east-1.amazonaws.com", "Port": 6379 } } ], "NumberOfNodes": 2 }, { "Name": "0002", "Status": "available", "Slots": "8192-16383", "Nodes": [ { "Name": "my-cluster-0002-001", "Status": "available", "AvailabilityZone": "us-east-1b", "CreateTime": "2021-08-22T14:26:18.693000-07:00", "Endpoint": { "Address": "clustercfg.my-cluster.xxxxxx.memorydb.us-east-1.amazonaws.com", "Port": 6379 } }, { "Name": "my-cluster-0002-002", "Status": "available", "AvailabilityZone": "us-east-1a", "CreateTime": "2021-08-22T14:26:18.765000-07:00", "Endpoint": { "Address": "clustercfg.my-cluster.xxxxxx.memorydb.us-east-1.amazonaws.com", "Port": 6379 } } ], "NumberOfNodes": 2 } ], "ClusterEndpoint": { "Address": "clustercfg.my-cluster.xxxxxx.memorydb.us-east-1.amazonaws.com", "Port": 6379 }, "NodeType": "db.r6g.large", "EngineVersion": "6.2", "EnginePatchVersion": "6.2.6", "ParameterGroupName": "default.memorydb-redis6", "ParameterGroupStatus": "in-sync", "SubnetGroupName": "my-sg", "TLSEnabled": true, "ARN": "arn:aws:memorydb:us-east-1:xxxxxxexamplearn:cluster/my-cluster", "SnapshotRetentionLimit": 0, "MaintenanceWindow": "wed:03:00-wed:04:00", "SnapshotWindow": "04:30-05:30", "ACLName": "my-acl", "DataTiering": "false", "AutoMinorVersionUpgrade": true } ] }

자세한 내용은 명령 참조의 update-cluster 항목을 참조하십시오. AWS CLI

MemoryDB API에서 UpdateCluster 작업을 사용해 MemoryDB 클러스터 내 샤드를 온라인으로 재구성할 수 있습니다.

UpdateCluster에 다음 파라미터를 사용합니다.

파라미터
  • ClusterName - 필수입니다. 샤드 재구성 작업을 수행할 클러스터를 지정합니다.

  • ShardConfiguration - 필수입니다. 샤드 수를 설정할 수 있습니다.

    • ShardCount - 이 속성을 설정하여 원하는 샤드 수를 지정합니다.

자세한 내용은 UpdateCluster를 참조하세요.

온라인 리샤딩을 사용하여 샤드 제거

, 또는 MemoryDB API를 사용하여 MemoryDB 클러스터에서 샤드를 제거할 수 있습니다. AWS Management Console AWS CLI

다음 프로세스에서는 AWS Management Console을(를) 사용해 샤드를 제거하여 MemoryDB 클러스터에서 샤드를 재구성하는 방법을 설명합니다.

중요

클러스터에서 샤드를 제거하기 전에 MemoryDB에서는 모든 데이터가 나머지 샤드에 맞는지 확인합니다. 데이터가 맞으면 요청에 따라 샤드가 클러스터에서 삭제됩니다. 데이터가 나머지 샤드에 맞지 않으면 프로세스가 종료되고 클러스터는 요청이 작성되기 전과 동일한 샤드 구성으로 남습니다.

를 사용하여 MemoryDB 클러스터에서 샤드를 하나 이상 제거할 수 있습니다. AWS Management Console 클러스터의 모든 샤드를 제거할 수는 없습니다. 대신 클러스터를 삭제해야 합니다. 자세한 정보는 4단계: 클러스터 삭제을 참조하세요. 다음 절차는 샤드를 하나 이상 삭제하는 프로세스를 설명합니다.

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

  2. 클러스터 목록에서 샤드를 제거할 클러스터 이름을 선택합니다.

  3. 샤드 및 노드 탭에서 샤드 추가/삭제를 선택합니다.

  4. 새 샤드 수에 원하는 샤드 수(최소 1개)를 입력합니다.

  5. 변경 내용을 저장하려면 확인을 선택하고, 취소하려면 취소를선택합니다.

다음 프로세스에서는 AWS CLI을(를) 사용해 샤드를 제거하여 MemoryDB 클러스터에서 샤드를 재구성하는 방법을 설명합니다.

중요

클러스터에서 샤드를 제거하기 전에 MemoryDB에서는 모든 데이터가 나머지 샤드에 맞는지 확인합니다. 데이터가 맞으면 요청된 대로 샤드가 클러스터에서 삭제되고 해당 샤드의 키스페이스가 나머지 샤드로 매핑됩니다. 데이터가 나머지 샤드에 맞지 않으면 프로세스가 종료되고 클러스터는 요청이 작성되기 전과 동일한 샤드 구성으로 남습니다.

를 사용하여 MemoryDB 클러스터에서 샤드를 하나 이상 제거할 수 있습니다. AWS CLI 클러스터의 모든 샤드를 제거할 수는 없습니다. 대신 클러스터를 삭제해야 합니다. 자세한 정보는 4단계: 클러스터 삭제을 참조하세요.

update-cluster에 다음 파라미터를 사용합니다.

파라미터
  • --cluster-name - 필수입니다. 샤드 재구성 작업을 수행할 클러스터를 지정합니다.

  • --shard-configuration - 필수입니다. ShardCount 속성을 사용하여 샤드 수를 설정할 수 있습니다.

    ShardCount - 이 속성을 설정하여 원하는 샤드 수를 지정합니다.

다음 예제에서는 클러스터 my-cluster의 샤드 수를 2로 수정합니다.

Linux, macOS, Unix의 경우:

aws memorydb update-cluster \ --cluster-name my-cluster \ --shard-configuration \ ShardCount=2

Windows의 경우:

aws memorydb update-cluster ^ --cluster-name my-cluster ^ --shard-configuration ^ ShardCount=2

다음과 같은 JSON 응답을 반환합니다.

{ "Cluster": { "Name": "my-cluster", "Status": "updating", "NumberOfShards": 2, "AvailabilityMode": "MultiAZ", "ClusterEndpoint": { "Address": "clustercfg.my-cluster.xxxxxx.memorydb.us-east-1.amazonaws.com", "Port": 6379 }, "NodeType": "db.r6g.large", "EngineVersion": "6.2", "EnginePatchVersion": "6.2.6", "ParameterGroupName": "default.memorydb-redis6", "ParameterGroupStatus": "in-sync", "SubnetGroupName": "my-sg", "TLSEnabled": true, "ARN": "arn:aws:memorydb:us-east-1:xxxxxxexamplearn:cluster/my-cluster", "SnapshotRetentionLimit": 0, "MaintenanceWindow": "wed:03:00-wed:04:00", "SnapshotWindow": "04:30-05:30", "DataTiering": "false", "AutoMinorVersionUpgrade": true } }

상태가 업데이트 중에서 사용 가능으로 변경된 후 업데이트된 클러스터의 세부 정보를 보려면 다음 명령을 사용하세요.

Linux, macOS, Unix의 경우:

aws memorydb describe-clusters \ --cluster-name my-cluster --show-shard-details

Windows의 경우:

aws memorydb describe-clusters ^ --cluster-name my-cluster --show-shard-details

다음과 같은 JSON 응답을 반환합니다.

{ "Clusters": [ { "Name": "my-cluster", "Status": "available", "NumberOfShards": 2, "Shards": [ { "Name": "0001", "Status": "available", "Slots": "0-8191", "Nodes": [ { "Name": "my-cluster-0001-001", "Status": "available", "AvailabilityZone": "us-east-1a", "CreateTime": "2021-08-21T20:22:12.405000-07:00", "Endpoint": { "Address": "clustercfg.my-cluster.xxxxxx.memorydb.us-east-1.amazonaws.com", "Port": 6379 } }, { "Name": "my-cluster-0001-002", "Status": "available", "AvailabilityZone": "us-east-1b", "CreateTime": "2021-08-21T20:22:12.405000-07:00", "Endpoint": { "Address": "clustercfg.my-cluster.xxxxxx.memorydb.us-east-1.amazonaws.com", "Port": 6379 } } ], "NumberOfNodes": 2 }, { "Name": "0002", "Status": "available", "Slots": "8192-16383", "Nodes": [ { "Name": "my-cluster-0002-001", "Status": "available", "AvailabilityZone": "us-east-1b", "CreateTime": "2021-08-22T14:26:18.693000-07:00", "Endpoint": { "Address": "clustercfg.my-cluster.xxxxxx.memorydb.us-east-1.amazonaws.com", "Port": 6379 } }, { "Name": "my-cluster-0002-002", "Status": "available", "AvailabilityZone": "us-east-1a", "CreateTime": "2021-08-22T14:26:18.765000-07:00", "Endpoint": { "Address": "clustercfg.my-cluster.xxxxxx.memorydb.us-east-1.amazonaws.com", "Port": 6379 } } ], "NumberOfNodes": 2 } ], "ClusterEndpoint": { "Address": "clustercfg.my-cluster.xxxxxx.memorydb.us-east-1.amazonaws.com", "Port": 6379 }, "NodeType": "db.r6g.large", "EngineVersion": "6.2", "EnginePatchVersion": "6.2.6", "ParameterGroupName": "default.memorydb-redis6", "ParameterGroupStatus": "in-sync", "SubnetGroupName": "my-sg", "TLSEnabled": true, "ARN": "arn:aws:memorydb:us-east-1:xxxxxxexamplearn:cluster/my-cluster", "SnapshotRetentionLimit": 0, "MaintenanceWindow": "wed:03:00-wed:04:00", "SnapshotWindow": "04:30-05:30", "ACLName": "my-acl", "DataTiering": "false", "AutoMinorVersionUpgrade": true } ] }

자세한 내용은 명령 참조의 update-cluster 항목을 참조하십시오. AWS CLI

MemoryDB API에서 UpdateCluster 작업을 사용해 MemoryDB 클러스터 내 샤드를 온라인으로 재구성할 수 있습니다.

다음 프로세스에서는 MemoryDB API를 사용해 샤드를 제거하여 MemoryDB 클러스터에서 샤드를 재구성하는 방법을 설명합니다.

중요

클러스터에서 샤드를 제거하기 전에 MemoryDB에서는 모든 데이터가 나머지 샤드에 맞는지 확인합니다. 데이터가 맞으면 요청된 대로 샤드가 클러스터에서 삭제되고 해당 샤드의 키스페이스가 나머지 샤드로 매핑됩니다. 데이터가 나머지 샤드에 맞지 않으면 프로세스가 종료되고 클러스터는 요청이 작성되기 전과 동일한 샤드 구성으로 남습니다.

MemoryDB API를 사용하여 MemoryDB 클러스터에서 샤드를 하나 이상 제거할 수 있습니다. 클러스터의 모든 샤드를 제거할 수는 없습니다. 대신 클러스터를 삭제해야 합니다. 자세한 정보는 4단계: 클러스터 삭제을 참조하세요.

UpdateCluster에 다음 파라미터를 사용합니다.

파라미터
  • ClusterName - 필수입니다. 샤드 재구성 작업을 수행할 클러스터를 지정합니다.

  • ShardConfiguration - 필수입니다. ShardCount 속성을 사용하여 샤드 수를 설정할 수 있습니다.

    ShardCount - 이 속성을 설정하여 원하는 샤드 수를 지정합니다.