dynamodb-autoscaling 검증
개요
요 전날 업데이트에서 dynamodb에서 autoscaling 기능이 구현되었습니다.
htps : // 아 ws. 아마존. 이 m / jp / b ぉ gs / 네 ws /
NoSQL 데이터베이스의 벤치마킹 도구인 ycsb를 사용하여 dynamodb-autoscaling의 동작을 확인할 수 있습니다.
이번에는 새로 추가된 항목 '타겟 사용률'이 어떤 영향을 미치는지 확인합니다.
환경 준비
환경 준비에 따라 아래를 참고로했습니다.
h tp : // 쿠이타. 코 m / 노라 훗 / ms / 35 아 956f682b1 아카 475f6
htp : //에서 v.ぁsss d. jp / c / d / a ws / ck_와 _dy도 db_ 우신 g_ycsb /
ht tp // 마이이후 c와 ry. 하테나 bぉg. 코m/엔트리/2013/04/05/010858
아마존 리눅스 버전
[ec2-user@dynamo-ec2 ycsb-0.12.0]$ cat /etc/system-release
Amazon Linux AMI release 2017.03
openjdk-devel 설치
$ sudo yum -y install java-1.7.0-openjdk-devel
ycsb 도입
・ダウンロード
$ wget https://github.com/brianfrankcooper/YCSB/releases/download/0.12.0/ycsb-0.12.0.tar.gz
・展開、移動
$ tar xfz ycsb-0.12.0.tar.gz
$ cd ycsb-0.12.0/
・ファイル用のディレクトリ準備
$ mkdir -p dynamodb/conf/
・ベンチマーク対象テーブル(testtable)のプライマリキーを確認しておく
$ aws dynamodb describe-table --table-name testtable | jq -r '.Table.AttributeDefinitions[].AttributeName'
name
YCSB 개요
테스트 데이터를 dynamodb에 로드합니다.
./bin/ycsb.sh load dynamodb -P workloads/dyamodb -P dynamodb/conf/dynamodb.properties
테스트 데이터를 사용하여 부하를 가한다.
./bin/ycsb.sh run dynamodb -P workloads/dyamodb -P dynamodb/conf/dynamodb.properties
설정 파일은 아래 3가지
■dynamodb/conf/dynamodb.properties
대상 DynamoDB 정보를 설정합니다. 변경하는 부분은 기본 키 정도인가.
자격 증명 정보가 포함 된 파일도 여기에 지정됩니다.
$ cat dynamodb/conf/dynamodb.properties
dynamodb.awsCredentialsFile = dynamodb/conf/AWSCredentials.properties
dynamodb.primaryKey = name
dynamodb.endpoint = http://dynamodb.ap-northeast-1.amazonaws.com
■dynamodb/conf/AWSCredentials.properties
자격 증명 정보를 기재.
$ cat dynamodb/conf/AWSCredentials.properties
accessKey = XXXXXXXXXXXXXXXXXXXX
secretKey = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
■workloads/(임의의 파일명)
투입하는 데이터, 실시하는 벤치마크의 스테이터스를 설정.
값은 템플릿
workloads/workload_template
를 참고.※operationcount는 1,000,000 이상이 좋을까. 10,000으로 실행하면 스케일링하기 전에 끝났습니다…
$ cat workloads/dyamodb
workload=com.yahoo.ycsb.workloads.CoreWorkload #デフォルト
recordcount=1000 #テーブルにセットするレコード数
operationcount=2000000 #load時のオペレーション数
insertstart=0 #デフォルト
fieldcount=10 #フィールド数、デフォルト
fieldlength=100 #レコードの長さ、デフォルト
readallfields=true #デフォルト
writeallfields=false #デフォルト
table=testtable #テーブル名
fieldlengthdistribution=constant #デフォルト
#load時のオペレーション比率(read80%, update15%, insert5%)
readproportion=0.8
updateproportion=0.15
insertproportion=0.05
#以下テンプレートの値のまま設定
readmodifywriteproportion=0
scanproportion=0
maxscanlength=1000
scanlengthdistribution=uniform
insertorder=hashed
requestdistribution=zipfian
hotspotdatafraction=0.2
hotspotopnfraction=0.8
measurementtype=histogram
histogram.buckets=1000
timeseries.granularity=1000
검증 시작
초기 dynamodb 용량 설정
1000 레코드 쓰기 때문에 쓰기 용량 유닛(이하 WCU)을 10 확보.
WCU1이라면 스로틀이 발생해 시간이 걸립니다…
테이블에 테스트 데이터를 로드합니다.
한 번만. 10분 정도 걸립니다.
$ ./bin/ycsb.sh load dynamodb -P workloads/dyamodb -P dynamodb/conf/dynamodb.properties
auto-scaling 설정
드디어 auto-scaling 설정입니다.
RCU/WCU를 낮추는 오퍼레이션은 최대 9회/일이 되고 있습니다만 조건이 있습니다.
↓의 기사를 참고로 했습니다.
h tp : // 쿠이타. 이 m/도 k 같다/있어 ms/6864b8 아 723 아 2728565fc
검증할 때는 낭비하지 않도록 초기값을 고려합시다.
· 타겟 사용률
스케일링의 기준이 되는 값입니다. 이후에 확인합니다.
· IAM 롤
새 역할을 선택하면 괜찮습니다.
다음 관리 정책이 부여된 역할이 생성됩니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"dynamodb:DescribeTable",
"dynamodb:UpdateTable",
"cloudwatch:PutMetricAlarm",
"cloudwatch:DescribeAlarms",
"cloudwatch:GetMetricStatistics",
"cloudwatch:SetAlarmState",
"cloudwatch:DeleteAlarms"
],
"Resource": "*"
}
]
}
역할에서 알 수 있듯이 auto-scaling은 cloudwatch의 값을 평가 기준으로 사용합니다.
auto-scaling 구성 중에는 동적 cloudwatch 메트릭이 만들어지고 auto-scaling 구성 해제 후 삭제됩니다.
타겟 사용률 70%인 경우
아래 설정에서 cloudwatch의 변화를 확인하세요.
auto-scaling 설정
RCU
WCU
타겟 사용률(%)
70
70
min(유닛)
10
10
max(유닛)
10000
10000
용량의 변화
추이는 아래와 같이
RCU
WCU
타겟 사용률 20%인 경우
아래 설정에서 cloudwatch의 변화를 확인하세요.
auto-scaling 설정
RCU
WCU
타겟 사용률(%)
20
20
min(유닛)
10
10
max(유닛)
10000
10000
끝에
부하가 걸리는 방법이 일정한 경우는 용량의 증감이 안정되면 변화하지 않으므로,
그 근처의 조정이 필요하다고 느꼈습니다.
cloudwatch 메트릭은 동적 값으로 만들어지고 기준이 되어 스케일링됩니다.
서포트에 확인한 바, 역치를 넘어의 캐패시티 설정도 할 수 있다고 합니다만, 그 경우는 다음의 타이밍으로 스케일 되어 버린다고 하는 것입니다(미 검증).
Reference
이 문제에 관하여(dynamodb-autoscaling 검증), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/lawliteqed/items/d5d726e73803b891bb57텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)