이 페이지에서는 확장 중에 Memorystore for Valkey 인스턴스가 어떻게 작동하는지 설명합니다.
다음과 같은 방법으로 인스턴스 용량을 확장할 수 있습니다.
인스턴스의 샤드 수를 변경할 수 있습니다. 이것이 수평 확장입니다. 다음 방법 중 하나로 인스턴스를 수평 확장할 수 있습니다.
수평 확장: 인스턴스 용량을 늘려 인스턴스에 더 많은 메모리와 처리 성능을 제공하여 더 많은 데이터 또는 트래픽을 처리합니다. 인스턴스 용량은 인스턴스의 샤드 수에 따라 결정됩니다.
인스턴스를 수평 확장하면 애플리케이션이 성능 저하 없이 증가된 수요를 처리할 수 있습니다. 인스턴스를 수평 확장하려면 인스턴스에 샤드를 추가합니다.
수평 축소: 인스턴스의 용량을 줄여 처리 능력과 데이터를 저장하는 데 사용할 수 있는 메모리 양을 모두 줄입니다. 이는 애플리케이션의 데이터 수요가 감소하고 비용을 절감하기 위해 리소스 사용량을 줄여야 할 때 발생합니다. 인스턴스를 축소하려면 인스턴스의 샤드 수를 줄입니다.
인스턴스의 노드 유형을 변경할 수 있습니다. 이것이 수직 확장입니다. 다음 방법 중 하나로 인스턴스를 수직 확장할 수 있습니다.
- 수직 확장: 인스턴스의 용량을 늘립니다. 인스턴스 용량은 인스턴스의 노드 유형에 따라 결정됩니다. 인스턴스를 수직 확장하려면 노드 유형을 더 큰 노드 유형으로 변경합니다. 예를 들어 인스턴스를
standard-small노드 유형에서highmem-medium노드 유형으로 확장합니다. 축소: 인스턴스 용량을 줄입니다. 인스턴스를 축소하려면 노드 유형을 더 작은 노드 유형으로 변경합니다. 예를 들어 인스턴스를
highmem-medium노드 유형에서standard-small노드 유형으로 축소합니다.
- 수직 확장: 인스턴스의 용량을 늘립니다. 인스턴스 용량은 인스턴스의 노드 유형에 따라 결정됩니다. 인스턴스를 수직 확장하려면 노드 유형을 더 큰 노드 유형으로 변경합니다. 예를 들어 인스턴스를
확장 영향
확장 작업 중에는 인스턴스의 가용성이 영향을 받지 않습니다. 하지만 인스턴스의 샤드 수를 변경하면 Memorystore for Valkey가 인스턴스의 키스페이스를 다시 분산합니다. 이 경우 확장 작업 중에 지연 시간이 늘어날 수 있습니다.
또한 노드 유형을 변경하여 인스턴스를 수직으로 확장하는 경우의 영향은 유지보수 작업에서 발생하는 영향과 비슷합니다.
오류 시나리오
확장 작업 중에 오류가 발생하면 다음 시나리오 중 하나가 원인일 수 있습니다.
인스턴스의 샤드 수를 업데이트하려고 하지만 인스턴스의
shared-core-nano노드 유형에 사용 가능한 메모리가 충분하지 않습니다.이 문제를 해결하려면 인스턴스를 수직 확장하거나 인스턴스 노드에서 메모리를 확보하면 됩니다. 메모리를 확보하려면 다음 단계를 따르세요.
- Memorystore for Valkey 인스턴스에 연결합니다.
- IP 주소 및 포트 번호를 포함하여 인스턴스에 대한 세부정보를 가져오려면
gcloud memorystore instances describe명령어를 사용합니다. - 인스턴스의 IP 주소와 포트 번호를 기록해 둡니다.
인스턴스의 노드에 대한 정보를 가져오려면 다음 명령어를 사용합니다.
valkey-cli -h IP_ADDRESS -p PORT_NUMBER cluster nodes
IP_ADDRESS 및 PORT_NUMBER를 이전 단계에서 기록한 값으로 바꿉니다.
여유 공간이 부족한 노드의 IP 주소와 포트 번호를 기록해 둡니다. 이 노드의 ID는 오류에 표시되는 ID와 일치합니다.
이 노드에 연결하려면 다음 명령어를 사용하세요.
valkey-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 Valkey가 원래 인스턴스에 저장하는 모든 키를 저장할 용량이 없는 작은 샤드 수로 확장했습니다. 이 문제를 해결하려면 저장된 모든 키를 저장할 수 있는 더 큰 샤드 수로 확장합니다. 인스턴스의 샤드 수를 늘리는 방법에 대한 자세한 내용은 샤드 수 확장을 참조하세요.
Memorystore for Valkey가 원래 노드 유형에 저장하는 모든 데이터를 저장할 용량이 없는 작은 노드 유형으로 확장했습니다. 이 경우 Memorystore for Valkey는 수직 축소할 수 있는 권장 노드 유형을 제공합니다.
인스턴스의 노드 유형을 업데이트하고 원래 노드 유형의 기본 설정을 덮어쓰거나 이러한 설정이 이미 덮어쓰기되었습니다. 하지만 확장된 새 노드 유형은 기본 설정 값을 지원하지 않거나 설정이 노드 유형에 유효하지 않습니다. 이 경우 Memorystore for Valkey에서 오류를 반환합니다. 이 문제를 해결하려면 새 노드 유형에 유효하도록 설정을 수동으로 수정합니다.
쓰기 압력이 높은 기간 (예: 부하 테스트 중)에 인스턴스를 확장했습니다. 이 문제를 해결하려면 인스턴스 트래픽이 적은 기간에 확장합니다.
큰 키가 포함된 슬롯이 있으며 이 키를 다른 노드로 마이그레이션하려고 합니다. 하지만 이 노드에는 키를 지원할 메모리가 충분하지 않습니다. 인스턴스를 업데이트할 수 없습니다. 이 문제를 해결하려면 키 크기를 128MB 미만으로 줄이세요. 그런 다음 업데이트 작업을 다시 시도합니다.
인스턴스 노드가 소유한 슬롯 번호는 알 수 없지만 슬롯 범위만 알 수 있습니다. Memorystore for Valkey에서 오류 메시지를 반환합니다. 이 경우 키 크기를 줄이고 업데이트 작업을 다시 시도합니다.
더 작은 샤드 수로 수평 확장하여 인스턴스 용량을 늘렸습니다. 하지만 Memorystore for Valkey에 이 요청을 수용할 메모리가 부족합니다. 이 문제를 해결하려면 원래의 더 큰 샤드 수로 축소하여 인스턴스 용량을 줄입니다.
권장사항
인스턴스 용량을 확장하려면 다음 권장사항을 따르는 것이 좋습니다.
- 확장 시점 선택: 인스턴스 확장 속도와 안정성을 높이려면 트래픽이 적은 기간에 확장합니다. 인스턴스 트래픽을 모니터링하는 방법은 인스턴스 모니터링을 참조하세요.
- 확장할 수 없는 경우 다시 시도: 리소스 가용성은 자주 변경됩니다. 일시적인 리소스 제약으로 인해 인스턴스를 확장할 수 없는 경우 나중에 인스턴스를 확장해 보세요.