MyCSS

2010/06/21

Amazon EC2は、まれに「計画停止」されます はてなブックマークに追加

Amazon Web Serviceを暫く運用していると、突然Amazon EC2 Teamより、下の様なメールが送られてきてびっくりする事があります。

Hello,

We have noticed that one or more of your instances are running on a host degraded due to hardware failure.

i-12345678

The host needs to undergo maintenance and will be taken down at 12:00 GMT on 2010-06-XX. Your instances will be terminated at this point.

The risk of your instances failing is increased at this point. We cannot determine the health of any applications running on the instances. We recommend that you launch replacement instances and start migrating to them.

Feel free to terminate the instances with the ec2-terminate-instance API when you are done with them.

Sincerely,

The Amazon EC2 Team

これは、「あなたの使っているi-12345678というEC2インスタンスは、ハードウェアの障害により2010-06-XX 12:00 GMTにターミネイトされます」というものです。
つまり、予告された時刻にAmazon側で該当するEC2インスタンスを落としてしまうという事です。

これはEC2で運用しているなかでどうしても避けられません。JAWS-UGへの投稿にもありましたが、自分は最初にこの手のメールを受け取って、かなり驚きました。

EC2の計画停止
Google App EngineやForce.comのようないわゆるPaaS環境ですと、計画停止があったとしてもこちらは何もする事がありません。(と言うか、何も出来ません。)ですが、IaaS環境であるAWSの場合、EC2インスタンスがどのように構築されているか、使う人によって様々なので、計画停止の場合の対処方法はケースバイケースになります。

ごく一般的には、

  • 警告されたEC2インスタンスは落として、事前に用意しておいたAMI(Amazon Machine Image)から新しくインスタンスを立てる

というのが一般的だと思います。・・と言う事は、AMIは必ず取っておく必要がありますね。

AMIがないと、最初から環境を構築して行くはめになります。また、取ってあったとしても、最新のAMIがなくて焦る・・なんていうケースも考えられます。(それ自分?(笑))

AMIを取っておくのは結構面倒な作業ですが、このように強制的にターミネイトされる場合もありますので、めんどくさがらず、要所要所でAMIを取っておきましょう!

この辺は以外と知られていない事実だと思います。EC2を使い始めた方々が「びっくりされないよう」に、エントリに起こしておきました(笑)

追記:
  • このメールが来てからAMIを取得し、別途起動させても接続出来なかった、という例があったようです。http://twitter.com/hashiva/statuses/16687702743 @hashivaさんありがとうございます!
  • 昔のブログにも同じ事書いてました。記憶力の減退が露呈しております。http://d.hatena.ne.jp/toolkit/20090821/p1
  • 「計画停止」と言っても、あるリージョンの該当するインスタンスだけです。当たったらラッキーだった、とでも思いましょう(笑)
関連:

2010/06/15

第2回 AWS User Group Japan 勉強会でライトニングトークしてきました はてなブックマークに追加

第2回 AWS User Group Japan 勉強会でライトニングトークしてきました。
スライドはこちらです。問題あるコマは問答無用で外してあります(笑)

今回LTをして思った事
本編の方のLTで、Amazon SNSを使った事がある人は?という事でアンケートをとりましたが、見事に0名でした。まぁ、そうは言っても、実はちょっと試したという人が数名いるとは思いますが(笑)、いずれにしても知名度が低い事はよーく分かりました。まぁ、SNSのヒトバシラーになって、自ら好んで恥をさらしたプレゼンで、皆さんに何らかの印象が残れば、それで御の字かなぁ?と思っています。

SQSに関しても150名いた会場の中で、わずか数名いらっしゃる程度で、まだまだ認知度が低いです。そもそも、この手のメッセージングAPIは用途が限られるのかもしれません。でも、このようなメッセージングシステムを間において、各システム間を祖結合に作ると、相互依存性が無くなる為にシステム全体がシンプルになるだけではなく、運用がとても楽になるというのが一番のメリットなんじゃないかな?と考えています。

