前の記事 ≪:2011年1月26日 管理人のブックマーク
次の記事 ≫:PHPでprint_rやvar_dumpよりリッチな折りたたみ出来る変数出力が出来る「ki...

Amazon EC2を使う前に知っておきたいこと色々

2011年01月27日-はてなブックマーク

スポンサード リンク
[PR] 日々膨大に出現するJS/CSSライブラリ等を意識にとどめておく方法
Amazon EC2を使う前に知っておきたいこと色々。



仕事でEC2を使っているのですが、やって見る前に思い描いていたことと、実際にやってみると相違があったりしました。やる前に知っておくといいことをまとめてみました。 EC2を使う予定の方は参考まで。

それでは早速。

インスタンスの 32bit か 64 bit に注意する
EC2では負荷が高くなったらハイスペックなインスタンスに変えればいいというのがありますが、32bitのOSイメージを64bitのインスタンスに入れることは出来ません。
最初はsmallインスタンス(最近ではmicro)から始まると思いますが、32bit でいうとハイスペックなもので High CPU のインスタンスまでになっています。それ以降は64bitなので、そこで環境を作り替えないといけなくなります。
とはいえ64bit環境はLargeからで安いとはいえないので、ここの部分を考慮しておく必要があります。
インスタンスタイプ一覧

インスタンス立ち上げ毎にグローバルIPが変わる
固定IPを使うオプションがありますが、月1000円程度かかるのと(関連付けておけば無料でした)、インスタンスに対して、関連付けの操作 or コマンドが必要になります。
それほどインスタンスが停止するということはありませんが、とっておいてDNSに関連付けしておくのが無難です。

転送量費用がバカにならない
アクセスの多いサイトでは、転送量が大きくなりますが、1Gbpsあたり$0.1とあなどっていると痛い目にあいます。インスタンス自体のレンタル料の方が安い場合も多いようです。
画像やCSS、JSなどのスタティックなデータは国内の転送量無制限なサーバを借りてそこに置くのも一つの方法です

フルバックアップは簡単?
マシン全体を簡単にバックアップできるイメージだったのですが、実は違います。
インスタンスを起動すると、/ と /mnt パーティションに別れており、/ は 10GBしかありません。/mnt に大容量のディスクがおいてあるのですが、フルバックアップは / の 10GB しかできません。ec2のコマンドがそうなってるみたい。/mnt 自体のバックアップを取る場合、/ebs を借りてそこにバックアップを取りますが ebs は GB 単位の月額と IO発生数による課金がされるので ebs に大して書き込みをガリガリやるとその分課金額が大きくなりますので注意。
あと、ebs自体のスナップショットであれば、サイズがどれだけあってもそのまま取ることが可能です。

最大で凄いモンスターマシンが使える
現時点で、次のようなスペックの化物マシンが使えます。こんなマシンが使えるところは国内のレンタルサーバ屋さんにはないのではないでしょうか?一時的に計算用に立ち上げて1時間130~170円ぐらいで使える

●インスタンスその1
High-Memory Quadruple Extra Large Instance
68.4 GB of memory
26 EC2 Compute Units (8 virtual cores with 3.25 EC2 Compute Units each)
1690 GB of instance storage
64-bit platform
I/O Performance: High
API name: m2.4xlarge

●インスタンスその2
Cluster Compute Quadruple Extra Large Instance
23 GB of memory
33.5 EC2 Compute Units (2 x Intel Xeon X5570, quad-core “Nehalem” architecture)
1690 GB of instance storage
64-bit platform
I/O Performance: Very High (10 Gigabit Ethernet)
API name: cc1.4xlarge

とりあえず、こうしたマシンへのスケールアップで一台だけで, それなりのトラフィックを捌けるようになってます。

auto-scalingで即座にスケール?
オートスケーリングという便利な機能があって、すぐにマシンを立ち上げて急増したトラフィックを捌けるというイメージでしたが実際はちょっと違います。
Yahoo!ニュースに載ったりでアクセスがどかっと増えた場合に、ダウンタイムなしで切り替えられると思っていたのですが、インスタンスの立ち上げに数分かかる場合があるのでダウンタイムなしというのは難しいです。ただ、数分でインスタンスを構築できるサービスはこうしたクラウドサービス以外では無理ですね

あらかじめスケールすることを前提としたプログラミングをする必要あり
auto-scalingでマシンを増やせば簡単にスケールアウトするわけでは当然なくて、そのように予めプログラムを作っておく必要があります。
イメージ自体も、OSの立ち上がりと同時にプログラムのデータなんかを配置しなければいけません。例えば、/ には 10GB しか入らないため、データなどをローカルに保存している場合だと、/mnt 以下へのデータ再配置が必要です。
この場合、データのコピーだけで時間がかかるので、予めスケールを前提としたプログラミングをし、ストレージ用のマシンはMySQL等で、TCP/IP で接続して格納・操作できるようにしておく必要があります。
(データを持たないようなサービスの場合はインスタンスを水平に並べるだけでOKだったりもします)

