Amazon Neptune Serverless 사용 - Amazon Neptune

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

Amazon Neptune Serverless 사용

새 Neptune DB 클러스터를 서버리스 클러스터로 만들거나 경우에 따라 기존 DB 클러스터를 변환하여 서버리스를 사용할 수 있습니다. 또한 서버리스 DB 클러스터의 DB 인스턴스를 서버리스 인스턴스로 또는 서버리스 인스턴스에서 변환할 수 있습니다. Neptune Serverless는 지원되는의 하나에서만 사용할 수 AWS 리전 있으며 몇 가지 다른 제한 사항이 있습니다( 참조Amazon Neptune Serverless 제약 조건).

또한 Neptune AWS CloudFormation 스택을 사용하여 Neptune Serverless DB 클러스터를 생성할 수 있습니다.

서버리스를 사용하는 새 DB 클러스터 생성

서버리스를 사용하는 Neptune DB 클러스터를 만들려면 프로비저닝된 클러스터를 만들 때와 같은 방법으로 AWS Management Console을 사용하여 만들 수 있습니다. 차이점은 DB 인스턴스 크기에서 DB 인스턴스 클래스서버리스로 설정해야 한다는 점입니다. 이렇게 할 때 클러스터의 서버리스 용량 범위를 설정해야 합니다.

