

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

# 클러스터 관리
<a name="clusters"></a>

클러스터 수준에서 대부분의 MemoryDB 작업이 수행됩니다. 특정 수의 노드 및 각 노드에 대한 속성을 제어하는 파라미터 그룹을 사용하여 클러스터를 설정할 수 있습니다. 클러스터 하나에 속한 모든 노드는 노드 유형, 파라미터 및 보안 그룹 설정이 동일합니다.

클러스터마다 클러스터 식별자가 있습니다. 클러스터 식별자는 고객이 제공하는 클러스터 이름입니다. MemoryDB API 및 AWS CLI 명령과 상호 작용할 때 이 식별자가 특정한 클러스터를 지정합니다. 클러스터 식별자는 AWS 리전의 해당 고객에 대해 고유해야 합니다.

MemoryDB 클러스터는 Amazon EC2 인스턴스를 사용하여 액세스하도록 설계되었습니다. Amazon VPC 서비스 기반의 Virtual Private Cloud(VPC)에서만 MemoryDB 클러스터를 시작할 수 있으며 AWS밖에서 액세스할 수 있습니다. 자세한 내용은 [AWS 외부에서 MemoryDB 리소스에 액세스](accessing-memorydb.md#access-from-outside-aws) 단원을 참조하십시오.

# 데이터 계층화
<a name="data-tiering"></a>

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

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

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

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

가장 큰 데이터 계층화 노드 크기(db.r6gd.8xlarge)를 사용하면 단일 500노드 클러스터에 대략 500TB까지 저장할 수 있습니다(읽기 복제본 1개를 사용하는 경우는 250TB). 데이터 계층화의 경우, MemoryDB는 노드당(DRAM) 메모리의 19%를 비데이터 사용을 위해 예약합니다. 데이터 계층화는 MemoryDB에서 지원되는 모든 Valkey 및 Redis OSS 명령 및 데이터 구조와 호환됩니다. 이 기능을 사용하려면 클라이언트 측 변경 사항이 필요하지 않습니다.

**Topics**
+ [모범 사례](data-tiering-best-practices.md)
+ [데이터 계층화 제한 사항](data-tiering-prerequisites.md)
+ [데이터 계층화 요금](data-tiering-pricing.md)
+ [데이터 계층화 모니터링](data-tiering-monitoring.md)
+ [데이터 계층화 사용](data-tiering-enabling.md)
+ [스냅샷에서 클러스터로 데이터 복원](data-tiering-enabling-snapshots.md)

# 모범 사례
<a name="data-tiering-best-practices"></a>

다음 모범 사례를 따르는 것이 좋습니다.
+ 데이터 계층화는 전체 데이터 세트의 최대 20%까지 정기적으로 액세스하는 워크로드와 SSD에서 데이터에 액세스할 때 추가 지연 시간을 허용할 수 있는 애플리케이션에 이상적입니다.
+ 데이터 계층화 노드에서 사용 가능한 SSD 용량을 사용하는 경우 값 크기가 키 크기보다 큰 것이 좋습니다. 값 크기는 128MB를 초과할 수 없습니다. 그렇지 않으면 디스크로 이동되지 않습니다. DRAM과 SSD 간에 항목이 이동하면 키는 항상 메모리에 남아 있고 값만 SSD 계층으로 이동합니다.

# 데이터 계층화 제한 사항
<a name="data-tiering-prerequisites"></a>

데이터 계층화에는 다음과 같은 제한 사항이 있습니다.
+ 사용하는 노드 유형은 `us-east-2`, `us-east-1`, `us-west-2`, `us-west-1`, `eu-west-1`, `eu-west-3`, `eu-central-1`, `ap-northeast-1`, `ap-southeast-1`, `ap-southeast-2`, `ap-south-1`, `ca-central-1`, `sa-east-1`과 같은 리전에서 사용할 수 있는 r6gd 패밀리의 노드 유형이어야 합니다.
+ r6gd 클러스터를 사용하지 않는 한 r6gd 클러스터의 스냅샷을 다른 클러스터로 복원할 수 없습니다.
+ 데이터 계층화 클러스터를 위해 스냅샷을 Amazon S3로 내보낼 수 없습니다.
+ Forkless 저장은 지원되지 않습니다.
+ 데이터 계층화 클러스터(예: r6gd 노드 유형을 사용하는 클러스터)에서 데이터 계층화를 사용하지 않는 클러스터(예: r6g 노드 유형을 사용하는 클러스터)로 확장은 지원되지 않습니다.
+ 데이터 계층화는 `volatile-lru`, `allkeys-lru`, `noeviction` 메모리 사용량 제한 정책만 지원합니다.
+ 128MiB보다 큰 항목은 SSD로 이동되지 않습니다.

# 데이터 계층화 요금
<a name="data-tiering-pricing"></a>

R6gD 노드는 총 용량(메모리 \$1 SSD)의 5배 더 많으며 R6g 노드에 비해 최대 사용률로 실행될 때 보관 비용의 60% 이상의 절감 효과를 얻을 수 있습니다(메모리만 해당). 자세한 내용은 [MemoryDB 요금](https://aws.amazon.com/memorydb/pricing/) 단원을 참조하세요.

# 데이터 계층화 모니터링
<a name="data-tiering-monitoring"></a>

MemoryDB는 데이터 계층화를 사용하는 성능 클러스터를 모니터링하도록 특별히 설계된 지표를 제공합니다. SSD와 비교하여 DRAM의 항목 비율을 모니터링하려면 [MemoryDB에 대한 지표](metrics.memorydb.md)에서 `CurrItems` 지표를 사용할 수 있습니다. 백분율은 `(CurrItems with Dimension: Tier = Memory * 100) / (CurrItems with no dimension filter)`와(과) 같이 계산할 수 있습니다.

 구성된 제거 정책이 허용하는 경우 메모리의 항목 비율이 5% 미만으로 감소하면 MemoryDB가 항목 제거를 시작합니다. 제거 정책으로 구성된 노드에서 쓰기 작업은 메모리 부족 오류를 수신합니다.

 메모리에 있는 항목의 비율이 5% 미만으로 감소하면 여전히 [MemoryDB 클러스터 크기 조정](scaling-cluster.md)을 고려하는 것이 좋습니다. 자세한 내용은 [MemoryDB에 대한 지표](metrics.memorydb.md)에서 *데이터 계층화를 사용하는 MemoryDB 클러스터의 지표*를 참조하세요.

# 데이터 계층화 사용
<a name="data-tiering-enabling"></a>

## AWS Management Console을 사용하여 데이터 계층화 사용
<a name="data-tiering-enabling-console"></a>

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

클러스터 생성에 대한 자세한 내용은 [2단계: 클러스터 생성](getting-started.md#getting-started.createcluster) 섹션을 참조하세요.

## AWS CLI를 사용하여 데이터 계층화 사용
<a name="data-tiering-enabling-cli"></a>

AWS CLI를 사용하여 클러스터를 생성하는 경우, *db.r6gd.xlarge*와 같은 r6gd 패밀리에서 노드 유형을 선택하고 `--data-tiering` 파라미터를 설정하여 데이터 계층화를 사용합니다.

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

Linux, macOS, Unix의 경우:

```
aws memorydb create-cluster \
   --cluster-name my-cluster \
   --node-type db.r6gd.xlarge \
   --engine valkey  \
   --acl-name my-acl \
   --subnet-group my-sg \
   --data-tiering
```

Windows의 경우:

```
aws memorydb create-cluster ^
   --cluster-name my-cluster ^
   --node-type db.r6gd.xlarge ^
   --engine valkey ^
   --acl-name my-acl ^
   --subnet-group my-sg
   --data-tiering
```

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

```
{
    "Cluster": {
        "Name": "my-cluster",
        "Status": "creating",
        "NumberOfShards": 1,
        "AvailabilityMode": "MultiAZ",
        "ClusterEndpoint": {
            "Port": 6379
        },
        "NodeType": "db.r6gd.xlarge",
        "EngineVersion": "7.2",
        "EnginePatchVersion": "7.2.6",
        "Engine": "valkey"
        "ParameterGroupName": "default.memorydb-valkey7",
        "ParameterGroupStatus": "in-sync",
        "SubnetGroupName": "my-sg",
        "TLSEnabled": true,
        "ARN": "arn:aws:memorydb:us-east-1:xxxxxxxxxxxxxx:cluster/my-cluster",
        "SnapshotRetentionLimit": 0,
        "MaintenanceWindow": "wed:03:00-wed:04:00",
        "SnapshotWindow": "04:30-05:30",        
        "ACLName": "my-acl",
        "DataTiering":"true",
        "AutoMinorVersionUpgrade": true
    }
}
```

# 스냅샷에서 클러스터로 데이터 복원
<a name="data-tiering-enabling-snapshots"></a>

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

## 데이터 계층화가 활성화된 상태로 스냅샷에서 클러스터로 데이터 복원(콘솔)
<a name="data-tiering-enabling-snapshots-console"></a>

데이터 계층화가 활성화된 새 클러스터(콘솔)로 스냅샷을 복원하려면 [스냅샷에서 복원(콘솔)](snapshots-restoring.md#snapshots-restoring-CON)의 단계를 따르세요.

데이터 계층화를 활성화하려면 r6gd 패밀리의 노드 유형을 선택해야 합니다.

## 데이터 계층화가 활성화된 상태에서 스냅샷에서 클러스터로 데이터 복원(AWS CLI)
<a name="data-tiering-enabling-snapshots-cli"></a>

AWS CLI를 사용하여 클러스터를 생성하는 경우, 데이터 계층화는 기본적으로 *db.r6gd.xlarge*와 같은 r6gd 패밀리의 노드 유형을 선택하고 `--data-tiering` 파라미터를 설정하여 사용됩니다.

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

Linux, macOS, Unix의 경우:

```
aws memorydb create-cluster \
   --cluster-name my-cluster \
   --node-type db.r6gd.xlarge \
   --engine valkey 
   --acl-name my-acl \
   --subnet-group my-sg \
   --data-tiering \
   --snapshot-name my-snapshot
```

Windows의 경우:

```
aws memorydb create-cluster ^
   --cluster-name my-cluster ^
   --node-type db.r6gd.xlarge ^
   --engine valkey ^
   --acl-name my-acl ^
   --subnet-group my-sg ^
   --data-tiering ^
   --snapshot-name my-snapshot
```

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

```
{
    "Cluster": {
        "Name": "my-cluster",
        "Status": "creating",
        "NumberOfShards": 1,
        "AvailabilityMode": "MultiAZ",
        "ClusterEndpoint": {
            "Port": 6379
        },
        "NodeType": "db.r6gd.xlarge",
        "EngineVersion": "7.2",
        "EnginePatchVersion": "7.2.6",
        "Engine": "valkey"
        "ParameterGroupName": "default.memorydb-valkey7",
        "ParameterGroupStatus": "in-sync",
        "SubnetGroupName": "my-sg",
        "TLSEnabled": true,
        "ARN": "arn:aws:memorydb:us-east-1:xxxxxxxxxxxxxx:cluster/my-cluster",
        "SnapshotRetentionLimit": 0,
        "MaintenanceWindow": "wed:03:00-wed:04:00",
        "SnapshotWindow": "04:30-05:30",
        "ACLName": "my-acl",       
        "DataTiering": "true"
}
```

# 클러스터 준비
<a name="clusters.prepare"></a>

다음에 MemoryDB 콘솔, AWS CLI또는 MemoryDB API를 사용하는 클러스터 생성에 관한 지침이 나와 있습니다.

클러스터를 생성할 때마다 준비 작업을 미리 하면 즉시 업그레이드하거나 변경할 필요가 없어 좋습니다.

**Topics**
+ [요구 사항 결정](cluster-create-determine-requirements.md)

# 요구 사항 결정
<a name="cluster-create-determine-requirements"></a>

**준비**  
다음 질문에 대한 답을 알고 있으면 클러스터를 더 원활하게 만들 수 있습니다.
+ 클러스터를 생성하기 전에 동일한 VPC에서 서브넷 그룹을 생성해야 합니다. 또는 제공된 기본 서브넷 그룹을 사용할 수도 있습니다. 자세한 내용은 [서브넷 및 서브넷 그룹](subnetgroups.md) 단원을 참조하십시오.

  MemoryDB는 Amazon EC2를 AWS 사용하여 내부에서 액세스하도록 설계되었습니다. 하지만 Amazon VPC 기반의 VPC에서 시작하는 경우 AWS밖에서 액세스 권한을 제공할 수 있습니다. 자세한 내용은 [AWS 외부에서 MemoryDB 리소스에 액세스](accessing-memorydb.md#access-from-outside-aws) 단원을 참조하십시오.
+ 파라미터 값을 사용자 지정해야 합니까?

  그렇다면 사용자 지정 파라미터 그룹을 만듭니다. 자세한 내용은 [파라미터 그룹 생성](parametergroups.creating.md) 단원을 참조하십시오.
+ VPC 보안 그룹을 생성해야 합니까?

  자세한 내용은 [VPC의 보안](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Security.html)을 참조하세요.
+ 어떤 방법으로 내결함성을 구현하시겠습니까?

  자세한 내용은 [장애 완화](faulttolerance.md) 단원을 참조하십시오.

**Topics**
+ [메모리 및 프로세서 요구 사항](#cluster-create-determine-requirements-memory)
+ [MemoryDB 클러스터 구성](#cluster-configuration)
+ [향상된 I/O 멀티플렉싱](#cluster-create-determine-requirements-multiplexing)
+ [조정 요구 사항](#cluster-create-determine-requirements-scaling)
+ [액세스 요구 사항](#cluster-create-determine-requirements-access)
+ [리전 및 가용 영역](#cluster-create-determine-requirements-region)

## 메모리 및 프로세서 요구 사항
<a name="cluster-create-determine-requirements-memory"></a>

MemoryDB의 기본 구성 요소는 노드입니다. 노드는 샤드로 구성되어 클러스터를 형성합니다. 클러스터에 사용할 노드 유형을 결정할 때 클러스터의 노드 구성과 저장해야 하는 데이터의 양을 고려합니다.

## MemoryDB 클러스터 구성
<a name="cluster-configuration"></a>

MemoryDB 클러스터는 1개에서 500개의 샤드로 구성됩니다. MemoryDB 클러스터에 있는 데이터는 클러스터의 여러 샤드에 두루 분할됩니다. 애플리케이션은 엔드포인트라는 네트워크 주소를 사용하여 MemoryDB 클러스터에 연결됩니다. 노드 엔드포인트 외에도 MemoryDB 클러스터는 *클러스터 엔드포인트*라는 엔드포인트를 가지고 있습니다. 애플리케이션에서는 이 엔드포인트를 사용하여 클러스터에서 읽거나 쓸 수 있으며, 읽을 노드 또는 쓸 노드에 대한 결정은 MemoryDB에 맡깁니다.

## 향상된 I/O 멀티플렉싱
<a name="cluster-create-determine-requirements-multiplexing"></a>

Valkey 또는 Redis OSS 버전 7.0 이상을 실행하는 경우 향상된 I/O 멀티플렉싱을 통해 추가 가속화를 얻을 수 있습니다. 각 전용 네트워크 IO는 여러 클라이언트의 명령을 엔진으로 파이프라인하며 명령을 배치로 효율성 있게 처리하는 기능을 활용합니다. 자세한 내용은 [초고속 성능](https://aws.amazon.com/memorydb/features/#Ultra-fast_performance) 및 [지원되는 노드 유형](nodes.supportedtypes.md)을(를) 참조하세요.

## 조정 요구 사항
<a name="cluster-create-determine-requirements-scaling"></a>

모든 클러스터를 더 큰 노드 유형으로 스케일 업할 수 있습니다. MemoryDB 클러스터를 스케일 업할 때 클러스터를 계속 사용할 수 있도록 온라인으로 조정하거나 스냅샷에서 새 클러스터를 확장하고 새 클러스터가 비워지지 않도록 할 수 있습니다.

자세한 내용은 이 가이드의 [규모 조정](scaling.md)을 참조하세요.

## 액세스 요구 사항
<a name="cluster-create-determine-requirements-access"></a>

설계에 따라 MemoryDB 클러스터는 Amazon EC2 인스턴스에서 액세스합니다. MemoryDB 클러스터에 대한 네트워크 액세스는 클러스터를 생성한 계정으로 제한됩니다. 따라서 Amazon EC2 인스턴스에서 클러스터에 액세스하려면 먼저 클러스터에 액세스하도록 승인해야 합니다. 자세한 지침은 이 가이드의 [3단계: 클러스터에 대한 액세스 허가](getting-started.md#getting-started.authorizeaccess)를 참조하세요.

## 리전 및 가용 영역
<a name="cluster-create-determine-requirements-region"></a>

애플리케이션과 가까운 AWS 리전에 MemoryDB 클러스터를 배치하면 지연 시간을 줄일 수 있습니다. 클러스터에 다중 노드가 있는 경우 다른 가용 영역에 노드를 배치하면 클러스터에 장애가 미치는 영향을 줄일 수 있습니다.

자세한 내용은 다음을 참조하세요.
+ [리전 및 가용 영역 선택](regionsandazs.md)
+ [장애 완화](faulttolerance.md)

# 클러스터 생성
<a name="cluster.create"></a>

MemoryDB는 클러스터를 생성하는 세 가지 방법을 제공합니다. 자세한 내용은 [2단계: 클러스터 생성](getting-started.md#getting-started.createcluster) 단원을 참조하십시오.

# 클러스터 세부 정보 보기
<a name="clusters.viewdetails"></a>

MemoryDB 콘솔 AWS CLI또는 MemoryDB API를 사용하여 하나 이상의 클러스터에 대한 세부 정보를 볼 수 MemoryDB.

## MemoryDB 클러스터의 세부 정보 보기(콘솔)
<a name="clusters.viewdetails.con"></a>

다음 절차에서는 MemoryDB 콘솔을 사용하여 MemoryDB 클러스터의 세부 정보를 보는 방법을 자세히 설명합니다.

****

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

1. 클러스터의 세부 정보를 보려면 클러스터 이름의 왼쪽에 있는 라디오 버튼을 선택한 다음 **세부 정보 보기**를 선택합니다. 클러스터를 직접 클릭하여 클러스터 세부 정보 페이지를 볼 수도 있습니다.

   **클러스터 세부 정보** 페이지에는 클러스터 엔드포인트를 포함하여 클러스터에 대한 세부 정보가 표시됩니다. **클러스터 세부 정보** 페이지에 있는 여러 탭을 사용하여 자세한 내용을 볼 수 있습니다.

1. 클러스터의 샤드 목록과 각 샤드 내 노드 개수를 보려면 **샤드 및 노드** 탭을 선택합니다.

1. 노드에 대한 특정 정보를 보려면 아래 표에서 샤드를 확장하세요. 또는 검색 상자를 사용하여 샤드를 검색할 수도 있습니다.

   이렇게 하면 가용 영역, 슬롯/키스페이스, 상태 등 각 노드에 대한 정보가 표시됩니다.

1. **지표** 탭을 선택하여 **CPU 사용률** 및 **엔진 CPU 사용률**과 같은 각각의 프로세스를 모니터링할 수 있습니다. 자세한 내용은 [MemoryDB에 대한 지표](metrics.memorydb.md) 단원을 참조하십시오.

1. **네트워크 및 보안** 탭을 선택하여 서브넷 그룹 및 보안 그룹의 세부 정보를 확인합니다.

   1. **서브넷 그룹**에서 서브넷 그룹의 이름, 서브넷이 속한 VPC로 연결되는 링크, 서브넷 그룹의 Amazon 리소스 이름(ARN)을 볼 수 있습니다.

   1. **보안 그룹**에서는 보안 그룹 ID, 이름 및 설명을 볼 수 있습니다.

1. **유지 관리 및 스냅샷** 탭을 선택하면 스냅샷 설정의 세부 정보를 볼 수 있습니다.

   1. **스냅샷**에서 자동 스냅샷의 활성화 여부, 스냅샷 보존 기간 및 스냅샷 창을 확인할 수 있습니다.

   1. **스냅샷**에는 스냅샷 이름, 크기, 샤드 수 및 상태를 포함하여 이 클러스터에 대한 모든 스냅샷 목록이 표시됩니다.

   자세한 내용은 [스냅샷 및 복원](snapshots.md) 단원을 참조하십시오.

1. **유지 관리 및 스냅샷** 탭을 선택하면 보류 중인 ACL, 리샤딩 또는 서비스 업데이트와 함께 유지 관리 기간의 세부 정보를 볼 수 있습니다. 자세한 내용은 [유지 관리 관리 중](maintenance-window.md) 단원을 참조하십시오.

1. **서비스 업데이트** 탭을 선택하면 이 클러스터에 적용되는 모든 서비스 업데이트의 세부 정보를 볼 수 있습니다. 자세한 내용은 [MemoryDB의 서비스 업데이트](service-updates.md) 단원을 참조하십시오.

1. **태그** 탭을 선택하면 이 클러스터와 관련된 리소스 또는 비용 할당 태그의 세부 정보를 볼 수 있습니다. 자세한 내용은 [스냅샷 태깅](snapshots-tagging.md) 단원을 참조하십시오.

## 클러스터 세부 정보 보기(AWS CLI)
<a name="clusters.viewdetails.cli"></a>

명령을 사용하여 클러스터의 세부 정보를 볼 수 있습니다 AWS CLI `describe-clusters`. `--cluster-name` 파라미터가 생략되면 여러 클러스터(최대 `--max-results`개)의 세부 정보가 반환됩니다. `--cluster-name` 파라미터가 포함되면 지정한 클러스터의 세부 정보가 반환됩니다. `--max-results` 파라미터를 사용하여 반환되는 레코드 수를 제한할 수 있습니다.

다음 코드는 `my-cluster`의 세부 정보를 나열합니다.

```
aws memorydb describe-clusters --cluster-name my-cluster
```

다음 코드는 클러스터 최대 25개의 세부 정보를 나열합니다.

```
aws memorydb describe-clusters --max-results 25
```

**Example**  
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",
            "Description": "my cluster",
            "Status": "available",
            "NumberOfShards": 1,
            "Shards": [
                {
                    "Name": "0001",
                    "Status": "available",
                    "Slots": "0-16383",
                    "Nodes": [
                        {
                            "Name": "my-cluster-0001-001",
                            "Status": "available",
                            "AvailabilityZone": "us-east-1a",
                            "CreateTime": 1629230643.961,
                            "Endpoint": {
                                "Address": "my-cluster-0001-001.my-cluster.abcdef.memorydb.us-east-1.amazonaws.com",
                                "Port": 6379
                            }
                        },
                        {
                            "Name": "my-cluster-0001-002",
                            "Status": "available",
                            "CreateTime": 1629230644.025,
       	       	       	    "Endpoint":	{
       	       	       	       	"Address": "my-cluster-0001-002.my-cluster.abcdef.memorydb.us-east-1.amazonaws.com",
       	       	       	       	"Port":	6379
       	       	       	    }
                        }
                    ],
                    "NumberOfNodes": 2
                }
            ],
            "ClusterEndpoint": {
                "Address": "clustercfg.my-cluster.abcdef.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": "default",
            "TLSEnabled": true,
            "ARN": "arn:aws:memorydb:us-east-1:000000000:cluster/my-cluster",
            "SnapshotRetentionLimit": 0,
            "MaintenanceWindow": "sat:06:30-sat:07:30",
            "SnapshotWindow": "04:00-05:00",
            "ACLName": "open-access",
            "DataTiering": "false",
            "AutoMinorVersionUpgrade": true,            
        }
```

자세한 내용은 MemoryDB 주제를 참조 AWS CLI 하세요[https://docs.aws.amazon.com/cli/latest/reference/memorydb/describe-clusters.html](https://docs.aws.amazon.com/cli/latest/reference/memorydb/describe-clusters.html).

## 클러스터 세부 정보 보기(MemoryDB API)
<a name="clusters.viewdetails.api"></a>

MemoryDB API `DescribeClusters` 작업을 사용하여 클러스터의 세부 정보를 볼 수 있습니다. `ClusterName` 파라미터가 포함되면 지정한 클러스터의 세부 정보가 반환됩니다. `ClusterName` 파라미터가 생략되면 클러스터 최대 `MaxResults`개(기본값 100)의 세부 정보가 반환됩니다. `MaxResults`의 값은 20 이상 또는 100 이하여야 합니다.

다음 코드는 `my-cluster`의 세부 정보를 나열합니다.

```
https://memory-db.us-east-1.amazonaws.com/
   ?Action=DescribeClusters
   &ClusterName=my-cluster
   &Version=2021-01-01
   &SignatureVersion=4
   &SignatureMethod=HmacSHA256
   &Timestamp=20210802T192317Z
   &X-Amz-Credential=<credential>
```

다음 코드는 클러스터 최대 25개의 세부 정보를 나열합니다.

```
https://memory-db.us-east-1.amazonaws.com/
   ?Action=DescribeClusters
   &MaxResults=25
   &Version=2021-02-02
   &SignatureVersion=4
   &SignatureMethod=HmacSHA256
   &Timestamp=20210802T192317Z
   &X-Amz-Credential=<credential>
```

자세한 내용은 MemoryDB API 참조 항목 [https://docs.aws.amazon.com/memorydb/latest/APIReference/API_DescribeClusters.html](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_DescribeClusters.html)를 참조하세요.

# MemoryDB 클러스터 수정
<a name="clusters.modify"></a>

클러스터에서 노드를 추가하거나 제거하는 것 외에도 보안 그룹을 추가하거나 유지 관리 기간 또는 파라미터 그룹을 변경하는 등 기존의 클러스터를 변경해야 할 경우도 있습니다.

유지 관리 기간을 사용률이 가장 낮은 시간으로 낮추는 것이 유익하므로 수정해야 할 때도 있습니다.

클러스터의 파라미터를 변경하면 변경 사항이 클러스터에 즉시 적용됩니다. 이는 클러스터의 파라미터 그룹 자체에서 변경하든 파라미터 값을 클러스터의 파라미터 그룹 내에서 변경하든 마찬가지입니다.

클러스터의 엔진 버전을 업데이트할 수도 있습니다. 예를 들어 새 엔진 마이너 버전을 선택하면 MemoryDB가 즉시 클러스터 업데이트를 시작합니다.

## 사용 AWS Management Console
<a name="clusters.modifyclusters.viewdetails"></a>

**클러스터를 수정하려면**

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

1. 오른쪽 상단의 목록에서 수정하려는 클러스터가 위치한 AWS 리전을 선택합니다.

1. 왼쪽 탐색창에서 **클러스터**로 이동합니다. **클러스터 세부 정보**에서 라디오 버튼을 사용하여 클러스터를 선택하고 **작업**, **수정**으로 이동합니다.

1. **수정** 페이지가 나타납니다.

1. **Modify** 창에서 원하는 내용을 수정합니다. 옵션에는 다음이 포함됩니다.
   + 설명
   + 서브넷 그룹
   + VPC 보안 그룹
   + 노드 유형
**참고**  
클러스터가 r6gd 패밀리의 노드 유형을 사용하는 경우 해당 패밀리 내에서 다른 크기의 노드만 선택할 수 있습니다. r6gd 패밀리의 노드 유형을 선택하는 경우 데이터 계층화가 자동으로 활성화됩니다. 자세한 내용은 [데이터 계층화](data-tiering.md) 단원을 참조하십시오.
   + Valkey 또는 Redis OSS 버전 호환성
   + 자동 스냅샷 활성화
   + 수동 스냅샷 보존 기간
   + 스냅샷 창
   + 유지 관리 윈도우
   + SNS 알림 주제

1. **변경 사항 저장**을 선택합니다.

**클러스터 세부 정보** 페이지로 이동하여 수정을 클릭하여 클러스터를 **수정**할 수도 있습니다. 클러스터의 특정 섹션을 수정하려면 **클러스터 세부 정보** 페이지의 해당 탭으로 이동하여 **수정**을 클릭하면 됩니다.

## 사용 AWS CLI
<a name="clusters.modify.cli"></a>

작업을 사용하여 기존 클러스터를 AWS CLI `update-cluster` 수정할 수 있습니다. 클러스터의 구성 값을 수정하려면 클러스터 ID, 변경할 파라미터 및 파라미터의 새 값을 지정합니다. 다음 예제에서는 `my-cluster`라는 클러스터의 유지 관리 기간을 변경하고 변경 사항을 즉시 적용합니다.

Linux, macOS, Unix의 경우:

```
aws memorydb update-cluster \
    --cluster-name my-cluster \
    --preferred-maintenance-window sun:23:00-mon:02:00
```

Windows의 경우:

```
aws memorydb update-cluster ^
    --cluster-name my-cluster ^
    --preferred-maintenance-window sun:23:00-mon:02:00
```

자세한 내용은 AWS CLI 명령 참조의 [update-cluster](https://docs.aws.amazon.com/cli/latest/reference/memorydb/update-cluster.html)를 참조하세요.

## MemoryDB API 사용
<a name="clusters.modify.api"></a>

MemoryDB API [UpdateCluster](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_UpdateCluster.html) 작업을 사용하여 기존의 클러스터를 수정할 수 있습니다. 클러스터의 구성 값을 수정하려면 클러스터 ID, 변경할 파라미터 및 파라미터의 새 값을 지정합니다. 다음 예제에서는 `my-cluster`라는 클러스터의 유지 관리 기간을 변경하고 변경 사항을 즉시 적용합니다.

```
https://memory-db.us-east-1.amazonaws.com/
    ?Action=UpdateCluster
    &ClusterName=my-cluster
    &PreferredMaintenanceWindow=sun:23:00-mon:02:00
    &SignatureVersion=4
    &SignatureMethod=HmacSHA256
    &Timestamp=20210801T220302Z
    &X-Amz-Algorithm=Amazon4-HMAC-SHA256
    &X-Amz-Date=20210802T220302Z
    &X-Amz-SignedHeaders=Host
    &X-Amz-Expires=20210801T220302Z
    &X-Amz-Credential=<credential>
    &X-Amz-Signature=<signature>
```

## Redis OSS에서 Valkey로의 엔진 간 업그레이드를 트리거하는 방법
<a name="clusters.modifyclusters.cross-engine"></a>

콘솔, API 또는 CLI를 사용하여 기존 Redis OSS 클러스터를 Valkey 엔진으로 업그레이드할 수 있습니다.

기본 파라미터 그룹을 사용하는 기존 Redis OSS 클러스터가 있는 경우 update-cluster API를 사용하여 새 엔진 및 엔진 버전을 지정하여 Valkey로 업그레이드할 수 있습니다.

Linux, macOS, Unix의 경우:

```
aws memorydb update-cluster \
   --cluster-name myCluster \
   --engine valkey \
   --engine-version 7.2
```

Windows의 경우:

```
aws memorydb update-cluster ^
   --cluster-name myCluster ^
   --engine valkey ^
   --engine-version 7.2
```

업그레이드하려는 기존 Redis OSS 클러스터에 사용자 지정 파라미터 그룹이 적용된 경우 요청에서 사용자 지정 Valkey 파라미터 그룹도 전달해야 합니다. 입력 Valkey 사용자 지정 파라미터 그룹은 기존 Redis OSS 사용자 지정 파라미터 그룹과 동일한 Redis OSS 정적 파라미터 값을 가져야 합니다.

Linux, macOS, Unix의 경우:

```
aws memorydb update-cluster \
   --cluster-name myCluster \
   --engine valkey \
   --engine-version 7.2 \
   --parameter-group-name myParamGroup
```

Windows의 경우:

```
aws memorydb update-cluster ^
   --cluster-name myCluster ^
   --engine valkey ^
   --engine-version 7.2 ^
   --parameter-group-name myParamGroup
```

# 클러스터에서 노드 추가/제거
<a name="clusters.deletenode"></a>

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

## 사용 AWS Management Console
<a name="clusters.deletenodeclusters.viewdetails"></a>

****

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

1. 클러스터 목록에서 노드를 추가하거나 제거할 클러스터 이름을 선택합니다.

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

1. **새로운 노드 수**에 원하는 노드의 수를 입력합니다.

1. **확인**을 선택합니다.
**중요**  
노드 수를 1로 설정하면 더 이상 다중 AZ를 사용할 수 없습니다. **자동 장애 조치**를 활성화하도록 선택할 수도 있습니다.

## 사용 AWS CLI
<a name="clusters.deletenode.cli"></a>

1. 제거할 노드의 이름을 확인합니다. 자세한 내용은 [클러스터 세부 정보 보기](clusters.viewdetails.md) 단원을 참조하십시오.

1. 다음 예제와 같이 제거할 노드 목록과 함께 `update-cluster` CLI 작업을 사용하세요.

   명령줄 인터페이스를 사용하여 클러스터에서 노드를 제거하려면 다음 파라미터와 함께 `update-cluster` 명령을 사용하세요.
   + `--cluster-name` 노드를 제거할 클러스터의 ID입니다.
   + `--replica-configuration` - 복제본 수를 설정할 수 있습니다.
     + `ReplicaCount` - 속성을 설정하여 원하는 복제본 노드의 수를 지정합니다.
   + `--region` 노드를 제거할 클러스터의 AWS 리전을 지정합니다.

   Linux, macOS, Unix의 경우:

   ```
   aws memorydb update-cluster \
       --cluster-name my-cluster \
       --replica-configuration \
           ReplicaCount=1 \
       --region us-east-1
   ```

   Windows의 경우:

   ```
   aws memorydb update-cluster ^
       --cluster-name my-cluster ^
       --replica-configuration ^
           ReplicaCount=1 ^
       --region us-east-1
   ```

자세한 내용은 AWS CLI 주제를 참조하세요[https://docs.aws.amazon.com/cli/latest/reference/memorydb/update-cluster.html](https://docs.aws.amazon.com/cli/latest/reference/memorydb/update-cluster.html).

## MemoryDB API 사용
<a name="clusters.deletenode.api"></a>

MemoryDB API를 사용하여 노드를 제거하려면 다음과 같이 클러스터 이름 및 제거할 노드 목록과 함께 `UpdateCluster` API 작업을 직접적으로 호출하세요.
+ `ClusterName` 노드를 제거할 클러스터의 ID입니다.
+ `ReplicaConfiguration` - 복제본 수를 설정할 수 있습니다.
  + `ReplicaCount` - 속성을 설정하여 원하는 복제본 노드의 수를 지정합니다.
+ `Region` 노드를 제거할 클러스터의 AWS 리전을 지정합니다.

자세한 내용은 [UpdateCluster](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_UpdateCluster.html)를 참조하세요.

# 클러스터 액세스
<a name="accessing-memorydb"></a>

MemoryDB 인스턴스는 Amazon EC2 인스턴스를 통해 액세스하도록 설계되었습니다.

동일한 Amazon VPC의 Amazon EC2 인스턴스에서 MemoryDB 노드에 액세스할 수 있습니다. 또는 VPC 피어링을 사용하여 다른 Amazon VPC의 Amazon EC2에서 MemoryDB 노드에 액세스할 수 있습니다.

**Topics**
+ [클러스터에 액세스 권한 부여](#grant-access)
+ [AWS 외부에서 MemoryDB 리소스에 액세스](#access-from-outside-aws)

## 클러스터에 액세스 권한 부여
<a name="grant-access"></a>

동일한 Amazon VPC에서 실행 중인 Amazon EC2 인스턴스에서만 MemoryDB 클러스터에 연결할 수 있습니다. 이 경우 클러스터에 네트워크 진입을 허용해야 합니다.

**Amazon VPC 보안 그룹에서 클러스터로의 네트워크 진입을 허용하려면**

1. AWS Management Console에 로그인하고 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 왼쪽 탐색 창의 **Network & Security** 아래에서 **Security Groups**를 선택합니다.

1. 보안 그룹 목록에서 Amazon VPC를 위한 보안 그룹을 선택합니다. MemoryDB 사용을 위한 보안 그룹을 생성하지 않는 한 이 보안 그룹의 이름은 *default*로 지정됩니다.

1. [**Inbound**] 탭을 선택하고 다음을 수행합니다.

   1. **편집**을 선택합니다.

   1. **규칙 추가**를 선택합니다.

   1. [**Type**] 열에서 [**Custom TCP rule**]을 선택합니다.

   1. [**Port range**] 상자에 클러스터 노드의 포트 번호를 입력합니다. 이 번호는 클러스터를 시작할 때 지정한 번호와 동일해야 합니다. Valkey와 Redis OSS의 기본 포트는 **6379**입니다.

   1. **소스** 상자에서 포트 범위(0.0.0.0/0)를 가진 **위치 무관**을 선택하면 Amazon VPC 내에서 시작한 Amazon EC2 인스턴스를 MemoryDB 노드에 연결할 수 있습니다.
**중요**  
MemoryDB 클러스터를 0.0.0.0/0으로 열면 공용 IP 주소가 없기 때문에 클러스터가 인터넷에 노출되지 않으므로 VPC 외부에서 액세스할 수 없습니다. 그러나 기본 보안 그룹이 고객 계정의 다른 Amazon EC2 인스턴스에 적용될 수 있으며 이러한 인스턴스는 공용 IP 주소를 가질 수 있습니다. 기본 포트에서 무언가를 실행하면 비의도적으로 해당 서비스가 노출될 수 있습니다. 따라서 MemoryDB가 독점적으로 사용하는 VPC 보안 그룹을 생성하는 것이 좋습니다. 자세한 정보는 [사용자 지정 보안 그룹](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html#creating-your-own-security-groups)을 참조하세요.

   1. **저장**을 선택합니다.

Amazon EC2 인스턴스를 Amazon VPC로 시작하면 해당 인스턴스를 MemoryDB 클러스터에 연결할 수 있습니다.

## AWS 외부에서 MemoryDB 리소스에 액세스
<a name="access-from-outside-aws"></a>

MemoryDB는 VPC에 내부적으로 사용하도록 설계된 서비스입니다. 인터넷 트래픽의 지연 시간 및 보안 문제로 인해 외부 액세스는 권장되지 않습니다. 그러나 테스트 또는 개발 목적으로 MemoryDB에 대한 외부 액세스가 필요한 경우, VPN을 통해 수행할 수 있습니다.

AWS Client VPN을 사용하면 다음과 같은 이점과 함께 MemoryDB 노드에 대한 외부 액세스를 허용합니다.
+ 승인된 사용자 또는 인증 키에 대한 제한된 액세스
+ VPN 클라이언트와 AWS VPN 엔드포인트 간의 암호화된 트래픽
+ 특정 서브넷 또는 노드에 대한 제한된 액세스
+ 사용자 또는 인증 키로부터의 액세스를 쉽게 취소
+ 감사 연결

다음 절차에서는 다음 작업을 수행하는 방법을 보여줍니다.

**Topics**
+ [인증 기관 생성](#create-cert)
+ [AWS Client VPN 구성 요소 구성](#configure-vpn-components)
+ [VPN 클라이언트 구성](#configure-vpn-client)

### 인증 기관 생성
<a name="create-cert"></a>

다양한 기술이나 도구를 사용하여 CA(인증 기관)를 생성할 수 있습니다. [OpenVPN](https://openvpn.net/community-resources/openvpn-project/) 프로젝트에서 제공하는 easy-rsa 유틸리티를 사용하는 것이 좋습니다. 선택한 옵션에 관계없이 키를 안전하게 유지해야 합니다. 다음 절차에서는 easy-rsa 스크립트를 다운로드하고 인증 기관과 첫 번째 VPN 클라이언트를 인증하는 키를 생성합니다.
+ 초기 인증서를 생성하려면 터미널을 열고 다음 작업을 수행하세요.
  + `git clone` [https://github.com/OpenVPN/easy-rsa](https://github.com/OpenVPN/easy-rsa)
  + `cd easy-rsa`
  + `./easyrsa3/easyrsa init-pki`
  + `./easyrsa3/easyrsa build-ca nopass`
  + `./easyrsa3/easyrsa build-server-full server nopass`
  + `./easyrsa3/easyrsa build-client-full client1.domain.tld nopass`

  인증서를 포함하는 **pki** 하위 디렉터리는 **easy-rsa** 아래에 생성됩니다.
+ 다음과 같이 AWS Certificate Manager(ACM)에 서버 인증서를 제출합니다.
  + ACM 콘솔에서 **Certificate Manager**를 선택합니다.
  + **인증서 가져오기**를 선택합니다.
  + `easy-rsa/pki/issued/server.crt` 파일에서 사용할 수 있는 퍼블릭 키 인증서를 **인증서 본문** 필드에 입력합니다.
  + `easy-rsa/pki/private/server.key`에서 사용할 수 있는 프라이빗 키를 **인증서 프라이빗 키** 필드에 붙여 넣습니다. `BEGIN AND END PRIVATE KEY` 사이의 모든 선(`BEGIN` 및 `END` 선 포함)을 선택해야 합니다.
  + `easy-rsa/pki/ca.crt` 파일에서 사용할 수 있는 CA 퍼블릭 키를 **인증서 체인** 필드에 붙여넣습니다.
  + **검토 및 가져오기**를 선택합니다.
  + **가져오기**를 선택합니다.

  AWS CLI를 사용하여 서버의 인증서를 ACM에 제출하려면 다음 명령을 실행하세요. `aws acm import-certificate --certificate fileb://easy-rsa/pki/issued/server.crt --private-key file://easy-rsa/pki/private/server.key --certificate-chain file://easy-rsa/pki/ca.crt --region region` 

  나중에 사용할 수 있도록 인증서 ARN을 기록해 둡니다.

### AWS Client VPN 구성 요소 구성
<a name="configure-vpn-components"></a>

**AWS 콘솔 사용**

AWS 콘솔에서 **서비스**, **VPC** 순으로 선택합니다.

**Virtual Private Network(가상 프라이빗 네트워크)**에서 **Client VPN Endpoints(클라이언트 VPN 엔드포인트)**를 선택하고 다음을 수행합니다.

**AWS Client VPN 구성 요소 구성**
+ **Client VPN 엔드포인트 생성**을 선택합니다.
+ 다음과 같은 옵션을 지정할 수 있습니다.
  + **Client IPv4 CIDR(클라이언트 IPv4 CIDR)**: 넷마스크가 최소 /22 범위에 있는 프라이빗 네트워크를 사용합니다. 선택한 서브넷이 VPC 네트워크의 주소와 충돌하지 않는지 확인합니다. 예: 10.0.0.0/22.
  + **Server certificate ARN(서버 인증서 ARN)**에서 앞서 가져온 인증서의 ARN을 선택합니다.
  + **Use mutual authentication(상호 인증 사용)**을 선택합니다.
  + **Client certificate ARN(클라이언트 인증서 ARN)**에서 앞서 가져온 인증서의 ARN을 선택합니다.
  + **Client VPN 엔드포인트 생성**을 선택합니다.

** 사용AWS CLI**

다음 명령을 실행합니다.

`aws ec2 create-client-vpn-endpoint --client-cidr-block "10.0.0.0/22" --server-certificate-arn arn:aws:acm:us-east-1:012345678912:certificate/0123abcd-ab12-01a0-123a-123456abcdef --authentication-options Type=certificate-authentication,,MutualAuthentication={ClientRootCertificateChainArn=arn:aws:acm:us-east-1:012345678912:certificate/123abcd-ab12-01a0-123a-123456abcdef} --connection-log-options Enabled=false `

출력 예시:

`"ClientVpnEndpointId": "cvpn-endpoint-0123456789abcdefg", "Status": { "Code": "pending-associate" }, "DnsName": "cvpn-endpoint-0123456789abcdefg.prod.clientvpn.us-east-1.amazonaws.com" } `

**대상 네트워크를 VPN 엔드포인트에 연결**
+ 새 VPN 엔드포인트를 선택한 다음 **연결** 탭을 선택합니다.
+ **연결**을 선택하고 다음 옵션을 지정합니다.
  + **VPC**: MemoryDB 클러스터의 VPC를 선택합니다.
  + MemoryDB 클러스터의 네트워크 중 하나를 선택합니다. 의심스러운 경우, MemoryDB 대시보드의 **서브넷 그룹**에 있는 네트워크를 검토하세요.
  + **연결**을 선택합니다. 필요한 경우 나머지 네트워크에 대해 이 단계를 반복합니다.

** 사용AWS CLI**

다음 명령을 실행합니다.

`aws ec2 associate-client-vpn-target-network --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdefg --subnet-id subnet-0123456789abdcdef`

출력 예시:

`"Status": { "Code": "associating" }, "AssociationId": "cvpn-assoc-0123456789abdcdef" } `

**VPN 보안 그룹 검토**

VPN 엔드포인트는 VPC의 기본 보안 그룹을 자동으로 채택합니다. 인바운드 및 아웃바운드 규칙을 점검하고 보안 그룹이 VPN 네트워크(VPN 엔드포인트 설정에 정의됨)에서 서비스 포트의 MemoryDB 네트워크로의 트래픽을 허용하는지 확인합니다(기본적으로 Redis의 경우, 6379).

VPN 엔드포인트에 할당된 보안 그룹을 변경해야 하는 경우 다음과 같이 진행합니다.
+ 현재 보안 그룹을 선택합니다.
+ **Apply Security Group(보안 그룹 적용)**을 선택합니다.
+ 보안 그룹을 선택합니다.

** 사용AWS CLI**

다음 명령을 실행합니다.

`aws ec2 apply-security-groups-to-client-vpn-target-network --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdefga  --vpc-id vpc-0123456789abdcdef --security-group-ids sg-0123456789abdcdef`

출력 예시:

`"SecurityGroupIds": [ "sg-0123456789abdcdef" ] } `

**참고**  
MemoryDB 보안 그룹은 VPN 클라이언트에서 오는 트래픽을 허용해야 합니다. 클라이언트의 주소는 VPC 네트워크에 따라 VPN 엔드포인트 주소로 마스킹 처리됩니다. 따라서 MemoryDB 보안 그룹에서 인바운드 규칙을 생성할 때 VPC 네트워크(VPN 클라이언트 네트워크가 아님)를 고려하세요.

**대상 네트워크에 대한 VPN 액세스 승인**

**Authorization(권한 부여)** 탭에서 **Authorize Ingress(권한 부여 승인)**를 선택하고 다음과 같이 지정합니다.
+ 액세스를 활성화할 대상 네트워크: 0.0.0.0/0을 사용하여 모든 네트워크(인터넷 포함)에 대한 액세스를 허용하거나 MemoryDB 네트워크/호스트를 제한합니다.
+ **다음에 대한 액세스 권한 부여:**에서 **모든 사용자에게 액세스 허용**를 선택합니다.
+ **권한 부여 규칙 추가**를 선택합니다.

** 사용AWS CLI**

다음 명령을 실행합니다.

`aws ec2 authorize-client-vpn-ingress --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdefg --target-network-cidr 0.0.0.0/0 --authorize-all-groups`

출력 예시: 

`{ "Status": { "Code": "authorizing" } }`

**VPN 클라이언트에서 인터넷에 액세스하도록 허용**

VPN을 통해 인터넷을 검색해야 하는 경우 추가 경로를 만들어야 합니다. **라우팅 테이블** 탭을 선택한 다음 **라우팅 생성**를 선택합니다.
+ 라우팅 대상 주소: 0.0.0.0/0
+ **Target VPC Subnet ID(대상 VPC 서브넷 ID)**: 인터넷 액세스 권한이 있는 연결된 서브넷 중 하나를 선택합니다.
+ **Create Route(라우팅 생성)**를 선택합니다.

** 사용AWS CLI**

다음 명령을 실행합니다.

`aws ec2 create-client-vpn-route --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdefg --destination-cidr-block 0.0.0.0/0 --target-vpc-subnet-id subnet-0123456789abdcdef`

출력 예시:

`{ "Status": { "Code": "creating" } } `

### VPN 클라이언트 구성
<a name="configure-vpn-client"></a>

AWS Client VPN 대시보드에서 최근에 생성된 VPN 엔드포인트를 선택하고 **클라이언트 구성 다운로드**를 선택합니다. 구성 파일과 `easy-rsa/pki/issued/client1.domain.tld.crt` 및 `easy-rsa/pki/private/client1.domain.tld.key` 파일을 복사합니다. 구성 파일을 편집하고 다음 파라미터를 변경하거나 추가합니다.
+ cert: `client1.domain.tld.crt` 파일을 가리키는 파라미터 인증서가 있는 새 줄을 추가합니다. 파일의 전체 경로를 사용합니다. 예시: `cert /home/user/.cert/client1.domain.tld.crt`
+ cert: key: `client1.domain.tld.key` 파일을 가리키는 파라미터 키가 있는 새 줄을 추가합니다. 파일의 전체 경로를 사용합니다. 예시: `key /home/user/.cert/client1.domain.tld.key`

다음 명령을 사용하여 VPN 연결을 설정합니다. `sudo openvpn --config downloaded-client-config.ovpn` 

**액세스 취소**

특정 클라이언트 키의 액세스를 무효화해야 하는 경우 CA에서 키를 취소해야 합니다. 그런 다음 취소 목록을 AWS Client VPN에 제출합니다.

easy-rsa로 키 취소: 
+ `cd easy-rsa`
+ `./easyrsa3/easyrsa revoke client1.domain.tld`
+ 계속하려면 “예”를 입력하고 중단하려면 다른 값을 입력합니다.

  `Continue with revocation: `yes` ... * `./easyrsa3/easyrsa gen-crl`
+ 업데이트된 CRL이 생성되었습니다. CRL 파일: `/home/user/easy-rsa/pki/crl.pem` 

취소 목록을 AWS Client VPN으로 가져오기:
+ AWS Management Console에서 **서비스**, **VPC** 순으로 선택합니다.
+ **Client VPN Endpoints(클라이언트 VPN 엔드포인트)**를 선택합니다.
+ Client VPN 엔드포인트를 선택한 다음 **작업** -> **Import Client Certificate CRL(클라이언트 인증서 CRL 가져오기)**을 선택합니다.
+ `crl.pem` 파일의 내용을 붙여넣습니다.

** 사용AWS CLI**

다음 명령을 실행합니다.

`aws ec2 import-client-vpn-client-certificate-revocation-list --certificate-revocation-list file://./easy-rsa/pki/crl.pem --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdefg `

출력 예시:

`Example output: { "Return": true } `

# 연결 엔드포인트 찾기
<a name="endpoints"></a>

애플리케이션은 엔드포인트를 사용하여 클러스터에 연결합니다. 엔드포인트는 클러스터의 고유한 주소입니다. 모든 작업에 클러스터의 *클러스터 엔드포인트*를 사용합니다.

다음 섹션에서는 필요한 엔드포인트를 찾는 방법을 안내합니다.

## MemoryDB 클러스터의 엔드포인트 찾기(AWS Management Console)
<a name="endpoints.find.console"></a>

**MemoryDB 클러스터의 엔드포인트를 찾으려면**

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

1. 탐색 창에서 **클러스터**를 선택합니다.

   클러스터 목록이 포함된 클러스터 화면이 나타납니다. 연결하려는 클러스터를 선택합니다.

1. 클러스터의 엔드포인트를 찾으려면 클러스터 이름(라디오 버튼 아님)을 선택합니다.

1. **클러스터 엔드포인트**는 **클러스터 세부 정보** 아래 표시됩니다. 이를 복사하려면 엔드포인트 왼쪽에 있는 *복사* 아이콘을 선택합니다.

## MemoryDB 클러스터(CLI AWS)의 엔드포인트 찾기
<a name="endpoints.find.cli"></a>

`describe-clusters` 명령을 사용하여 클러스터의 엔드포인트를 찾을 수 있습니다. 명령은 클러스터의 엔드포인트를 반환합니다.

다음 작업은 클러스터 `mycluster`의 엔드포인트(이 예에서는 *샘플*로 표시됨)를 검색합니다.

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

```
aws memorydb describe-clusters \
  --cluster-name mycluster
```

Windows의 경우:

```
aws memorydb describe-clusters ^
   --cluster-name mycluster
```

```
{
    "Clusters": [
        {
            "Name": "my-cluster",
            "Status": "available",
            "NumberOfShards": 1,
            "ClusterEndpoint": {
                "Address": "clustercfg.my-cluster.xxxxxx.memorydb.us-east-1.amazonaws.com",
                "Port": 6379
            },
            "NodeType": "db.r6g.large",
            "EngineVersion": "6.2",
            "EnginePatchVersion": "6.2.4",
            "ParameterGroupName": "default.memorydb-redis6",
            "ParameterGroupStatus": "in-sync",
            "SubnetGroupName": "my-sg",
            "TLSEnabled": true,
            "ARN": "arn:aws:memorydb:us-east-1:zzzexamplearn:cluster/my-cluster",
            "SnapshotRetentionLimit": 0,
            "MaintenanceWindow": "wed:03:00-wed:04:00",
            "SnapshotWindow": "04:30-05:30",
            "ACLName": "my-acl",
            "AutoMinorVersionUpgrade": true
        }
    ]
}
```

자세한 내용은 [describe-clusters](https://docs.aws.amazon.com/cli/latest/reference/memorydb/describe-clusters.html) 섹션을 참조하세요.

## MemoryDB 클러스터의 엔드포인트 찾기(MemoryDB API)
<a name="endpoints.find.api"></a>

MemoryDB API를 사용하여 클러스터의 엔드포인트를 찾을 수 있습니다.

### MemoryDB 클러스터의 엔드포인트 찾기(MemoryDB API)
<a name="endpoints.find.api.clusters"></a>

MemoryDB API를 사용하여 `DescribeClusters` 작업으로 클러스터의 엔드포인트를 찾을 수 있습니다. 작업은 클러스터의 엔드포인트를 반환합니다.

다음 작업은 클러스터 `mycluster`의 클러스터 엔드포인트를 검색합니다.

```
https://memory-db.us-east-1.amazonaws.com/
    ?Action=DescribeClusters
    &ClusterName=mycluster
    &SignatureVersion=4
    &SignatureMethod=HmacSHA256
    &Timestamp=20210802T192317Z
    &Version=2021-01-01
    &X-Amz-Credential=<credential>
```

자세한 정보는 [DescribeClusters](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_DescribeClusters.html)를 참조하세요.

# 샤드 작업
<a name="shards"></a>

샤드는 1\$16개의 노드로 구성된 모음입니다. 하나의 클러스터당 최대 500개의 노드로 구성된 더 많은 수의 샤드와 더 적은 수의 복제본을 가진 클러스터를 생성할 수 있습니다. 이 클러스터 구성은 500개의 샤드 및 0개의 복제본부터 100개의 샤드 및 4개의 복제본까지 해당될 수 있으며, 이는 허용되는 최대 복제본 수입니다. 클러스터의 데이터는 클러스터의 샤드로 분할됩니다. 샤드에 둘 이상의 노드가 있는 경우 샤드는 한 노드가 읽기/쓰기 기본 노드가 되고 다른 노드가 읽기 전용 복제본 노드인 복제를 구현합니다.

AWS Management Console을(를) 사용하여 MemoryDB 클러스터를 생성할 때 클러스터의 샤드 수와 샤드의 노드 수를 지정합니다. 자세한 내용은 [MemoryDB 클러스터 생성](getting-started.md#clusters.create) 섹션을 참조하세요.

샤드의 각 노드는 컴퓨팅, 스토리지 및 메모리 사양이 동일합니다. MemoryDB API는 노드 수, 보안 설정 및 시스템 유지 관리 기간과 같은 클러스터 전체의 속성을 제어할 수 있도록 합니다.

자세한 내용은 [MemoryDB의 오프라인 리샤딩](cluster-resharding-offline.md) 및 [MemoryDB의 온라인 리샤딩](cluster-resharding-online.md)(을)를 참조하세요.

## 샤드 이름 찾기
<a name="shard-find-id"></a>

AWS Management Console, AWS CLI 또는 MemoryDB API를 사용하여 샤드 이름을 검색할 수 있습니다.

### AWS Management Console 사용
<a name="shard-find-id-con"></a>

다음 절차는 AWS Management Console을 사용하여 MemoryDB 클러스터의 샤드 이름을 찾습니다.

****

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

1. 좌측 탐색 창에서 **클러스터(Clusters)**를 선택합니다.

1. **이름**에서 샤드 이름을 찾으려는 클러스터를 선택합니다.

1. **샤드 및 노드** 탭의 **이름** 아래에서 샤드 목록을 확인합니다. 각 노드를 확장하여 해당 노드의 세부 정보를 볼 수도 있습니다.

### AWS CLI 사용
<a name="shard-find-id-cli"></a>

MemoryDB 클러스터의 샤드(샤드) 이름을 찾으려면 다음 선택적 파라미터와 함께 AWS CLI 작업 `describe-clusters`를 사용하세요.
+ **`--cluster-name`** - 사용되면 지정된 클러스터의 세부 정보 출력을 제한하는 선택적 파라미터입니다. 이 파라미터가 생략되면 최대 100개의 클러스터의 세부 정보가 반환됩니다.
+ **`--show-shard-details`** - 샤드 이름을 포함한 샤드의 세부 정보를 반환합니다.

이 명령은 `my-cluster`의 세부 정보를 반환합니다.

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": 1,
            "Shards": [
                {
                    "Name": "0001",
                    "Status": "available",
                    "Slots": "0-16383",
                    "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.xxxxx.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.xxxxx.memorydb.us-east-1.amazonaws.com",
                                "Port": 6379
                            }
                        }
                    ],
                    "NumberOfNodes": 2
                }
            ],
            "ClusterEndpoint": {
                "Address": "clustercfg.my-cluster.xxxxx.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:xxxxxexamplearn:cluster/my-cluster",
            "SnapshotRetentionLimit": 0,
            "MaintenanceWindow": "wed:03:00-wed:04:00",
            "SnapshotWindow": "04:30-05:30",
            "ACLName": "my-acl",
            "DataTiering": "false",
            "AutoMinorVersionUpgrade": true
        }
    ]
}
```

### MemoryDB API 사용
<a name="shard-find-id-api"></a>

MemoryDB 클러스터의 샤드 ID를 찾으려면 다음 선택적 파라미터와 함께 API 작업 `DescribeClusters`을(를) 사용합니다.
+ **`ClusterName`** - 사용되면 지정된 클러스터의 세부 정보 출력을 제한하는 선택적 파라미터입니다. 이 파라미터가 생략되면 최대 100개의 클러스터의 세부 정보가 반환됩니다.
+ **`ShowShardDetails`** - 샤드 이름을 포함한 샤드의 세부 정보를 반환합니다.

**Example**  
이 명령은 `my-cluster`의 세부 정보를 반환합니다.  
Linux, macOS, Unix의 경우:  

```
https://memory-db.us-east-1.amazonaws.com/
   ?Action=DescribeClusters
   &ClusterName=sample-cluster
   &ShowShardDetails=true
   &Version=2021-01-01
   &SignatureVersion=4
   &SignatureMethod=HmacSHA256
   &Timestamp=20210802T192317Z
   &X-Amz-Credential=<credential>
```