レスポンスはそんなに遅くはない
USの西海岸でもそんなに遅くないので、よほどGoogle等のようにレスポンスタイムにこだわりがなければ実利用で問題は感じない。
マッシュアップとかで海外のAPIを使っている場合は特に、どのみち海を超えるので、気にしなくていいです。
モバツイさんなんかを開いてみると問題ないことが体感できるはず

日本にamazonデータセンターができたら使う?
東京DCが開設しました。今のタイミングだと東京DCで起動した方が良さそう。
あくまで想像ですが、日本にデータセンターができても当初は少し価格が高いことが予想されます。
そのうち安くなるかもしれませんが、1インスタンスあたりの年間でいくと大きな価格差が出てくる可能性があるので待つ必要はないと思います。
但し、データセンター間の移行は転送速度等を考えると面倒な場合もあるのでご注意。

amazon全部に任せすぎない
まだebsのデータがふっとんだということは聞いたことはないですが、もし仮に飛んだ場合を考える(複数のマシンにレプリケートされているそうで大分安全とは思いますが)。amazonにしかデータがなかったら、万一amazonのデータセンターごと吹っ飛ぶような出来事があったらデータはなくなります。s3という保存先もありますが、いざという時のことを考えて重要なプログラムのリポジトリは別セグメントにも持っておいたほうがよさそう。
amazonが飛ばなくても侵入されて rm * されたりebsやスナップショット、s3のイメージ消されたりという可能性もゼロじゃないです。いくらamazonが生きててもこれをやられちゃうと復旧は難しいですよね。

課金はクレジットカード
クレジットカード課金しか現状できないので、注意が必要です。
あと、費用はドル建てで計算されるので円高の今は有利に使えます
追記) 日本のアマゾンにお願いすれば請求書の発行が可能だそうです

再起動でデータが消える?
これは誤解が多いらしいのですが、インスタンスを終了しない限りデータは消えません。
ただし、計画停止や不慮の停止等に備えてebsやs3にデータのバックアップはとっておいたほうがいいです。

同一データセンター間の通信速度は超速い
マルチインスタンスでサービスを構築する際にも問題のない速度になっています。
iperfでの速度はインスタンス間で345.6Mbpsとして計測されています 詳細はこちら

まれにハードウェアの故障により停止されます
私は経験はないのですがハードウェアの障害により?時に停止しますというメールが届くことがあるそうです。
詳細はこちら

ebsについて
あと、外付けでインスタンス停止しても消えないebsディスクについて。ebs自体は複数のマシンにレプリケートされる安全性の高いディスクです。
1GB~1TBまで、管理画面等からサイズを指定して作成、マシンにattachできるものです。
動的サイズ変更はできないので最初からある程度大きめにしておいてもOKです。使った分しか課金されないはずです

ebsは遅い
Extra Large でのローカルディスクと、EBSの速度を比較した場合、EBSは20%ぐらいしか速度がでないというベンチ結果があります。
そもそも、Extra Largeのディスクが速いということもありますが、ディスクの速度が求められるアプリケーションを使う場合は、ある程度考慮しておくとよさそう。
詳しくはこちら

ebsは一台からしかマウント出来ない
複数のマシンからの共通のディスクにして使えれば便利と思っていましたができません。

ebsでraidが組めて高速化できる
ディスクを複数立ち上げてRAIDで高速化可能。でも標準のスナップショットによるバックアップは出来ない
組み方はmdadm コマンドを使ってやるみたいです。RAID0、RAID5、RAID10 等を複数台で組めます→具体コマンド例

ec2でサービスするとものすごい精神的安定をもたらしてくれる
これは想像通りというか想像以上だったのですが、安心感をもらたらしてくれます。
サービスが負荷で落ちている時は非常に嫌な気分になりますし、会社の場合は売上もロストします。でもEC2ならいつでもスペックをあげられますし、いつでもマシンを追加できます。
高そうだから使う機会がない、と思う方も最近では1時間2円(マイクロインスタンス)で使えるので是非一度は使っておいていいサービスだと思います。
一度環境を構築したら、s3にOSイメージをバックアップしておいてインスタンスを落とせば、好きな時に再開できます(s3利用料はかかりますが微々たるものです)

間違いありましたらTwitterやメールでお願いします。すぐ修正します。

関連エントリ

関連の記事検索:amazon, ec2, amazon ec2, クラウド, aws, サーバ
スポンサード リンク

By.KJ : 2011年01月27日 09:08 livedoor Readerで購読 Twitterに投稿

間違いの指摘をしていただける方はメール、あるいはTwitter/FBでお願いします(クリック)