異なるリージョンで同じインスタンス・AMIを作成する方法

AWS で HA を考えたときに「本当に日本のデータセンターにサーバーを立てておくだけで大丈夫か?」と不安に思われる方がいらっしゃると思います。(もちろん3つのアベイラビリティゾーン全てがダウンするということは、とても考えにくいですが。)

そこで別の国のリージョンにサーバを立てればいいのですが、異なるリージョン間ではAMIをインポートすることが、少なくとも簡単な方法では提供されていません。例えば、別のリージョン間でインスタンスを二つ立てて、ファイルシステムまるごとリモートコピーする手段がありますが、それがサポート対象となるかは、OS 次第ですし、ちゃんと問題なく動くかどうかは要確認だと思います。

そこで、原点に戻って考えたのが、今回の方法。
AMIを構築する初期段階から、複数のリージョンでインスタンスを立てて、同時にコマンド入力オペレーションを複数のリージョンにあるインスタンスに向けて実行すればいいのではないか?

下記のようなイメージです。
f:id:kenjifunasaki:20121213210346p:plain

これを実際に試してみました。

今回はClient側は、Windows のデスクトップを利用しているので、TeraTerm を使っています。

まずは、Singapore リージョンでAmazon Linuxインスタンスを起動します。
起動後、いつも通りSSHでログインして、コマンド入力できる状態にします。
f:id:kenjifunasaki:20121213210830p:plain
f:id:kenjifunasaki:20121213210950p:plain
次に Tokyo リージョンでも同じバージョンのAmazon Linuxを起動します。当然中身が違うOSのAMIを選択すれば、動作は変わってきます。
二つのターミナル画面が表示されたら、ここで、「コントロール」→「ブロードキャストコマンド」を選択します。
f:id:kenjifunasaki:20121213211429p:plain
これで、以下のような新しいウィンドウがポップアップするので、該当する複数のインスタンスのpublicDNSを選択します。
f:id:kenjifunasaki:20121213212416p:plain
ls や pwd 等のコマンドをブロードキャストのウィンドウで実行してみると、異なるリージョンのインスタンスに、同じコマンドが実行されていますね。

この方法を使って、必要なソフトウェアのインストール、アプリケーションのデプロイ、アップデートを行います。

作業寛容後に、それぞれのリージョンでAMIに保存すれば、完了です。

この方法はあまり情報が載っていなかったので、掲載しときました。(昔は、複数のサーバーで同じスタックのソフトウェアをインストールするときは、この方法を用いてましたね・・。)