さらにいうと、AWSはEC2とS3だけじゃないという事を、もっと知ってもらいたいです。1 AWSユーザーとしての経験からすると、IaaSの領域を超えた周辺のサービスは、非常にシンプルだけれどもポイントを押さえて作ってあるので、実戦投入させやすいです。

例えばSQSは、非同期のシステムを作りたいというニーズに即座にマッチします。RDSというMySQLサーバーを即座に使えるサービスは、今まで運用管理で苦しめられていた人達を解放するサービスです。(私はまだ解放されていませんが、これから解放される予定ですw)

なぜ、Amazonの中の人でもないのに、宣伝みたいなことを言うのか?というと、単純に利用者が増えると、規模の経済が働き単価が下がる可能性が大きいからなんです。実際、AWSは日に日に機能が充実していってますが、過去一度も値上がりした事がありません。これからも無いとは言い切れないですけれど(笑)。この点は、利用者にとって最も嬉しいポイントじゃないでしょうか?

そうはいっても、SNSを使って10万通メール送って、2ドルですから、これ以上安くなっても・・ってな話もありますが(笑)

Amazon SNSの事に関しては、別のエントリを起こします・・

しかし、前回もそうでしたけど、富士ソフトさんのこの会場は素晴らしいです。各テーブルに電源とLANがあるなんて素晴らしすぎます。今回はさすがにiPad使ってらっしゃる方が大勢いましたね。次回はさらに増える予感。
※ちなみに、会場の無線LANは混雑するので、LANケーブルで繋いだ方が快適ですよ。

今回は日経BP社 中田さんのプレゼンがすごく良かったです。2010年7月7日号の日経コンピュータは楽しみです。
また、米国よりエバンジェリストのJeff Barrさんも講演をしてくれました。トイレですれ違った時も、あのスマイルでした!


当日のUstream録画はこちらです。

2010/06/01

Amazon SNS自腹実験人柱サイト、AWSWatch をリリースしました。 はてなブックマークに追加

Amazon Web Serviceを監視して、異常があったらAmazon Simple Notification Serviceを通してメールで通知するサイト、AWSWatchを作ってみました。 ロゴがいかにもやっつけでダッサイですけど。

作った動機
あまり大きな声で言いたくないのですが(笑)、2010年5月、立て続けにUS-EASTで障害が発生しました。


一発目はゴールデンウィーク中の5月4日で、こちらのブログでも言及されている通り、一部のEC2インスタンスが結構長い間ストップしてしまいました。個人的にも仕事で使っているインスタンスのうち1台が、外部からの強制リブートがかかった形跡を確認しています。

通常サービスを立てる際は、サーバーの監視というのをやると思いますけど、仮にトラブルが発生した際、原因がアプリケーションなのか、OSなのか、それとももっと低レイヤーのハードウェアなのか?という切り分けをするかと思います。そう言った事をクラウドでやろうとすると、ハード的な部分はそもそも仮想化されているので、直接見る事が出来ません。見えたところで、どうしようもないのですけど、基本的にはクラウドベンダーが公開する障害情報を頼りにするしかありません。

AWSであれば、Service Health Dashboardで随時確認する事が出来ます。ですがこのサイト、ぱっと見キレイにまとまって見やすい感じがしますが、いざ問題があった時、時系列を追うのが結構厳しいです。基本的にはRSSフィードを見てね、という作りでちょっと不親切です。また、時間表記が太平洋時間だったりしますので、日本人的には結構つらいものがあります。だいたい、障害があった時は、基本的に「心の余裕」がありませんので、この作りはあまりいただけません・・。

というわけで、
  • 障害があったらメールを受け取りたい
  • 自分の好きなタイムゾーンで時刻を表示したい
という事がやりたくて、AWSWatchを作りました。