다음과 같은 명령 AWS CLI 으로를 사용하여 서버리스 DB 클러스터를 생성할 수도 있습니다(Windows에서는 '\'를 '^'로 대체).

aws neptune create-db-cluster \ --region (an AWS 리전 region that supports serverless) \ --db-cluster-identifier (ID for the new serverless DB cluster) \ --engine neptune \ --engine-version (optional: 1.2.0.1 or above) \ --serverless-v2-scaling-configuration "MinCapacity=1.0, MaxCapacity=128.0"

다음과 같이 serverless-v2-scaling-configuration 파라미터를 지정할 수도 있습니다.

--serverless-v2-scaling-configuration '{"MinCapacity":1.0, "MaxCapacity":128.0}'

그런 다음 ServerlessV2ScalingConfiguration 속성에 대해 describe-db-clusters 명령을 실행하면 지정한 다음의 용량 범위 설정이 반환됩니다.

"ServerlessV2ScalingConfiguration": { "MinCapacity": (the specified minimum number of NCUs), "MaxCapacity": (the specified maximum number of NCUs) }

기존 DB 클러스터 또는 인스턴스를 서버리스로 변환

엔진 버전 1.2.0.1 이상을 사용하는 Neptune DB 클러스터가 있는 경우 이를 서버리스로 변환할 수 있습니다. 이 프로세스에는 약간의 가동 중지가 발생합니다.

첫 번째 단계는 기존 클러스터에 용량 범위를 추가하는 것입니다. 를 사용하거나 다음과 같은 AWS CLI 명령을 AWS Management Console사용하여 이를 수행할 수 있습니다(Windows에서는 '\'를 '^'로 바꿉니다).

aws neptune modify-db-cluster \ --db-cluster-identifier (your DB cluster ID) \ --serverless-v2-scaling-configuration \ MinCapacity=(minimum number of NCUs, such as 2.0), \ MaxCapacity=(maximum number of NCUs, such as 24.0)

다음 단계는 클러스터의 기존 기본 인스턴스(라이터)를 대체할 새 서버리스 DB 인스턴스를 만드는 것입니다. 다시 말하지만이 작업과 모든 후속 단계는 AWS Management Console 또는를 사용하여 수행할 수 있습니다 AWS CLI. 두 경우 모두 DB 인스턴스 클래스를 서버리스로 지정합니다. AWS CLI 명령은 다음과 같습니다(Windows에서는 '\'를 '^'로 바꿉니다).

aws neptune create-db-instance \ --db-instance-identifier (an instance ID for the new writer instance) \ --db-cluster-identifier (ID of the DB cluster) \ --db-instance-class db.serverless --engine neptune

새 라이터 인스턴스를 사용할 수 있게 되면 장애 조치를 수행하여 해당 인스턴스를 클러스터의 라이터 인스턴스로 만듭니다.

aws neptune failover-db-cluster \ --db-cluster-identifier (ID of the DB cluster) \ --target-db-instance-identifier (instance ID of the new serverless instance)

이어서 다음과 같이 이전 라이터 인스턴스를 삭제합니다.

aws neptune delete-db-instance \ --db-instance-identifier (instance ID of the old writer instance) \ --skip-final-snapshot

마지막으로 동일한 작업을 수행하여 서버리스 인스턴스로 변환하려는 기존의 프로비저닝된 각 리더 인스턴스를 대신할 새 서버리스 인스턴스를 만들고 기존의 프로비저닝된 인스턴스를 삭제합니다. 리더 인스턴스에는 장애 조치가 필요하지 않습니다.

기존 서버리스 DB 클러스터의 용량 범위 수정

다음과 같이 Neptune Serverless DB 클러스터의 용량 범위를 AWS CLI 를 사용하여 변경할 수 있습니다(Windows의 경우 '\' 기호를 '^' 기호로 대체).

aws neptune modify-db-cluster \ --region (an AWS region that supports serverless) \ --db-cluster-identifier (ID of the serverless DB cluster) \ --apply-immediately \ --serverless-v2-scaling-configuration MinCapacity=4.0, MaxCapacity=32

용량 범위를 변경하면 일부 구성 파라미터의 기본값이 변경됩니다. Neptune은 이러한 새 기본값 중 일부를 즉시 적용할 수 있지만 일부 동적 파라미터 변경 사항은 재부팅 후에만 적용됩니다. pending-reboot 상태는 일부 파라미터 변경 사항을 적용하려면 재부팅이 필요함을 나타냅니다.

서버리스 DB 인스턴스를 프로비저닝된 인스턴스로 변경

Neptune Serverless 인스턴스를 프로비저닝된 인스턴스로 변환하려면 인스턴스 클래스를 프로비저닝된 인스턴스 클래스 중 하나로 변경하기만 하면 됩니다. Neptune DB 인스턴스 수정(및 즉시 적용)을 참조하세요.

Amazon CloudWatch를 사용하여 서버리스 용량 모니터링

에 CloudWatch 를 사용하여 DB 클러스터에서 Neptune 서버리스 인스턴스의 용량 및 사용률을 모니터링할 수 있습니다. 클러스터 수준과 인스턴스 수준 모두에서 현재 서버리스 용량을 추적할 수 있는 두 가지 CloudWatch 지표가 있습니다.

  • ServerlessDatabaseCapacity - 인스턴스 수준 지표로는 현재 인스턴스 용량을 NCUs로 ServerlessDatabaseCapacity 보고합니다. 클러스터 수준의 지표로, 클러스터 내 모든 DB 인스턴스의 ServerlessDatabaseCapacity 값 평균을 보고합니다.

  • NCUUtilization - 이 지표는 사용 가능한 용량의 비율을 보고합니다. 이 값은 현재 ServerlessDatabaseCapacity(인스턴스 수준 또는 클러스터 수준 중 하나)를 DB 클러스터의 최대 용량 설정으로 나눈 값으로 계산됩니다.

    클러스터 수준에서 이 지표가 100%에 가까워지면(즉, 클러스터가 최대한 크게 규모가 조정된 경우) 최대 용량 설정을 늘리는 것을 고려합니다.

    라이터 인스턴스가 최대 용량에 근접하고 리더 인스턴스의 용량이 100%에 가까워지면 읽기 워크로드를 분산하기 위해 더 많은 리더 인스턴스를 추가하는 것이 좋습니다.

서버리스 인스턴스와 프로비저닝된 인스턴스의 경우 CPUUtilizationFreeableMemory 지표의 의미가 약간 다르다는 점을 참고합니다. 서버리스 컨텍스트에서 CPUUtilization는 현재 사용 중인 CPU의 양을 최대 용량으로 사용할 수 있는 CPU의 양으로 나누어 계산되는 백분율입니다. 마찬가지로 FreeableMemory는 인스턴스가 최대 용량에 도달했을 때 사용할 수 있는 여유 메모리의 양을 보고합니다.

다음 예제에서는 Linux AWS CLI 에서를 사용하여 1시간 동안 10분마다 측정된 지정된 DB 인스턴스의 최소, 최대 및 평균 용량 값을 검색하는 방법을 보여줍니다. Linux date 명령은 현재 날짜 및 시각을 기준으로 시작 및 종료 시각을 지정합니다. --query 파라미터의 sort_by 함수는 다음과 같이 Timestamp 필드를 기준으로 결과를 시간순으로 정렬합니다.

aws cloudwatch get-metric-statistics \ --metric-name "ServerlessDatabaseCapacity" \ --start-time "$(date -d '1 hour ago')" \ --end-time "$(date -d 'now')" \ --period 600 \ --namespace "AWS/Neptune" --statistics Minimum Maximum Average \ --dimensions Name=DBInstanceIdentifier,Value=(instance ID) \ --query 'sort_by(Datapoints[*].{min:Minimum,max:Maximum,avg:Average,ts:Timestamp},&ts)' \ --output table