一時的にMulti-AZにしてフェイルオーバーしたRDSのAvailability Zoneを元にもどす一番簡単な方法(TGI Multi-AZ Pattern)

記事タイトルとURLをコピーする

こんにちは、顔抜きジャーナリストのアカツカです。

私はサーバーワークス東北リージョン担当で、普段はクラウドの恩恵をフルに受けて山形や仙台を中心にリモート勤務をしています。
「クラウドで、東北を、もっと、はたらきやすく。」をモットーに活動しておりますので、どうぞよろしくお願いいたします。
なお、「顔抜きジャーナリスト」が何か知りたい方は、ぜひAWSのユーザーイベントにご参加下さい。

さて、AWSの計画メンテナンスでRDSインスタンスの再起動が行われる場合、別々のデータセンター間で同期レプリケーションされたMulti-AZ構成ではなく、単一拠点でのSingle-AZで運用していると、再起動中はサービスが停止してしまうことがありますよね。
せっかくクラウドを活用しても、これでは可用性の面でオンプレミスの時と変わりありません。

しかしAWSでは一時的にSingle-AZからMulti-AZに切り替えることで、非常に簡単に問題回避が可能なのです。
ということで、さっそくSingle-AZ -> Multi-AZ -> Single-AZを体験してみましょう。
名付けて、都合のいい時だけMulti-AZするパターン(TGI Multi-AZ Pattern)!

パターンの概要

ManagementConsoleからメンテナンスが計画された期間だけMulti-AZを適用して、メンテナンスが終了したらサクッとSingle-AZに戻します。

ポイントは、「AWSの計画メンテナンスとして予定された時間に発生する5分程度のサービス停止を回避し、「ユーザーの都合の良いタイミングに2分程度の停止を伴う作業」にできる点です。

注意する点として、Single-AZに戻す際に自動フェイルオーバーしたMasterのAvailability Zoneを「元々稼働していたAvailability Zoneに戻す」ことがあります。

理由はSingle-AZでシステムを構成する場合は、EC2などのリソースも同じAvailability Zoneにあると思われますので、そのままだと元の構成に比べてレイテンシーが高くなることと、Availability Zoneをまたいだデータ転送には別途転送料が発生するためです。

また、アプリケーション側ではフェイルオーバー時に処理が異常終了しないように、データベースとの通信ができない場合を考慮した設計になっていることも大事です。

手順


1.メンテナンス前にSingle-AZからMulti-AZに変更します。
※ この設定変更に伴うダウンタイムは発生しません。

「ManagementConsole」の「RDS Dashboard」で、Instancesの画面を表示させ、対象のインスタンスを選択して、画面上にある「Instance Actions」から「Modify」を選択します。

pic2

2.Modify画面で、「Multi-AZ Deployment」の項目を「No」から「Yes」に変更します。
pic3

3.Modify画面の下にある「Apply Immediately」を選択して「Continue」をクリックします。
pic4

 

4.Instanceの一覧に戻り、今変更を加えたInstanceの「Status」が「modifyng」になっていることを確認します。
pic5

 

5.Instanceの「Status」がグリーンの「available」になったことを確認して、Instanceの詳細を確認してみましょう。

Multi-AZが有効化されて、今稼働しているMasterのインスタンスと、Failover先のSecondaryのインスタンスが確認できます。

pic6

 

6.AWSの計画メンテナンスが実行されたら、RDSインスタンスが自動的にFailoverしたことを確認します。

Failover先のSecondaryのインスタンスがMasterに昇格しています。
pic9
 

7.メンテナンスが完了したら、InstanceをSingle-AZに戻す前にすることがありますね。

そうです、Availability Zoneを元にもどしましょう。
対象のインスタンスを選択して、画面上にある「Instance Actions」から「Reboot」を選択します。
※ Failoverには1〜2分ほどのダウンタイムが発生しますので、本番サービスではメンテナンス時間を設けた方がよいでしょう。
参考:AWS FAQページ
http://aws.amazon.com/jp/rds/faqs/
pic7


Reboot画面で、「Reboot With Failover」にチェックを付けて、「Yes, Reboot」をクリックします。
pic8

 

8.Instanceの「Status」が「rebooting」になりますので、「available」になるまで待って、Instanceの詳細を確認しましょう。

Masterのインスタンスがメンテナンス前のAvailability Zoneに戻りました!
pic10

 

9.それでは再びSingle-AZに戻します。

Instancesの画面を表示させ、対象のインスタンスを選択して、画面上にある「Instance Actions」から「Modify」を選択します。これはもう大丈夫ですね?

Modify画面で、「Multi-AZ Deployment」の項目を「Yes」から「No」に変更し、Modify画面の下にある「Apply Immediately」を選択して「Continue」をクリックします。
pic11

「Apply Immediately」を選択

pic4

 

10.Instanceの「Status」がグリーンの「available」になると、Multi-AZの状態が「No」になっています。

これでTGI Multi-AZ Patternは完了です。
pic12

いかがでしたでしょうか。
 

RDSではSingle-AZ -> Multi-AZの配置が簡単にできますね。
そして何よりも、AWSではある機能が停止してもシステム全体が停止しないようなFault Tolerance(フォールトトレランス)の構成が非常に簡単でスピーディーかつリーズナブルに手に入ります。

本番で運用されるシステムの場合はぜひMulti-AZ配備を選択して、お客様により多くの感動体験をお届けできるインフラストラクチャを目指してみてはいかがでしょうか。

ではまた!