이 페이지에서는 확장 중에 Memorystore for Redis Cluster 인스턴스가 어떻게 작동하는지 설명합니다.
다음과 같은 방법으로 인스턴스의 용량을 확장할 수 있습니다.
인스턴스의 샤드 수를 변경할 수 있습니다. 이를 수평 확장 이라고 합니다. 다음 중 한 가지 방법으로 인스턴스를 수평 확장할 수 있습니다.
확장: 인스턴스의 용량을 늘려 인스턴스에 더 많은 메모리와 처리 능력을 제공하여 더 많은 양의 데이터 또는 트래픽을 처리합니다. 인스턴스의 용량은 인스턴스의 샤드 수에 따라 결정됩니다.
인스턴스를 확장하면 애플리케이션이 성능 저하 없이 증가하는 수요를 처리할 수 있습니다. 인스턴스를 확장하려면 인스턴스에 샤드를 추가합니다.
축소: 인스턴스의 용량을 줄여 처리 능력과 데이터를 저장하는 데 사용할 수 있는 메모리 양을 모두 줄입니다. 이는 애플리케이션의 데이터 요구사항이 감소하고 비용을 절감하기 위해 리소스 사용량을 줄여야 할 때 발생합니다. 인스턴스를 축소하려면 인스턴스의 샤드 수를 줄입니다.
인스턴스의 노드 유형을 변경할 수 있습니다. 이를 수직 확장 이라고 합니다. 다음 중 한 가지 방법으로 인스턴스를 수직 확장할 수 있습니다.
- 수직 확장: 인스턴스의 용량을 늘립니다. 인스턴스의 용량은 인스턴스의 노드 유형에 따라 결정됩니다. 인스턴스를 확장하려면 노드 유형을 더 큰 노드 유형으로 변경합니다. 예를 들어 인스턴스를
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 Cluster가 원래 노드 유형에 저장하는 모든 데이터를 보유할 수 없는 더 작은 노드 유형으로 확장했습니다. 이 경우 Memorystore for Redis Cluster는 수직으로 축소할 수 있는 권장 노드 유형을 제공합니다.
인스턴스의 노드 유형을 업데이트했으며 원래 노드 유형의 기본 설정을 덮어쓰거나 이미 덮어쓰였습니다. 하지만 새로 확장된 노드 유형은 기본 설정의 값을 지원하지 않거나 설정이 노드 유형에 유효하지 않습니다. 이 경우 Memorystore for Redis Cluster가 오류를 반환합니다. 이 문제를 해결하려면 새 노드 유형에 유효하도록 설정을 수동으로 수정합니다.
쓰기 압력이 높은 기간 (예: 로드 테스트 중)에 인스턴스를 확장했습니다. 이 문제를 해결하려면 인스턴스 트래픽이 적은 기간에 확장합니다.
큰 키가 포함된 슬롯이 있으며 이 키를 다른 노드로 이전하려고 합니다. 하지만 이 노드에는 키를 지원할 수 있는 메모리가 충분하지 않습니다. 클러스터를 업데이트할 수 없습니다. 이 문제를 해결하려면 키의 크기를 128MB 미만으로 줄입니다. 그런 다음 업데이트 작업을 다시 시도합니다.
클러스터의 노드가 소유한 슬롯 번호는 알 수 없지만 슬롯 범위만 알고 있습니다. Memorystore for Redis Cluster가 오류 메시지를 반환합니다. 이 경우 키의 크기를 줄이고 업데이트 작업을 다시 시도합니다.
더 작은 샤드 수로 확장하여 클러스터의 용량을 늘렸습니다. 하지만 Memorystore for Redis Cluster에는 이 요청을 수용할 수 있는 메모리가 충분하지 않습니다. 이 문제를 해결하려면 원래의 더 큰 샤드 수로 축소하여 클러스터의 용량을 줄입니다.
권장사항
인스턴스의 용량을 확장하고 인스턴스 확장의 속도와 안정성을 높이려면 트래픽이 적은 기간에 인스턴스를 확장하는 것이 좋습니다. 인스턴스 트래픽을 모니터링하는 방법은 클러스터 모니터링을 참조하세요.