클러스터 용량 확장 정보

이 페이지에서는 Memorystore for Redis Cluster 클러스터가 확장 중에 어떻게 작동하는지 설명합니다.

다음과 같은 방법으로 클러스터의 용량을 확장할 수 있습니다.

  • 클러스터의 샤드 수를 변경할 수 있습니다. 이를 수평 확장이라고 합니다. 다음 방법 중 하나로 클러스터를 수평으로 확장할 수 있습니다.

    • 스케일 아웃: 클러스터의 용량을 늘려 클러스터가 더 많은 메모리와 처리 능력을 갖춰 더 많은 데이터 또는 트래픽을 처리할 수 있도록 합니다. 클러스터의 용량은 클러스터의 샤드 수에 따라 결정됩니다.

      클러스터를 수평 확장하면 애플리케이션이 성능 저하 없이 증가한 수요를 처리할 수 있습니다. 클러스터를 확장하려면 클러스터에 샤드를 추가합니다.

    • 스케일 인: 클러스터의 용량을 줄여 처리 능력과 데이터를 저장하는 데 사용할 수 있는 메모리 양을 모두 줄입니다. 이는 애플리케이션의 데이터 요구사항이 감소하고 비용을 절감하기 위해 리소스 사용량을 줄여야 하는 경우에 발생합니다. 클러스터를 축소하려면 클러스터의 샤드 수를 줄입니다.

  • 클러스터의 노드 유형을 변경할 수 있습니다. 이를 수직 확장이라고 합니다. 다음 방법 중 하나로 클러스터를 수직으로 확장할 수 있습니다.

    • 스케일 업: 클러스터의 용량을 늘립니다. 클러스터의 용량은 클러스터의 노드 유형에 따라 결정됩니다. 클러스터를 확장하려면 노드 유형을 더 큰 노드 유형으로 변경합니다. 예를 들어 클러스터를 redis-standard-small 노드 유형에서 redis-highmem-medium 노드 유형으로 확장합니다.
    • 축소: 클러스터의 용량을 줄입니다. 클러스터를 축소하려면 노드 유형을 더 작은 노드 유형으로 변경합니다. 예를 들어 클러스터를 redis-highmem-medium 노드 유형에서 redis-standard-small 노드 유형으로 축소합니다.

확장 영향

확장 작업 중에는 클러스터의 가용성이 영향을 받지 않습니다. 하지만 클러스터의 샤드 수를 변경하면 Memorystore for Redis Cluster가 클러스터의 키 공간을 리밸런싱합니다. 이 경우 확장 작업 중에 지연 시간이 늘어날 수 있습니다.

또한 노드 유형을 변경하여 클러스터를 수직으로 확장하는 효과는 유지보수 작업과 유사합니다.

오류 시나리오

확장 작업 중에 오류가 발생하면 다음 시나리오 중 하나가 원인일 수 있습니다.

  • 클러스터의 샤드 수를 업데이트하고 싶지만 클러스터의 redis-shared-core-nano 노드 유형에 사용할 수 있는 여유 메모리가 충분하지 않습니다.

    이 문제를 해결하려면 클러스터를 확장하거나 클러스터의 노드에서 메모리를 확보하면 됩니다. 메모리를 확보하려면 다음 단계를 따르세요.

    1. 클러스터에 연결합니다.
    2. IP 주소 및 포트 번호를 비롯한 클러스터에 관한 세부정보를 가져오려면 gcloud redis clusters describe 명령어를 사용합니다.
    3. 클러스터의 IP 주소와 포트 번호를 기록해 둡니다.
    4. 클러스터의 노드에 관한 정보를 가져오려면 다음 명령어를 사용합니다.

      redis-cli -h IP_ADDRESS -p PORT_NUMBER cluster nodes
      

      IP_ADDRESS 및 PORT_NUMBER를 이전 단계에서 기록한 값으로 바꿉니다.

    5. 여유 공간이 충분하지 않은 노드의 IP 주소와 포트 번호를 기록해 둡니다. 이 노드의 ID는 오류에 표시되는 ID와 일치합니다.

    6. 이 노드에 연결하려면 다음 명령어를 사용합니다.

      redis-cli -h IP_ADDRESS -p PORT_NUMBER
      

      IP_ADDRESS 및 PORT_NUMBER를 이전 단계에서 기록한 값으로 바꿉니다.

    7. 프롬프트에서 info memory 명령어를 입력합니다.

      출력에 used_memory 및 maxmemory 매개변수의 값이 표시됩니다. used_memory는 노드에서 사용하는 메모리 양이고 maxmemory는 노드에서 사용할 수 있는 메모리 양입니다.

    8. used_memory 매개변수의 값을 maxmemory 매개변수의 값으로 나누고 몫이 98%보다 큰지 확인합니다.

    9. 노드의 공간을 확보하려면 노드의 키를 일부 삭제하세요.

    10. info memory 명령어를 다시 입력합니다. 출력에서 used_memory 매개변수의 값이 더 작습니다.

    11. used_memory 매개변수의 값을 maxmemory 매개변수의 값으로 나누고 몫이 98% 미만인지 확인합니다. 그렇지 않으면 키를 더 삭제합니다.

    12. 여유 공간이 충분하지 않은 다른 노드의 경우 이 절차의 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에 이 요청을 수용할 메모리가 충분하지 않습니다. 이 문제를 해결하려면 원래의 더 큰 샤드 수로 확장하여 클러스터의 용량을 줄이세요.

권장사항

클러스터의 용량을 확장하고 클러스터 확장 속도와 안정성을 높이려면 가능할 때마다 트래픽이 적은 기간에 클러스터를 확장하세요. 클러스터 트래픽을 모니터링하는 방법을 알아보려면 클러스터 모니터링을 참고하세요.