예약된 메모리 관리 - Amazon ElastiCache for Redis

예약된 메모리 관리

예약된 메모리는 비데이터 사용을 위해 구분된 메모리입니다. 백업 또는 장애 조치를 수행할 때 클러스터의 데이터가 .rdb 파일에 작성되는 동안 Redis에서는 사용 가능한 메모리를 사용하여 클러스터에 쓰기 작업을 기록합니다. 모든 쓰기에 사용 가능한 메모리를 충분히 확보하지 못하면 프로세스가 실패합니다. 아래에서 ElastiCache for Redis에 대한 예약된 메모리를 관리하기 위한 옵션과 이러한 옵션을 적용하는 방법에 대한 정보를 찾을 수 있습니다.

필요한 예약된 메모리의 양

Redis 2.8.22 이전 버전을 실행하고 있는 경우 Redis 2.8.22 이후 버전을 실행하는 것보다 백업 및 장애 조치를 위해 더 많은 메모리를 예약해야 합니다. 이러한 요구 사항은 ElastiCache for Redis가 백업 프로세스를 구현하는 방법이 다르기 때문입니다. 경험상, 2.8.22 이전 버전의 Redis 오버헤드에 대해서는 노드 유형 maxmemory 값의 절반을 예약하고 Redis 버전 2.8.22 이후에 대해서는 1/4을 예약합니다.

데이터 계층화를 통해 클러스터를 사용하는 경우 워크로드에 쓰기가 많으면 최대 메모리를 노드의 사용 가능한 메모리의 절반까지 늘리는 것이 좋습니다.

자세한 정보는 다음 자료를 참조하세요.

예약된 메모리를 관리하기 위한 파라미터

2017년 3월 16일부터 Amazon ElastiCache for Redis에서는 Redis 메모리 관리를 위해 상호 배타적인 파라미터 두 개, 즉 reserved-memoryreserved-memory-percent를 제공합니다. 이 두 파라미터는 Redis 배포의 일부가 아닙니다.

ElastiCache 고객이 된 시점에 따라, 이러한 파라미터 중 하나 또는 다른 파라미터가 기본 메모리 관리 파라미터입니다. 새 Redis 클러스터 또는 복제 그룹을 생성하고 기본 파라미터 그룹을 사용할 때 이 파라미터가 적용됩니다.

  • 2017년 3월 16일 이전에 시작한 고객의 경우 기본 파라미터 그룹을 사용하여 Redis 클러스터 또는 복제 그룹을 생성할 때 메모리 관리 파라미터가 reserved-memory입니다. 이 경우 0바이트의 메모리가 예약됩니다.

  • 2017년 3월 16일 이후에 시작된 고객의 경우 기본 파라미터 그룹을 사용하여 Redis 클러스터 또는 복제 그룹을 생성할 때 메모리 관리 파라미터는 reserved-memory-percent입니다. 이 경우 노드 maxmemory 값의 25%가 비데이터 용도로 예약됩니다.

두 개의 Redis 메모리 관리 파라미터를 읽은 후에는 기본이 아니거나 기본이 아닌 값을 가진 파라미터를 사용하는 것이 좋습니다. 이 경우, 다른 예약된 메모리 관리 파라미터로 변경할 수 있습니다.

이 파라미터의 값을 변경하려면 사용자 정의 파라미터 그룹을 생성하고 기본 설정 메모리 관리 파라미터 및 값을 사용하도록 수정할 수 있습니다. 그다음부터는 Redis 클러스터나 복제 그룹을 새로 생성할 때마다 이 사용자 지정 파라미터 그룹을 사용할 수 있습니다. 기존 클러스터나 복제 그룹의 경우 사용자 지정 파라미터 그룹을 사용하도록 수정할 수 있습니다.

자세한 정보는 다음 자료를 참조하세요.

reserved-memory 파라미터

2017년 3월 16일 이전에는 모든 ElastiCache for Redis 예약된 메모리 관리가 reserved-memory 파라미터를 사용하여 수행되었습니다. reserved-memory의 기본값은 0입니다. 이 기본값은 Redis 오버헤드에 대해 메모리를 예약하지 않으며, Redis가 모든 노드의 메모리를 데이터로 사용하는 것을 허용합니다.

백업 및 장애 조치를 위해 충분한 메모리를 사용할 수 있도록 reserved-memory를 변경할 경우 사용자 지정 파라미터 그룹을 생성해야 합니다. 이 사용자 지정 파라미터 그룹에서 reserved-memory를 클러스터에 대해 실행 중인 Redis 버전과 클러스터의 노드 유형에 적합한 값으로 설정합니다. 자세한 내용은 필요한 예약된 메모리의 양 섹션을 참조하세요.

ElastiCache for Redis 파라미터 reserved-memory는 ElastiCache for Redis에 고유하며, Redis 배포의 일부가 아닙니다.

다음 절차는 reserved-memory를 사용하여 Redis 클러스터의 메모리를 관리하는 방법을 보여줍니다.

