온라인 클러스터 크기 조정 - 아마존 포 ElastiCache 레디스용

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

온라인 클러스터 크기 조정

리샤딩에는 클러스터에(서) 샤드 또는 노드를 추가 및 제거하고 샤드 간에 키 공간을 재분산하는 작업이 수반됩니다. 따라서 클러스터에 대한 로드, 메모리 사용률 및 데이터의 전체 크기 등과 같은 여러 가지 요인이 리샤딩 작업에 영향을 미칩니다. 최상의 성능을 구현하기 위해서는 균일한 워크로드 패턴 분산을 위한 전반적인 클러스터 모범 사례를 따르는 것이 좋습니다. 또한 다음 단계를 수행하는 것이 좋습니다.

리샤딩을 시작하기 전에 다음 작업을 수행하는 것이 좋습니다.

  • 애플리케이션 테스트 - 가능한 경우, 준비 환경에서 리샤딩 중 애플리케이션 동작을 테스트합니다.

  • 확장 문제는 초기에 알리기 - 리샤딩은 컴퓨팅 집약적인 작업입니다. 이 때문에 리샤딩 중에는 CPU 사용률을 멀티 코어 인스턴스의 경우 80% 미만으로, 싱글 코어 인스턴스의 경우에는 50% 미만으로 유지하는 것이 좋습니다. 애플리케이션에서 확장 문제 관찰을 시작하기 전에 ElastiCache for Redis 지표를 모니터링한 다음 리샤딩을 시작합니다. CPUUtilization, NetworkBytesIn, NetworkBytesOut, CurrConnections, NewConnections, FreeableMemory, SwapUsageBytesUsedForCacheItems 지표를 추적하면 유용합니다.

  • 스케일 인 전 충분한 여유 메모리를 사용할 수 있는지 확인 - 확장하는 경우, 샤드에서 제거하려는 사용 중인 메모리의 1.5배가 넘는 여유 메모리가 샤드에 있는지 확인합니다.

  • 사용량이 적은 시간에 리샤딩 시작 - 이 사례를 적용하면 리샤딩 작업 중 클라이언트에서 지연 시간과 처리량에 미치는 영향을 줄일 수 있습니다. 또한 슬롯 재분산에 더 많은 리소스를 사용할 수 있기 때문에 리샤딩을 더욱 빠르게 완료할 수 있습니다.

  • 클라이언트 제한 시간 동작 검토 - 일부 클라이언트에서는 온라인 클러스터 크기 조정 중 지연 시간이 더 길어지는 경우를 관찰할 수 있습니다. 제한 시간을 좀 더 길게 설정해 클라이언트 라이브러리를 구성하면 서버에 대한 로드가 더욱 큰 상황에서도 시스템에서 연결할 시간을 가질 수 있습니다. 일부 경우에 서버에 대해 많은 수의 연결을 열 수 있습니다. 이 경우 지수 백오프를 추가해 로직을 다시 연결합니다. 이렇게 하면 동시에 서버에 연결하는 새로운 연결이 급격하게 증가하는 것을 방지할 수 있습니다.

  • 모든 샤드에 함수 로드 - 클러스터를 스케일 아웃할 때, ElastiCache는 (임의로 선택된) 기존 노드 중 하나에 로드된 함수를 새 노드에 자동으로 복제합니다. 클러스터에 Redis 7.0 이상이 설치되어 있고 애플리케이션이 Redis 함수를 사용하는 경우, 모든 함수를 모든 샤드에 로드해야 스케일 아웃으로 인해 클러스터가 샤드마다 다른 함수로 종결되는 상황을 방지할 수 있습니다.

리샤딩 후에는 다음 내용에 유념하세요.

  • 대상 샤드에 사용 가능한 메모리가 부족한 경우에는 부분적인 확장만 가능했을 수 있습니다. 이러한 결과가 발생하면 필요한 경우, 사용 가능한 메모리를 검토한 후 작업을 다시 시도하세요. 대상 샤드의 데이터는 삭제되지 않습니다.

  • 항목이 많은 슬롯은 마이그레이션되지 않습니다. 특히, 직렬화 후 크기가 256MB 이상인 항목이 있는 슬롯은 마이그레이션되지 않습니다.

  • 리샤딩 작업 중에는 Lua 스크립트 내에서 FLUSHALLFLUSHDB 명령이 지원되지 않습니다. Redis 6 이전에는 마이그레이션 중인 슬롯에서 작동하는 경우 BRPOPLPUSH 명령이 지원되지 않습니다.