이 페이지에서는 확장 중에 Memorystore for Redis 클러스터 인스턴스가 어떻게 작동하는지 설명합니다.
다음과 같은 방법으로 인스턴스의 용량을 확장할 수 있습니다.
- 인스턴스의 샤드 수를 변경할 수 있습니다. 이를 수평 확장이라고 합니다. 다음 방법 중 하나로 인스턴스를 수평으로 확장할 수 있습니다. - 수평 확장: 인스턴스의 용량을 늘려 인스턴스에 더 많은 메모리와 처리 능력을 제공하여 더 많은 데이터 또는 트래픽을 처리합니다. 인스턴스의 용량은 인스턴스의 샤드 수에 따라 결정됩니다. - 인스턴스를 확장하면 애플리케이션이 성능 저하 없이 증가한 수요를 처리할 수 있습니다. 인스턴스를 수평 확장하려면 인스턴스에 샤드를 추가합니다. 
- 스케일 인: 인스턴스의 용량을 줄여 처리 능력과 데이터를 저장하는 데 사용할 수 있는 메모리 양을 모두 줄입니다. 이는 애플리케이션의 데이터 요구사항이 감소하고 비용을 절감하기 위해 리소스 사용량을 줄여야 하는 경우에 발생합니다. 인스턴스를 축소하려면 인스턴스의 샤드 수를 줄입니다. 
 
- 인스턴스의 노드 유형을 변경할 수 있습니다. 이를 수직 확장이라고 합니다. 다음 방법 중 하나로 인스턴스를 수직으로 확장할 수 있습니다. - 스케일 업: 인스턴스의 용량을 늘립니다. 인스턴스의 용량은 인스턴스의 노드 유형에 따라 결정됩니다. 인스턴스를 확장하려면 노드 유형을 더 큰 노드 유형으로 변경합니다. 예를 들어 redis-standard-small노드 유형에서redis-highmem-medium노드 유형으로 인스턴스를 확장합니다.
- 축소: 인스턴스의 용량을 줄입니다. 인스턴스를 축소하려면 노드 유형을 더 작은 노드 유형으로 변경합니다. 예를 들어 인스턴스를 - redis-highmem-medium노드 유형에서- redis-standard-small노드 유형으로 축소합니다.
 
- 스케일 업: 인스턴스의 용량을 늘립니다. 인스턴스의 용량은 인스턴스의 노드 유형에 따라 결정됩니다. 인스턴스를 확장하려면 노드 유형을 더 큰 노드 유형으로 변경합니다. 예를 들어 
확장 영향
확장 작업 중에는 인스턴스의 가용성이 영향을 받지 않습니다. 하지만 인스턴스의 샤드 수를 변경하면 Memorystore for Redis Cluster가 인스턴스의 키 공간을 리밸런싱합니다. 이 경우 확장 작업 중에 지연 시간이 늘어날 수 있습니다.
또한 노드 유형을 변경하여 인스턴스를 수직으로 확장하는 것은 유지보수 작업과 유사한 영향을 미칩니다.
오류 시나리오
확장 작업 중에 오류가 발생하면 다음 시나리오 중 하나가 원인일 수 있습니다.
- 인스턴스의 샤드 수를 업데이트하려고 하지만 인스턴스의 - redis-shared-core-nano노드 유형에 사용할 수 있는 메모리가 충분하지 않습니다.- 이 문제를 해결하려면 인스턴스를 확장하거나 인스턴스의 노드에서 메모리를 확보하면 됩니다. 메모리를 확보하려면 다음 단계를 따르세요. - Memorystore for Redis Cluster 인스턴스에 연결
- IP 주소와 포트 번호를 비롯한 인스턴스에 관한 세부정보를 가져오려면 gcloud redis clusters describe명령어를 사용합니다.
- 인스턴스의 IP 주소와 포트 번호를 기록해 둡니다.
- 인스턴스의 노드에 관한 정보를 가져오려면 다음 명령어를 사용합니다. - redis-cli -h IP_ADDRESS -p PORT_NUMBER cluster nodes - IP_ADDRESS 및 PORT_NUMBER을 이전 단계에서 기록한 값으로 바꿉니다. 
- 여유 공간이 충분하지 않은 노드의 IP 주소와 포트 번호를 기록해 둡니다. 이 노드의 ID가 오류에 표시되는 ID와 일치합니다. 
- 이 노드에 연결하려면 다음 명령어를 사용합니다. - redis-cli -h IP_ADDRESS -p PORT_NUMBER - IP_ADDRESS 및 PORT_NUMBER을 이전 단계에서 기록한 값으로 바꿉니다. 
- 프롬프트에서 - info memory명령어를 입력합니다.- 출력에 - used_memory및- maxmemory매개변수의 값이 표시됩니다.- used_memory는 노드에서 사용하는 메모리 양이고- maxmemory는 노드에서 사용할 수 있는 메모리 양입니다.
- used_memory매개변수의 값을- maxmemory매개변수의 값으로 나누고 몫이 98%보다 큰지 확인합니다.
- 노드의 공간을 확보하려면 노드의 키를 일부 삭제하세요. 
- info memory명령어를 다시 입력합니다. 출력에서- used_memory매개변수의 값이 더 작습니다.
- used_memory매개변수의 값을- maxmemory매개변수의 값으로 나누고 몫이 이제 98% 미만인지 확인합니다. 그렇지 않으면 키를 더 삭제합니다.
- 여유 공간이 충분하지 않은 다른 노드의 경우 이 절차의 4~11단계를 반복합니다. 
 