Heroku
開発は帰宅してから空いた時間でボチボチと作っておりました。Amazon SNSのRubyクライアントを作る所から始めたので、なんだかんだで二週間くらいかかりました。完全に個人で運用するサイトですので、最初はお金のかからないGoogle App Engineを使おうかと思いましたが、一番手になじんでいるのがRailsですし、以前から興味があったHerokuを使ってみようと思い、あまり深く考えずにチョイスしました。

このHerokuですが、RubyでWebアプリが書ける人であれば、即利用可能です。herokuのGemをインストールして、gitが使えれば、こんな感じでサービスを公開出来ます。
gem install heroku
rails awswatch
cd awswatch
git init
git add .
git commit -m "First Release!"
heroku create
git push heroku master
gitでpushした時点でdeployが完了した事になります。

マイグレーションは
heroku rake db:migrate
consoleは
heroku console
とやれば、
script/console production
をやっている事になります。スバラシイ!!

Herokuに関しては、この辺を参考にさせていただきました。

個人的にここが素晴らしい!と思った点は、
  • 基本的に無料
  • Gemを入れるだけという気軽さ
  • Deployが簡単
  • SSLが無料で使える
  • 独自ドメイン使用可能
  • Add-onが充実している

特にAdd-onに関しては、
  • New Relicというアプリケーションモニターが利用可能
  • Exceptionalという例外を通知してくれるサービスが利用可能
  • Amazon RDSも利用可能!(RDSの利用料はかかります)
あたりが個人的にポイント高いです。

ただし、無料の範疇だとスレッドは1つですので、トラフィックが多いサイトになると厳しいです。その辺りが気になる方は、今のところGoogle App Engineが最強か?と思います。(Rubyだと厳しそうですが・・)

Amazon Simple Notification Service(Amazon SNS)
2010年4月5日に、Amazon Simple Notification Service(Amazon SNS)というサービスがリリースされました。(参考:アマゾン、クラウドサービスにメッセージ送信機能「Amazon SNS」を追加 - CNET Japan

Amazon SNS・・・実に誤解をはらみそうなネーミング(笑)ですが、SQS同様メッセージングサービスという事で、かゆいところに手が届く的なサービスになっています。

SNSとSQSの違いは、プッシュとプルの違いでしょうか。SNSはメッセージをEMail、HTTPなどに配信します(プッシュ)。SQSは、メッセージをQueueに取りに行く必要があります(プル)。SNSで真っ先に思いつくところとしては、メールの一斉配信です。これを自前でやろうとしたら大変な事は容易に想像出来ますが、その大変な部分をAmazonが肩代わりしてくれるという、非常にAmazonらしいサービスになっています。しかも、例によって激安です。メールは10万通送信しても、たった2ドルです。

この部分だけを見ると、スパマーにもってこいのサービスじゃね?と一瞬思ってしまいますが、そこはちゃんとしています。ユーザーがメールの配信を希望する(Subscribe)と、SNSは、ユーザーに確認メールを自動送信します。そのメールの中に書いてある確認用のリンクをクリック(Confirm)すると、はじめてメールが送信されるようになります。



まだ出たばかりのサービスですので、API的にもちょっとこれは・・という点がなきにしもあらずですが、それは今後の充実に期待!という事で。SNSに関しては、また追って記事を書きたいと思います。

突っ込み所が満載な件
という訳で、サービスはHerokuに置いています。識者の方はここで「?」となるはずです。
公開前日に発覚した、驚愕の事実がございます(笑)


Herokuが完璧なまでにEC2に乗っかっておりました!知りませんでした !(^^)! 事前に調べておけよ、って感じですが、HerokuにAmazon RDSのAdd-onがある時点で「?」と思うべきでしたね。監視のサービスが落っこちたら監視になりませんので、別のインフラに載せるのがエンジニアの嗜みですけど、最初から躓いてますね・・まぁ、そのうち気が向いたらGoogle App Engineにでも移行して、反省の意を表明したいと思います(笑)。でも、そもそもメール通知にSNSを使っている時点で企画倒れな様な気もしますね・・。