DAX 클러스터 관리
이 단원에서는 Amazon DynamoDB Accelerator(DAX) 클러스터에 대한 몇 가지 일반 관리 작업에 대해 설명합니다.
주제
DAX 클러스터 관리를 위한 IAM 권한
AWS Management Console 또는 AWS Command Line Interface(AWS CLI)를 사용하여 DAX 클러스터를 관리할 경우 사용자가 수행할 수 있는 작업의 범위를 제한하는 것이 좋습니다. 이렇게 하면 최소한의 권한 원칙을 따르면서 위험을 최소화할 수 있습니다.
다음 설명은 DAX 관리 API에 대한 액세스 제어에 초점을 맞춥니다. 자세한 내용은 Amazon DynamoDB API 참조의 Amazon DynamoDB Accelerator를 참조하세요.
참고
AWS Identity and Access Management(IAM) 권한 관리에 대한 자세한 내용은 다음을 참조하세요.
-
IAM 및 DAX 클러스터 생성: DAX 클러스터 생성.
-
IAM 및 DAX 데이터 영역 작업: DAX 액세스 제어.
DAX 관리 API의 경우 특정 리소스로 API 작업의 범위를 지정할 수 없습니다. Resource
요소를 "*"
로 설정해야 합니다. 이는 GetItem
, Query
, Scan
등의 DAX 데이터 영역 API 작업과 다릅니다. 데이터 영역 작업은 DAX 클라이언트를 통해 노출되며, 그러한 작업은 특정 리소스로 범위를 지정할 수 있습니다.
다음과 같은 IAM 정책 문서를 예로 들어 보겠습니다.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "dax:*" ], "Effect": "Allow", "Resource": [ "arn:aws:dax:us-west-2:123456789012:cache/DAXCluster01" ] } ] }
이 정책의 의도는 DAXCluster01
클러스터에 대해서만 DAX 관리 API 호출을 허용하는 것이라고 간주합니다.
이제 사용자가 다음 AWS CLI 명령을 발행한다고 가정해 보겠습니다.
aws dax describe-clusters
이 명령은 권한 없음
예외로 실패합니다. 기본 DescribeClusters
API 호출을 특정 클러스터로 범위를 지정할 수 없기 때문입니다. 이 정책은 구문상으로는 유효하지만 Resource
요소를 "*"
로 설정해야 하기 때문에 실패합니다. 하지만 사용자가 DAX 데이터 영역 호출(예: GetItem
또는 Query
)을 DAXCluster01
로 보내는 프로그램을 실행할 경우 이 호출은 성공합니다. DAX 데이터 영역 API의 범위를 특정 리소스(이 경우 DAXCluster01
)로 지정할 수 있기 때문입니다.
DAX 관리 API와 DAX 데이터 영역 API를 모두 포괄하는 단일 IAM 정책을 작성하려면 정책 문서에 두 가지 별개의 명령문을 포함하는 것이 좋습니다. 이러한 명령문 중 하나는 DAX 데이터 영역 API를 다뤄야 하고, 다른 명령문은 DAX 관리 API를 다뤄야 합니다.
다음 예제 정책은 이를 보여 줍니다. DAXDataAPIs
구문은 DAXCluster01
리소스로 범위가 지정되지만 DAXManagementAPIs
의 리소스는 "*"
가 되어야 합니다. 각 구문에 나온 작업은 예시용입니다. 애플리케이션에서 필요한 만큼 리소스를 사용자 지정할 수 있습니다.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DAXDataAPIs", "Action": [ "dax:GetItem", "dax:BatchGetItem", "dax:Query", "dax:Scan", "dax:PutItem", "dax:UpdateItem", "dax:DeleteItem", "dax:BatchWriteItem" ], "Effect": "Allow", "Resource": [ "arn:aws:dax:us-west-2:123456789012:cache/DAXCluster01" ]}, { "Sid": "DAXManagementAPIs", "Action": [ "dax:CreateParameterGroup", "dax:CreateSubnetGroup", "dax:DecreaseReplicationFactor", "dax:DeleteCluster", "dax:DeleteParameterGroup", "dax:DeleteSubnetGroup", "dax:DescribeClusters", "dax:DescribeDefaultParameters", "dax:DescribeEvents", "dax:DescribeParameterGroups", "dax:DescribeParameters", "dax:DescribeSubnetGroups", "dax:IncreaseReplicationFactor", "dax:ListTags", "dax:RebootNode", "dax:TagResource", "dax:UntagResource", "dax:UpdateCluster", "dax:UpdateParameterGroup", "dax:UpdateSubnetGroup" ], "Effect": "Allow", "Resource": [ "*" ] } ] }
DAX 클러스터 크기 조정
DAX 클러스터 크기를 조정할 때 2가지 옵션을 사용할 수 있습니다. 첫 번째 옵션은 읽기 전용 복제본을 클러스터에 추가하는 수평적 조정입니다. 두 번째 옵션은 서로 다른 노드 유형을 선택하는 수직적 조정입니다. 애플리케이션에 적합한 클러스터 크기 및 노드 유형을 선택하는 방법에 대한 조언은 DAX 클러스터 크기 조정 안내서 단원을 참조하세요.
수평 크기 조정
수평적 조정을 사용하면 클러스터에 더 많은 읽기 전용 복제본을 추가하여 읽기 작업의 처리량을 개선할 수 있습니다. 단일 DAX 클러스터는 최대 10개의 읽기 전용 복제본을 지원하며, 클러스터가 실행 중인 동안 복제본을 추가하거나 제거할 수 있습니다.
새 노드를 추가할 때는 피어 노드의 캐시 데이터를 동기화해야 합니다. 따라서 추가 시간은 캐시 크기와 애플리케이션 워크로드에 따라 달라집니다. 예상되는 트래픽 최고치를 충족하려면 클러스터 규모를 미리 조정하는 것이 좋습니다. 적절한 크기 조정 지침과 모니터링 권장 사항에 대한 자세한 내용은 DAX 클러스터 크기 조정 안내서 섹션을 참조하세요.
다음은 노드 수를 늘리거나 줄이는 방법을 보여 주는 AWS CLI 예입니다. --new-replication-factor
인수는 클러스터의 총 노수 수를 지정합니다. 노드 중 하나는 기본 노드이고, 나머지 노드들은 읽기 전용 복제본입니다.
aws dax increase-replication-factor \ --cluster-name MyNewCluster \ --new-replication-factor 5
aws dax decrease-replication-factor \ --cluster-name MyNewCluster \ --new-replication-factor 3
참고
복제 인수를 수정하면 클러스터 상태가 modifying
으로 변경됩니다. 수정이 완료되면 상태가 available
로 변경됩니다.
세로 크기 조정
데이터 작업 집합이 큰 경우 대형 노드 유형을 사용하면 애플리케이션에 도움이 될 수 있습니다. 대형 노드는 클러스터가 메모리에 더 많은 데이터를 저장하도록 해주어 캐시 누락을 감소시키고 애플리케이션의 전체 애플리케이션 성능을 개선할 수 있습니다. (DAX 클러스터에 있는 모든 노드는 유형이 동일해야 합니다.)
DAX 클러스터가 쓰기 작업 속도가 높거나 캐시 누락이 있는 경우 애플리케이션은 더 큰 노드 유형을 사용하는 것이 좋습니다. 쓰기 작업 및 캐시 누락은 클러스터의 기본 노드에서 리소스를 사용합니다. 따라서 더 큰 노드 유형을 사용하면 기본 노드의 성능이 향상되어 이러한 유형의 작업에 대한 처리량이 높아질 수 있습니다.
실행 중인 DAX 클러스터에서는 노드 유형을 수정할 수 없습니다. 대신, 원하는 노드 유형으로 새 클러스터를 생성해야 합니다. 지원되는 노드 유형의 전체 목록은 노드 단원을 참조하세요.
AWS Management Console, AWS CloudFormation, AWS CLI, AWS SDK 등을 사용하여 새 DAX 클러스터를 생성할 수 있습니다. (AWS CLI의 경우 --node-type
파라미터를 사용하여 노드 유형을 지정하세요.)
DAX 클러스터 설정 사용자 지정
DAX 클러스터를 생성하는 경우 다음 기본 설정이 사용됩니다.
-
유지 시간(TTL)을 5분으로 설정하여 자동 캐시 제거 활성화
-
가용 영역에 대한 기본 설정 없음
-
유지 관리 기간에 대한 기본 설정 없음
-
알림 비활성화됨
새로운 클러스터의 경우 생성 시에 설정을 사용자 지정할 수 있습니다. AWS Management Console에서 사용자 지정하려면 기본 설정 사용을 지우고 다음 설정을 수정합니다.
-
네트워크 및 보안 - 현재 AWS 리전 내에 있는 다른 가용 영역에서 개별 DAX 클러스터 노드의 실행을 허용합니다. 기본 설정 없음를 선택하는 경우 노드가 AZ 사이에 자동으로 배분됩니다.
-
파라미터 그룹 - 클러스터의 모든 노드에 적용되는 명명된 파라미터 집합입니다. 파라미터 그룹을 사용하면 TTL 동작을 지정할 수 있습니다. 언제든지 파라미터 그룹(기본 파라미터 그룹
default.dax.1.0
제외) 내에서 지정된 파라미터 값을 변경할 수 있습니다. -
유지 관리 기간 - 소프트웨어 업그레이드 및 패치가 클러스터의 노드에 적용되는 기간(주 단위)입니다. 유지 관리 기간의 시작 날짜, 시작 시간 및 기간을 선택할 수 있습니다. 기본 설정 없음을 선택하면 리전별로 8시간 블록 시간 중에서 임의로 유지 관리 기간이 선택됩니다. 자세한 내용은 유지보수 윈도우 단원을 참조하십시오.
참고
파라미터 그룹 및 유지 관리 기간도 실행 중인 클러스터에서 언제든지 변경할 수도 있습니다.
유지 관리 이벤트가 발생하면 DAX가 Amazon Simple Notification Service(Amazon SNS)를 사용하여 알릴 수 있습니다. 알림을 구성하려면 [Topic for SNS notification] 선택기에서 옵션을 선택합니다. 새로운 Amazon SNS 주제를 생성하거나 기존 주제를 사용할 수 있습니다.
Amazon SNS 주제 설정 및 구독에 대한 자세한 내용은 Amazon Simple Notification Service 개발자 가이드의 Amazon SNS 시작하기를 참조하세요.
TTL 설정 구성
DAX는 DynamoDB에서 읽어 들인 데이터를 위해 다음과 같은 두 개의 캐시를 유지합니다.
-
항목 캐시 -
GetItem
또는BatchGetItem
을 사용하여 검색된 항목용입니다. -
쿼리 캐시 -
Query
또는Scan
을 사용하여 검색된 결과 집합용입니다.
자세한 내용은 항목 캐시 및 쿼리 캐시 단원을 참조하세요.
각 캐시의 기본 TTL은 5분입니다. 다른 TTL 설정을 사용하려면 사용자 지정 파라미터 그룹을 사용하여 DAX 클러스터를 시작하면 됩니다. 이러한 작업을 콘솔에서 수행하려면 탐색 창에서 DAX | Parameter groups(DAX | 파라미터 그룹)를 선택합니다.
AWS CLI를 사용하여 이러한 작업을 수행할 수도 있습니다. 다음은 사용자 지정 파라미터 그룹을 사용하여 새로운 DAX 클러스터를 시작하는 방법을 보여 주는 예입니다. 이 예에서는 항목 캐시 TTL이 10분으로 설정되어 있으며, 쿼리 캐시 TTL은 3분으로 설정되어 있습니다.
-
새 파라미터 그룹을 생성해야 합니다.
aws dax create-parameter-group \ --parameter-group-name custom-ttl
-
항목 캐시 TTL을 10분(600000밀리초)으로 설정합니다.
aws dax update-parameter-group \ --parameter-group-name custom-ttl \ --parameter-name-values "ParameterName=record-ttl-millis,ParameterValue=600000"
-
쿼리 캐시 TTL을 3분(180000밀리초)으로 설정합니다.
aws dax update-parameter-group \ --parameter-group-name custom-ttl \ --parameter-name-values "ParameterName=query-ttl-millis,ParameterValue=180000"
-
파라미터를 올바르게 설정했는지 확인합니다.
aws dax describe-parameters --parameter-group-name custom-ttl \ --query "Parameters[*].[ParameterName,Description,ParameterValue]"
이제는 이러한 파라미터 그룹을 사용하여 새 DAX 클러스터를 시작할 수 있습니다.
aws dax create-cluster \ --cluster-name MyNewCluster \ --node-type dax.r3.large \ --replication-factor 3 \ --iam-role-arn arn:aws:iam::123456789012:role/DAXServiceRole \ --parameter-group custom-ttl
참고
실행 중인 DAX 인스턴스에서 사용 중인 파라미터 그룹은 수정할 수 없습니다.
DAX에 대한 태그 지정 지원
DynamoDB를 비롯한 여러 AWS 서비스에서 리소스에 사용자 정의 이름으로 레이블을 지정하는 기능인 태그 지정을 지원합니다. DAX 클러스터에 태그를 지정하여, 동일한 태그를 가진 모든 AWS 리소스를 빠르게 식별하거나, 지정한 태그별로 AWS 청구서를 분류할 수 있습니다.
자세한 내용은 DynamoDB의 리소스에 태그 및 레이블 추가 단원을 참조하십시오.
AWS Management Console 사용
DAX 클러스터 태그를 관리하려면
https://console.aws.amazon.com/dynamodb/
에서 DynamoDB 콘솔을 엽니다. -
탐색 창의 DAX에서 클러스터를 선택합니다.
-
사용하려는 클러스터를 선택합니다.
-
태그 탭을 선택합니다. 여기서 태그를 추가하거나, 태그 목록을 보거나, 편집 또는 삭제할 수 있습니다.
원하는 대로 설정이 되었으면 Apply Changes를 선택합니다.
AWS CLI 사용
AWS CLI를 사용하여 DAX 클러스터 태그를 관리할 경우 먼저 클러스터의 Amazon 리소스 이름(ARN)을 확인해야 합니다. 다음 예는 MyDAXCluster
라는 클러스터의 ARN을 확인하는 방법을 보여 줍니다.
aws dax describe-clusters \ --cluster-name MyDAXCluster \ --query "Clusters[*].ClusterArn"
출력에 arn:aws:dax:us-west-2:123456789012:cache/MyDAXCluster
와 같은 ARN이 표시될 것입니다.
다음 예는 클러스터에 태그를 지정하는 방법을 보여 줍니다.
aws dax tag-resource \ --resource-name arn:aws:dax:us-west-2:123456789012:cache/MyDAXCluster \ --tags="Key=ClusterUsage,Value=prod"
클러스터의 모든 태그 목록을 나열합니다.
aws dax list-tags \ --resource-name arn:aws:dax:us-west-2:123456789012:cache/MyDAXCluster
태그를 제거하려면 해당 키를 지정합니다.
aws dax untag-resource \ --resource-name arn:aws:dax:us-west-2:123456789012:cache/MyDAXCluster \ --tag-keys ClusterUsage
AWS CloudTrail 통합
DAX가 AWS CloudTrail과 통합되어 DAX 클러스터 작업을 감사할 수 있게 되었습니다. CloudTrail 로그를 사용하여 클러스터 수준에서 수행된 모든 변경을 볼 수 있습니다. 또한 노드, 서브넷 그룹 및 파라미터 그룹 같은 클러스터 구성 요소에 대한 변경을 볼 수 있습니다. 자세한 내용은 AWS CloudTrail을 사용하여 DynamoDB 작업 로깅 단원을 참조하십시오.
DAX 클러스터 삭제
DAX 클러스터를 더 이상 사용하지 않는 경우에는 사용하지 않은 리소스에 대해 비용이 청구되지 않도록 해당 클러스터를 삭제해야 합니다.
콘솔 또는 AWS CLI를 사용하여 DAX 클러스터를 삭제할 수 있습니다. 다음은 예입니다.
aws dax delete-cluster --cluster-name mydaxcluster