インスタンスの稼動ロケーションを指定する
「Amazon EC2」にはインスタンスが稼動するロケーション(地域)を明示的に指定できるオプションがあります。
このオプションを使えば、複数のゾーンにアプリケーションを分散配置させることができ、万が一の災害時もサービスを継続させる仕組みが構築可能です。こういったアプリケーションの分散配置はこれまで資本力のある大企業にしかできませんでしたが、「Amazon EC2」ではこのオプションを使用しても追加費用などは特にかかりません。個人でも分散配置が実現できるようになりました。
では、実際に使用する方法を紹介したいと思います。
ゾーンの確認
まずは、下記のコマンドを実行して、ゾーンの一覧と状態を確認します。
$ ec2-describe-availability-zones AVAILABILITYZONE us-east-1a available AVAILABILITYZONE us-east-1b available AVAILABILITYZONE us-east-1c available
実行結果から、3カ所が利用可能であることが分かります(2008年12月現在)。具体的な場所は不明ですが、米国でそれぞれ離れた場所にあるとされています。
2008年12月10日、「Amazon EC2」のインスタンスが上記のアメリカ東海岸3カ所に加え、ヨーロッパ(欧州)西部2カ所で稼動可能になったと発表されました。ヨーロッパで稼動させる場合、環境変数をセットするか、ec2コマンドにオプションをつける必要があります。しかし、基本的な操作方法はアメリカで稼動させる場合と変わりません。以降では、ec2コマンドのデフォルトであるアメリカで稼動させることを前提に解説していきます。
ゾーンを指定してインスタンスを起動する
ゾーンを指定してインスタンスを起動する方法は簡単で、通常の起動コマンドec2-run-instances
に-z
オプションを付け、ゾーン名を指定するだけです。
$ ec2-run-instances ${AMIのID} -k ${ログイン時に必要となるキー} -z ${ゾーン名}
${ゾーン名}
の部分は、先ほど確認したゾーン(us-east-1a
など)を指定します。どこのゾーンで稼動しているかは、インスタンスの状態を表示するおなじみのec2-describe-instances
コマンドで確認できます。
$ ec2-describe-instances RESERVATION r-8e0eaae7 xxxxxxxxxxxx default INSTANCE i-2222944b ami-2b5fba42 ec2-75-101-200-115.compute-1.amazonaws.com domU-12-31-39-02-62-31.compute-1.internal running fedora_test 0 m1.small 2008-11-15T17:56:25+0000 us-east-1b aki-a71cf9ce ari-a51cf9cc
INSTANCE行の最後から3つ目の列で稼動ロケーションを確認できます。このように稼動させたいロケーションをインスタンスの起動時に指定するだけで、簡単にアプリケーションの分散配置を実現させることが可能です。
なお、アプリケーションの分散配置を行う場合、構成によってはデータのミラーリングなどでインターコネクトの帯域を大きく必要とすることがあります。その際、各ロケーション間のネットワーク帯域が気になるところですが、私が以前測定したところ、約300Mbpsもの転送速度を計測しました(参考リンク「Amazon EC2/S3を使ってみた - 7.Availability Zoneサービスで稼動ロケーションを指定する」:RX-7乗りの適当な日々)。測定方法に多少の偏りはあるかと思いますが、大規模のサービスでない限り、この速度であれば異なるゾーン間で冗長構成を組んでも問題にはならなさそうです。
その他にも、うまく配置すればロードバランサの利用やDBの二重化、APサーバの水平分散などさまざまな活用の可能性を秘めています。ただし、転送速度のサービスレベルは保障されていないので、その点は注意が必要です。