この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
Amazon ELBでAuto Scalingの設定をしている場合、スクリプト等でEC2の自動停止を行なっていても、 最小インスタンス数に設定した数のEC2インスタンスが自動で起動してしまい料金が掛かってしまいます。
運用テスト期間中など使わない時間帯は、ELBからもインスタンスを解放して費用を抑えたい! ってことで、毎日Auto Scaling Groupの紐付けが面倒くさいので、スクリプト化しました。
なんてことない、AutoScallingGroupの、MIN_SIZEとMAX_SIZEを変更しているだけです。
#!/bin/bash
case $1 in
start)
# 最小1、最大2
MIN_SIZE=1
MAX_SIZE=2
;;
stop)
# 最小0、最大0
MIN_SIZE=0
MAX_SIZE=0
;;
*)
echo "Usage: $0 [start|stop]"
exit 1
esac
export JAVA_HOME=/usr/local/jdk6
export AWS_AUTO_SCALING_HOME=/opt/AutoScaling-1.0.39.0
export PATH=$PATH:/bin:$AWS_AUTO_SCALING_HOME/bin
export AWS_AUTO_SCALING_URL=https://autoscaling.ap-northeast-1.amazonaws.com
export EC2_REGION=ap-northeast-1
export AWS_CREDENTIAL_FILE=/home/ec2-user/credential.txt
AUTO_SCALING_GROUPS=`as-describe-auto-scaling-groups | cut -f3 -d ' ' | tr ' ' '\n'`
CMD=as-update-auto-scaling-group
for AUTO_SCALING_GROUP in $AUTO_SCALING_GROUPS
do
echo $AUTO_SCALING_GROUP
$CMD $AUTO_SCALING_GROUP --min-size $MIN_SIZE --max-size $MAX_SIZE
done
後は、起動/停止したい時間帯にcronを設定します。
$ crontab -e
# 平日9:30にELBにインスタンスを紐付ける
30 9 * * 1-5 /home/ec2-user/bin/manage_elb.sh start
# 平日22:00にELBからインスタンスを解放する
0 22 * * 1-5 /home/ec2-user/bin/manage_elb.sh stop
ちなみは、ELB自体の起動/停止はできないので、別途作成/削除のスクリプトをつくる必要がありますが、
料金的には$0.025/時間と安いので、プロジェクトではやってません。。