Dynamic DynamoDB のインストールと使用
目次
Dynamic DynamoDB とは?
DynamoDB をオートスケールできるツールです。
DynamoDB テーブルのプロビジョンドスループットをスケーリングする処理を管理します。
詳しくは以下の記事を参照ください。
Amazon Web Services ブログ: DynamoDBをオートスケールできるDynamic DynamoDBのご紹介
Dynamic DynamoDB 自体は無料で使えます。
Dynamic DynamoDB を構築する環境
Amazon Linux AMI 2014.03.1 - ami-c9562fc8 (64-bit)
Dynamic DynamoDB の構築方法は 3 種類あります。
- pip でインストールして設定などは自分で構築
- git でインストールして設定などは自分で構築
- AWS CloudFormation の Template が準備されているのでそれを使って構築
本エントリーでは「1. pip でインストールして設定などは自分で構築」の方法で構築を行います。
Dynamic DynamoDB のインストール
pip で Dynamic DynamoDB をインストール
$ sudo easy_install pip
$ sudo pip install dynamic-dynamodb
確認
$ pip freeze | grep dynamic-dynamodb
dynamic-dynamodb==1.12.1
Dynamic DynamoDB の設定
Dynamic DynamoDB 設定ファイルの設置
$ sudo mkdir /etc/dynamic-dynamodb
$ sudo vi /etc/dynamic-dynamodb/dynamic-dynamodb.conf
設定ファイルのサンプルは以下のページにあります。
Example configuration files — Dynamic DynamoDB 1.13.0 documentation
Dynamic DynamoDB 設定項目の日本語訳
以下のページにてわずかですが解説しています。
Dynamic DynamoDB 設定値の日本語訳 - 限りなくクラウドに近いオンプレミス
Dynamic DynamoDB の設定で気を付けた方がよさそうな点
check-interval
監視間隔ですね。求められるキャパシティがめぐるましく変わる環境では短めにしておいた方がいいかもしれません。
しかしそうするとスケールダウンの制限 (1 日 4 回) に早めに引っかかってしまう可能性も高まります。
監視の時間帯を制限する maintenance-windows
と併せて使うと吉かもしれません。
他のパラメーターもそうですが,環境に応じた適切な設定値をがんばって導き出す必要がありますね。
ちなみに maintenance-windows は UTC ですので JST を想定して使う場合は -9:00 した時刻を設定しなければならない点に注意です。
Dynamic DynamoDB ログ用ディレクトリーの作成
$ sudo mkdir /var/log/dynamic-dynamodb
ログファイルは以下の 2 種類です。
- service.log
- 起動したとか停止したなどが書き込まれます。
- dynamic-dynamodb.log
- プロビジョニングの変更結果などが書き込まれます。
Dynamic DynamoDB の起動
Dynamic DynamoDB 起動スクリプトの作成
$ sudo vi /etc/rc.d/init.d/dynamic-dynamodb
#!/usr/bin/env bash
### BEGIN INIT INFO
# Provides: dynamic-dynamodb
# Required-Start: $remote_fs $sysa
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
### END INIT INFO
NAME=dynamic-dynamodb
DAEMON=/usr/bin/dynamic-dynamodb
DRY_RUN=$2
DAEMON_START_ARGS="--config /etc/dynamic-dynamodb/dynamic-dynamodb.conf --daemon start"
DAEMON_STOP_ARGS="--config /etc/dynamic-dynamodb/dynamic-dynamodb.conf --daemon stop"
SCRIPTNAME=/etc/init.d/$NAME
SERVICE_LOG_FILE=/var/log/dynamic-dynamodb/service.log
if [ "$DRY_RUN" == "--dry-run" ]; then
DAEMON_START_ARGS="--config /etc/dynamic-dynamodb/dynamic-dynamodb.conf --dry-run --daemon start"
DAEMON_STOP_ARGS="--config /etc/dynamic-dynamodb/dynamic-dynamodb.conf --dry-run --daemon stop"
elif [ "$2" != "" ]; then
echo $2
echo "Second parameter has to be --dry-run and is used only when running start/restart/force-reload commands"
exit 1
fi
# Exit if the package is not installed
[ -x $DAEMON ] || exit 1
. /etc/rc.d/init.d/functions
log(){
timenow=`date +%Y-%m-%dT%H:%M:%S.%N`
echo "$timenow: $1"
echo "$timenow: $1" >> $SERVICE_LOG_FILE
}
error_exit(){
log "$1"
exit 1
}
do_start()
{
if [ "$DRY_RUN" == "--dry-run" ]; then
log "do_start:Dry run mode"
else
log "do_start:Firstly"
fi
log "do_start:Starting $NAME"
daemon $DAEMON $DAEMON_START_ARGS || error_exit "Failed in starting $NAME service"
}
do_stop()
{
log "do_stop:Stopping $NAME"
daemon $DAEMON $DAEMON_STOP_ARGS || error_exit "Failed in stopping $NAME service"
}
case "$1" in
start)
do_start
;;
stop)
do_stop
;;
status)
status "$DAEMON" "$NAME" && exit 0 || exit $?
;;
restart|force-reload)
do_stop
do_start
#*)
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
exit 3
;;
esac
:
$ sudo chmod 700 /etc/rc.d/init.d/dynamic-dynamodb
Dynamic DynamoDB のサービス登録
$ sudo chkconfig --add dynamic-dynamodb
Dynamic DynamoDB の起動
$ sudo service dynamic-dynamodb start
Dynamic DynamoDB の起動 (dry-run モード)
$ sudo service dynamic-dynamodb start --dry-run
dry-run モードで動かすと,スケーリング結果がログファイルに書きだされるだけの動きになります。設定した値で想定どおりの動きをしているか確認後に本番投入したい場合に使えます。
Amazon Web Services クラウドデザインパターン 設計ガイド
- 作者: 玉川憲,片山暁雄,鈴木宏康
- 出版社/メーカー: 日経BP社
- 発売日: 2012/08/02
- メディア: 単行本
- 購入: 15人 クリック: 188回
- この商品を含むブログ (23件) を見る
Amazon Web Services クラウドデザインパターン実装ガイド
- 作者: 大澤文孝,玉川憲,片山暁雄,鈴木宏康
- 出版社/メーカー: 日経BP社
- 発売日: 2013/02/07
- メディア: 単行本
- 購入: 1人 クリック: 15回
- この商品を含むブログ (16件) を見る
Amazon DynamoDB Developer Guide
- 作者: Amazon Web Services
- 発売日: 2013/12/20
- メディア: Kindle版
- この商品を含むブログを見る