reserved-memory를 사용하여 메모리를 예약하려면
  1. 실행 중인 엔진 버전과 일치하는 파라미터 그룹 패밀리를 지정하는 사용자 지정 파라미터 그룹을 생성합니다. 예를 들어 redis2.8 파라미터 그룹 패밀리를 지정합니다. 자세한 정보는 파라미터 그룹 생성을 참조하십시오.

    aws elasticache create-cache-parameter-group \ --cache-parameter-group-name redis6x-m3xl \ --description "Redis 2.8.x for m3.xlarge node type" \ --cache-parameter-group-family redis6.x
  2. Redis 오버헤드를 위해 예약해야 하는 메모리의 바이트 수를 계산합니다. Redis 노드 유형별 파라미터에서 노드 유형에 대한 maxmemory 값을 찾을 수 있습니다.

  3. reserved-memory 파라미터가 이전 단계에서 계산된 바이트 수가 되도록 사용자 지정 파라미터 그룹을 수정합니다. 다음 AWS CLI 예제에서는 2.8.22 이전 버전의 Redis를 실행하고 있으며 노드의 maxmemory 절반을 예약한다고 가정합니다. 자세한 정보는 파라미터 그룹 수정을 참조하십시오.

    aws elasticache modify-cache-parameter-group \ --cache-parameter-group-name redis28-m3xl \ --parameter-name-values "ParameterName=reserved-memory, ParameterValue=7130316800"

    각 노드 유형에는 다른 maxmemory 값이 있으므로 사용할 각 노드 유형에 대해 별도의 사용자 지정 파라미터 그룹이 필요합니다. 따라서 각 노드 유형에는 reserved-memory에 대해 서로 다른 값이 필요합니다.

  4. Redis 클러스터나 복제 그룹을 수정하여 사용자 지정 파라미터 그룹을 사용하도록 합니다.

    다음 CLI 예제에서는 my-redis-cluster 클러스터를 수정하여 즉시 시작되는 사용자 지정 파라미터 그룹 redis28-m3xl을 사용하도록 합니다. 자세한 정보는 ElastiCache 클러스터 수정을 참조하십시오.

    aws elasticache modify-cache-cluster \ --cache-cluster-id my-redis-cluster \ --cache-parameter-group-name redis28-m3xl \ --apply-immediately

    다음 CLI 예제에서는 복제 그룹 my-redis-repl-grp를 수정하여 즉시 시작되는 사용자 지정 파라미터 그룹 redis28-m3xl을 사용하도록 합니다. 자세한 내용은 복제 그룹 수정 섹션을 참조하세요.

    aws elasticache modify-replication-group \ --replication-group-id my-redis-repl-grp \ --cache-parameter-group-name redis28-m3xl \ --apply-immediately

reserved-memory-percent 파라미터

2017년 3월 16일에 Amazon ElastiCache는 reserved-memory-percent 파라미터를 도입했으며, ElastiCache for Redis의 모든 버전에 사용할 수 있도록 했습니다. reserved-memory-percent의 목적은 모든 클러스터에 대해 예약된 메모리 관리를 간소화하는 것입니다. 노드 유형과 상관없이 클러스터의 예약된 메모리를 관리하기 위해 각 파라미터 그룹 패밀리에 대해 단일 파라미터 그룹(예: redis2.8)을 보유할 수 있도록 하여 이를 수행합니다. reserved-memory-percent에 대한 기본값은 25(25%)입니다.

ElastiCache for Redis 파라미터 reserved-memory-percent는 ElastiCache for Redis에 고유하며, Redis 배포의 일부가 아닙니다.

클러스터가 r6gd 패밀리의 노드 유형을 사용하고 있고 메모리 사용량이 75%에 도달하는 경우 데이터 계층화가 자동으로 트리거됩니다. 자세한 정보는 데이터 계층화을 참조하십시오.

reserved-memory-percent를 사용하여 메모리를 예약하려면

reserved-memory-percent를 사용하여 ElastiCache for Redis 클러스터에 대한 메모리를 관리하려면 다음 중 하나를 수행하세요.

  • Redis 2.8.22 이상을 실행 중이면 클러스터에 기본 파라미터 그룹을 할당합니다. 기본 25%가 적절합니다. 그렇지 않은 경우 다음 설명된 단계에 따라 값을 변경합니다.

  • Redis 2.8.22 이전 버전을 실행하고 있는 경우 reserved-memory-percent의 기본 25%보다 더 많은 메모리를 예약해야 할 수 있습니다. 이렇게 하려면 다음 절차를 사용하세요.

