ElastiCache for Redis 클러스터에 대해 올바른 인스턴스 유형 및 크기를 선택하려면 어떻게 해야 하나요?

4분 분량
0

최고의 성능을 얻기 위해 워크로드에 맞는 Amazon ElastiCache for Redis 노드 크기 및 클러스터 구성을 선택하려면 어떻게 해야 하나요?

간략한 설명

ElastiCache 클러스터와 클러스터 구성의 노드 크기를 선택할 때 유의 사항은 다음과 같습니다.

  • 얼마나 많은 CPU 처리 능력이 필요합니까?
  • 얼마나 많은 데이터를 저장해야 합니까?
  • 선택한 노드 크기가 예상 네트워크 트래픽을 처리할 수 있습니까?
  • 어떤 클러스터 모드를 선택해야 합니까?

해결 방법

얼마나 많은 CPU 처리 능력이 필요합니까?

노드 옵션 검토

사용 가능한 노드 옵션을 검토합니다. Redis는 단일 스레드 프로세스이므로 노드에 CPU를 추가해도 성능이 향상되지 않습니다. 노드의 단일 CPU 코어 능력에 따라 성능이 결정됩니다. 각 노드 유형마다 고유한 기준 성능이 있습니다. 현재 세대 노드 유형은 이전 버전에 비해 저렴한 비용으로 더 많은 메모리와 컴퓨팅 능력을 제공합니다. 예를 들어 M5 및 R5 인스턴스는 M4 및 R4에 비해 저렴한 비용으로 더 나은 성능을 제공합니다.

노드 벤치마크

노드를 벤치마킹하여 인스턴스가 예상 워크로드에서 얼마나 잘 수행되는지 추정하는 것이 모범 사례입니다. 이렇게 하려면 redis-benchmark utility를 사용합니다. 기준 권장 사항에 대한 자세한 내용은 Amazon ElastiCache Redis 클러스터의 크기를 적절히 조정할 때 고려해야 할 5가지 워크로드 특성을 참조하세요.

벤치마크 테스트를 수행할 때는 요청 수, 키 배포 및 항목 크기를 포함하여 애플리케이션 트래픽의 워크로드를 모방합니다. Amazon CloudWatch 지표에서 메모리 사용량, 프로세서 사용률, 캐시 적중 및 캐시 누락 등을 모니터링합니다. 클러스터가 원하는 적중률에 부합하지 않거나 키가 너무 자주 제거되는 것이 눈에 띌지 모릅니다. 이 경우 CPU 및 메모리 사양이 더 큰 다른 노드 크기를 선택합니다.

Redis는 단일 스레드이므로 보고된 CPU 사용량에 CPU 코어 수를 곱하여 실제 사용량을 구합니다. 예를 들어 4코어 CPU가 사용률이 20%라고 보고한 경우, 사실은 Redis가 코어 1개를 80%의 사용률로 실행 중이라는 뜻입니다.

얼마나 많은 데이터를 저장해야 합니까?

스토리지 사용량을 추정하려면 캐싱할 항목의 평균 크기에, 캐시에 한 번에 보관되어 있는 항목 수를 곱하면 됩니다. 항목 크기를 추정하려면 캐시 항목을 직렬화하고 문자를 세어 이 합계를 클러스터의 샤드 수로 나눕니다.

Redis 버전의 예약 메모리 또는 예약 메모리 백분율 그룹 파라미터에 유의하세요. 이 파라미터는 시스템 백업 및 일반 시스템 안정성과 같은 데이터 외의 사용을 위해 메모리를 예약합니다. 기본적으로 이 값은 최대 메모리의 25%로 설정됩니다. 데이터에 충분한 크기는 무엇일지 결정할 때 이 점을 감안하세요.

예를 들어, cache.r4.large에는 12.3GB의 사용 가능한 메모리가 있습니다. 예약 메모리가 25%로 설정되어 있으므로 노드는 최대 9.2GB(12.3 x 75%)의 데이터를 저장합니다. 나머지는 다른 Redis 기능 및 시스템 안정성을 위해 예약됩니다.