- Memorystore for Redis Cluster가 원래 인스턴스에 저장하는 모든 키를 저장할 용량이 없는 더 작은 샤드 수로 확장했습니다. 이 문제를 해결하려면 저장된 모든 키를 보유할 수 있는 더 큰 샤드 수로 확장하세요. 인스턴스의 샤드 수를 늘리는 방법에 대한 자세한 내용은 샤드 수 확장을 참고하세요. 
- Memorystore for Redis 클러스터가 원래 노드 유형에 저장하는 모든 데이터를 저장할 수 없는 더 작은 노드 유형으로 확장했습니다. 이 경우 Memorystore for Redis Cluster는 수직으로 축소할 수 있는 권장 노드 유형을 제공합니다. 
- 인스턴스의 노드 유형을 업데이트했으며 원래 노드 유형의 기본 설정을 덮어쓰거나 이러한 설정이 이미 덮어쓰여졌습니다. 하지만 새로운 확장 노드 유형은 기본 설정의 값을 지원하지 않거나 설정이 노드 유형에 유효하지 않습니다. 이 경우 Redis용 Memorystore 클러스터에서 오류를 반환합니다. 이 문제를 해결하려면 새 노드 유형에 유효하도록 설정을 수동으로 수정하세요. 
- 쓰기 압력이 높은 기간 (예: 로드 테스트 중)에 인스턴스를 확장했습니다. 이 문제를 해결하려면 인스턴스 트래픽이 적은 기간에 확장하세요. 
- 큰 키가 포함된 슬롯이 있고 이 키를 다른 노드로 이전하려고 합니다. 하지만 이 노드에는 키를 지원할 메모리가 충분하지 않습니다. 클러스터를 업데이트할 수 없습니다. 이 문제를 해결하려면 키의 크기를 128MB 미만으로 줄이세요. 그런 다음 업데이트 작업을 다시 시도합니다. 
- 클러스터의 노드가 소유한 슬롯 번호는 알 수 없고 슬롯 범위만 알 수 있습니다. Memorystore for Redis 클러스터에서 오류 메시지를 반환합니다. 이 경우 키의 크기를 줄이고 업데이트 작업을 다시 시도하세요. 
- 더 작은 샤드 수로 스케일 아웃하여 클러스터의 용량을 늘렸습니다. 하지만 Memorystore for Redis Cluster에는 이 요청을 수용할 메모리가 충분하지 않습니다. 이 문제를 해결하려면 원래의 더 큰 샤드 수로 확장하여 클러스터의 용량을 줄이세요. 
권장사항
인스턴스의 용량을 확장하고 인스턴스 확장 속도와 안정성을 높이려면 가능할 때마다 트래픽이 적은 기간에 인스턴스를 확장하세요. 인스턴스 트래픽을 모니터링하는 방법은 클러스터 모니터링을 참고하세요.