Oracle Rac On Amazon EC2 その5 インスタンス利用料をケチる

前回まででOracle Rac On Amazon EC2は構築できた訳ですが、
普通にlargeインスタンスを起動するとマシン1台あたり$0.4/h
今回の構成だと2ノードRAC+iSCSI/OpenVPN用サーバで合計3台 $1.2/hかかってしまいます。(EBS使用量除く)
ちょっと個人の検証用としては割高です。(個人的には$1.0/h以内でRACいじりたい)
そこでスポットインスタンスを使ってみました。

起動したインスタンスは停止時にterminateしてしまいますが、
毎回iSCSIサーバにEBSボリュームをattachすれば、Oracleのデータは永続化可能です。
スポットインスタンスだと、おおむね 1台あたり$0.2/hと半額以内でインスタンスを使うことができます。


やり方としては、Oracle Rac On Amazon EC2 その0からその4まで手順で さらに

1. Oracle RACをEBSマウントしたボリュームにインストールする。
2. Oracle RAC インストール済みのインスタンス(ノード1、ノード2、iSCSI/OpenVPN) からAMIを作成する。
※EBSボリュームはdetachしておきます。
3. 2.で作成したAMIでスポットリクエストする。
4. スポットリクエストで起動してきたインスタンス(ノード1、ノード2、iSCSI/OpenVPN)にそれぞれEBSボリュームをattachする。


ですが、毎回 Management Consoleから3.4.を実行するとメンドクサイのでシェルを組んでみました。


スポットインスタンスをリクエストするシェル(ec2-ami-toolsがインストール済みであることが前提)

#!/bin/bash
ec2-request-spot-instances <ノード1用のAMI ID> -k セキュリティキー -t m1.large -z ap-northeast-1b -p 0.4 -g セキュリティグループ
ec2-request-spot-instances <ノード1用のAMI ID> -k セキュリティキー -t m1.large -z ap-northeast-1b -p 0.4 -g セキュリティグループ
ec2-request-spot-instances -k セキュリティキー -t m1.large -z ap-northeast-1b -p 0.4 -g セキュリティグループ


起動してきたスポットインスタンスにEBSボリュームを割り当て、さらにsshでログインするシェル
iSCSI/OpenVPNの例)

#!/bin/bash
instance=`ec2-describe-instances | grep | grep running`
echo $instance
id=`echo $instance | awk '{print $2}'`
echo $id
ip=`echo $instance | awk '{print $4}'`

ec2-attach-volume <iscsiに割り当てるEBSボリューム> -d /dev/sdf -i $id
ec2-attach-volume <iscsiに割り当てるEBSボリューム> -d /dev/sdg -i $id
ec2-attach-volume <iscsiに割り当てるEBSボリューム> -d /dev/sdh -i $id
ec2-attach-volume <iscsiに割り当てるEBSボリューム> -d /dev/sdi -i $id

ssh -i xxxx.pem "root@$ip"

(ノード1の例)

#!/bin/bash
instance=`ec2-describe-instances | grep <ノード1用のAMI ID> | grep running`
echo $instance
id=`echo $instance | awk '{print $2}'`
echo $id
ip=`echo $instance | awk '{print $4}'`

ec2-attach-volume <ノード1のOracleがインストールされているEBSボリューム> -d /dev/sdf -i $id

ssh -i xxxx.pem "root@$ip"