reserved-memory-percent의 백분율 값을 변경하려면
  1. 실행 중인 엔진 버전과 일치하는 파라미터 그룹 패밀리를 지정하는 사용자 지정 파라미터 그룹을 생성합니다. 예를 들어 redis2.8 파라미터 그룹 패밀리를 지정합니다. 기본 파라미터 그룹을 수정할 수 없으므로 사용자 지정 파라미터 그룹이 필요합니다. 자세한 정보는 파라미터 그룹 생성을 참조하십시오.

    aws elasticache create-cache-parameter-group \ --cache-parameter-group-name redis28-50 \ --description "Redis 2.8.x 50% reserved" \ --cache-parameter-group-family redis2.8

    reserved-memory-percent는 노드의 maxmemory%로 메모리를 예약하므로 각 노드 유형에 대해 사용자 지정 파라미터 그룹이 필요하지 않습니다.

  2. reserved-memory-percent가 50(50%)이 되도록 사용자 지정 파라미터 그룹을 수정합니다. 자세한 정보는 파라미터 그룹 수정을 참조하십시오.

    aws elasticache modify-cache-parameter-group \ --cache-parameter-group-name redis28-50 \ --parameter-name-values "ParameterName=reserved-memory-percent, ParameterValue=50"
  3. Redis 2.8.22 이전 버전을 실행하는 Redis 클러스터나 복제 그룹에 대해 이 사용자 지정 파라미터 그룹을 사용합니다.

    다음 CLI 예제에서는 Redis 클러스터 my-redis-cluster를 수정하여 즉시 시작되는 사용자 지정 파라미터 그룹 redis28-50을 사용하도록 합니다. 자세한 정보는 ElastiCache 클러스터 수정을 참조하십시오.

    aws elasticache modify-cache-cluster \ --cache-cluster-id my-redis-cluster \ --cache-parameter-group-name redis28-50 \ --apply-immediately

    다음 CLI 예제에서는 Redis 복제 그룹 my-redis-repl-grp를 수정하여 즉시 시작되는 사용자 지정 파라미터 그룹 redis28-50을 사용하도록 합니다. 자세한 정보는 복제 그룹 수정을 참조하십시오.

    aws elasticache modify-replication-group \ --replication-group-id my-redis-repl-grp \ --cache-parameter-group-name redis28-50 \ --apply-immediately

예약된 메모리 관리 파라미터 지정

2017년 3월 16일 현재 ElastiCache 고객이었던 사용자의 경우 예약된 메모리 관리 기본 파라미터는 예약된 메모리가 영(0) 바이트인 reserved-memory입니다. 2017년 3월 16일을 지난 시점에 ElastiCache 고객이 된 사용자의 경우 예약된 메모리 관리 기본 파라미터는 노드의 메모리 중 25%가 예약된 reserved-memory-percent입니다. 이것은 ElastiCache for Redis 클러스터 또는 복제 그룹을 생성한 시점에 상관없이 적용됩니다. 그러나 예약된 메모리 관리 파라미터를 AWS CLI 또는 ElastiCache API를 사용해 변경할 수 있습니다.

파라미터 reserved-memoryreserved-memory-percent는 함께 사용할 수 없습니다. 파라미터 그룹에는 항상 한 개의 파라미터가 있으며 둘 다 있을 수 없습니다. 파라미터 그룹을 수정하여 파라미터 그룹에서 예약된 메모리 관리에 사용할 파라미터를 변경할 수 있습니다. 기본 파라미터 그룹을 수정할 수 없으므로 파라미터 그룹은 사용자 지정 파라미터 그룹이어야 합니다. 자세한 정보는 파라미터 그룹 생성을 참조하십시오.

reserved-memory-percent를 지정하려면

reserved-memory-percent를 예약된 메모리 관리 파라미터로 사용하려면 modify-cache-parameter-group 명령어를 사용하여 사용자 지정 파라미터 그룹을 수정해야 합니다. reserved-memory-percent 파라미터를 사용하여 parameter-name-values 및 해당 값을 지정합니다.

다음 CLI 예제는 예약된 메모리를 관리하기 위해 reserved-memory-percent를 사용하도록 사용자 지정 파라미터 그룹 redis32-cluster-on을 수정합니다. 예약된 메모리 관리를 위해 파라미터 그룹에서 ParameterName 파라미터를 사용할 수 있도록 ParameterValue에 값을 지정해야 합니다. 자세한 정보는 파라미터 그룹 수정을 참조하십시오.

aws elasticache modify-cache-parameter-group \ --cache-parameter-group-name redis32-cluster-on \ --parameter-name-values "ParameterName=reserved-memory-percent, ParameterValue=25"
reserved-memory를 지정하려면

reserved-memory를 예약된 메모리 관리 파라미터로 사용하려면 modify-cache-parameter-group 명령어를 사용하여 사용자 지정 파라미터 그룹을 수정해야 합니다. reserved-memory 파라미터를 사용하여 parameter-name-values 및 해당 값을 지정합니다.

다음 CLI 예제는 예약된 메모리를 관리하기 위해 reserved-memory를 사용하도록 사용자 지정 파라미터 그룹 redis32-m3xl을 수정합니다. 예약된 메모리 관리를 위해 파라미터 그룹에서 ParameterName 파라미터를 사용할 수 있도록 ParameterValue에 값을 지정해야 합니다. 엔진 버전이 2.8.22보다 더 새로운 버전이므로 값을 cache.m3.xlargemaxmemory 중 25퍼센트에 해당하는 3565158400으로 설정했습니다. 자세한 정보는 파라미터 그룹 수정을 참조하십시오.

aws elasticache modify-cache-parameter-group \ --cache-parameter-group-name redis32-m3xl \ --parameter-name-values "ParameterName=reserved-memory, ParameterValue=3565158400"