선택한 노드 유형이 예상 네트워크 트래픽을 처리할 수 있습니까?

선택한 노드 유형이 네트워크 최댓값에 도달하지 않고 푸시되는 데이터양을 처리할 수 있는지 확인합니다.

ElastiCache 노드의 최대 처리량을 판단하려면 유사한 Amazon Elastic Compute Cloud(Amazon EC2) 노드에서 벤치마크를 실행하세요.

예를 들어 cache.m4.large 노드의 경우 EC2 m4.large 인스턴스에서 테스트를 실행합니다. 이 테스트를 실행하면 노드에 대한 이론상 최대 처리량을 알 수 있습니다. 또한 클라이언트와 Redis 노드 간에 푸시할 수 있는 대역폭의 예상치도 제공합니다. 네트워킹을 최대한 활용할 때 발생하는 일반적인 부작용은 대역폭 그래프에 편평한 선이 나타나는 것입니다. 이것은 하드웨어가 최대한도에 도달했다는 뜻입니다. iperf3를 사용하여 인스턴스 간 네트워크 성능을 측정하는 방법에 대한 지침은 동일한 Amazon VPC의 Amazon EC2 Linux 인스턴스 간에 네트워크 처리량을 벤치마킹하려면 어떻게 해야 합니까?를 참조하세요.

ElastiCache 노드는 해당 EC2 노드와 유사하므로 각 인스턴스 유형에 대해 나열된 네트워크 성능을 살펴보세요. 노드의 네트워크 처리량 최대한도에 도달하는 경우, 네트워크 성능을 개선하기 위해 다음으로 큰 노드 크기를 선택해야 할 수 있습니다. 예를 들어 m4.large 인스턴스에는 중간 정도의 네트워킹이 있습니다. 단, 워크로드가 네트워킹 최대한도에 도달하고 성능이 저하되는 경우, 네트워크 성능이 더 좋은 새 노드 유형을 알아보세요. 더 나은 네트워크 성능은 가격 페이지의 네트워크 성능 열에 높음 또는 10기가비트로 나열될 수 있습니다.

네트워크 성능은 클라이언트에도 적용된다는 점에 유의하세요. 클라이언트가 네트워크 성능이 낮거나 중간 정도인 t2.micro이고 데이터를 m4.10xlarge로 푸시하는 경우 먼저 클라이언트의 네트워크 처리량부터 최대한도에 도달합니다.

어떤 클러스터 모드를 선택해야 합니까?

애플리케이션 워크로드에 적합한 모드 선택은 트래픽에 좌우됩니다.

클러스터의 기본 로드가 데이터를 읽는 애플리케이션으로 구성된 경우 Redis(클러스터 모드 사용 안 함) 클러스터를 선택할 수 있습니다. 그런 다음, 읽기 전용 복제본을 추가하여 더 많은 읽기 작업을 지원하도록 클러스터를 확장합니다. 읽기 전용 복제본은 최대 5개입니다. 클러스터 모드가 비활성화된 클러스터에는 샤드가 하나만 있다는 점에 유의하세요. 따라서 노드 유형은 클러스터의 모든 데이터와 필요한 오버헤드를 수용할 수 있을 만큼 충분히 커야 합니다.

클러스터의 로드에 쓰기가 많고 쓰기 워크로드가 한 노드에서 제공할 수 있는 부하를 초과하는 경우 Redis(클러스터 모드 사용) 클러스터를 사용합니다. 클러스터 모드가 활성화된 클러스터는 키를 여러 프라이머리 노드에 분산시킵니다. 이렇게 하면 쓰기 성능이 단일 노드가 아니라 여러 노드에 분할됩니다.

뛰어난 성능을 필요로 하는 대규모 워크로드의 경우 각 샤드에 대해 여러 샤드와 여러 읽기 전용 복제본이 있는 클러스터 모드가 활성화된 클러스터를 사용합니다. 예를 들어, 프라이머리 노드당 15개의 샤드와 5개의 복제본으로 클러스터를 생성할 수 있습니다.


AWS 공식
AWS 공식업데이트됨 2년 전