Amazon EC2

Share/Save

Amazon EC2 Spot Instances をウェブサーバに使う

Spot Instance は通常のインスタンスの約1/3の価格で使える激安サーバ。入札価格を超えるとインスタンスが停止してしまうので、ウェブサーバには使えない。データ処理などの非同期で、今すぐじゃなくていいけどいつかは動いてほしいような処理に適している。ウェブサーバは、いつ来るかわからないユーザからのリクエストに応えなくてはならないので、スポットインスタンスのような動いたり止まったりするサーバには向かない。

でも激安なのだから、ウェブサーバにも使ってみよう、と思い立ってやってみた。どうするか。入札価格を通常のインスタンスと同じ(今回は$0.085/hour)にしてみるのである。通常のインスタンスの価格を超えないという保証はまったくないが、そこまで価格が上がることも、そう度々あるもんじゃないだろうと前向きに考えている。入札価格で課金されるわけではない。あくまでも時価で課金される。極端な話、1時間あたり$100で入札しておけば、まず落ちることのない、それでいて常にスポットインスタンス価格のサーバになる(と期待している)。

1時間あたり2~3円のサーバ : Amazon EC2 Spot Instances

2009年12月14日、Amazon は新しい価格体系の EC2インスタンス「スポットインスタンス」をアナウンスした。株価のように価格が変動するインスタンスで、ユーザが決めた入札価格がその時点の価格を上回っている間、インスタンスが起動し続ける。

驚きなのはその価格。直近の履歴を見ると、1時間あたり$0.026~$0.035あたりを変動している。つまり、1時間2-3円程度でサーバが借りられる。1ヶ月起動し続けたら2000円くらい。

spot_pricing_history.png

ユーザのリクエストを直接処理するウェブサーバやデータベースサーバに使うのは難しいが、いつ動いてもいいような処理なら劇安でこなせる。例としてAmazonは、画像・動画処理、科学技術計算、金融分析などへの利用を勧めている。ウェブアプリケーション本体に使うことはできなくても、溜まったデータをバッチ処理して利用状況を集計するなどの用途には問題なく使える。

今までの EC2 だけでも価格破壊だったのに、リアルタイム性を要しないデータの処理コストが、さらに1/3に下がった。コスト急減の影に新しい商売あり。うまい適用分野さえ見つければ、ビジネスの種になりそう。

Spot Instance をリクエストする。1時間あたり $0.028 で。
request_spot_instances.png

amazon_ec2_spot_instances_detailed_usage_charges.png

XFS on LVM (on Amazon EC2)

Amazon EC2 で、XFS を LVM で使おうとしたけど、EBS のスナップショット機能があることを考えると、LVM は余計だった。ということで、意味は薄れたけど、以下、メモ。

■ LVM の設定
○ 物理ボリュームをつくる
# pvdisplay
# pvcreate /dev/sdg
 Physical volume "/dev/sdg" successfully created
# pvdisplay
 "/dev/sdg" is a new physical volume of "100.00 GB"
 --- NEW Physical volume ---
 PV Name               /dev/sdg
 VG Name
 PV Size               100.00 GB
 Allocatable           NO
 PE Size (KByte)       0
 Total PE              0
 Free PE               0
 Allocated PE          0
 PV UUID               G8RURy-DVjh-h6Vv-Fjh4-oKnn-3Bwj-VyO3l1

ec2-bundle-vol を ruby 1.9 で使えるようにする

Amazon EC2 上の CentOS5 で使っていた ruby-1.8.5 を、ソースからビルドした ruby-1.9.1 に入れ替えたら、ec2-bundle-vol が動かなくなった。

元はといえば、gem の ruby-aaws を使いたくてインストールしようとしたら、ruby 1.8.7 以上を要求してきたことに始まる。hpricot-0.8.1 が 1.9 以上を要求していたはずだから、ついでに 1.9 にしてしまおうとしたのが運の尽き、amitools が動かなくなった。

Copying / into the image file /mnt/image1-20090621-0223...
Excluding: 
         /proc
         /sys
         /dev/pts
         /proc/sys/fs/binfmt_misc
         /dev
         /media
         /mnt
         /proc
         /sys
         /vol
         /mnt/image1-20090621-0223
         /mnt/img-mnt
1+0 records in

ec2-bundle-volume で特定のディレクトリを除く

ec2-bundle-volume で /tmp をバンドルしないようにしたら、起動後のインスタンスの /tmp ディレクトリのパミッションがおかしくなっていた。

■ -e で exclude
ec2-bundle-vol -d /mnt --fstab /etc/fstab.bundled -k $EC2_PRIVATE_KEY -c $EC2_CERT -e /vol,/tmp -u $ACCOUNT_NUMBER -r $ARC -p $IMAGE_NAME

■ /tmp をバンドルからはずしたら
drwxr-xr-x  4 root root   4096 Jun  9 12:49 tmp
 
■ 本当はこうなっていて欲しい
drwxrwxrwt  7 root root  12288 Jun  9 12:24 tmp

なので、/etc/rc.d/rc.local の最後に、パミッション変更処理を加えてみた(CentOS 5)。

chmod 1777 /tmp

Syndicate content