Amazon RDS for Db2ではMulti-AZによる高可用性(HA)構成が可能です。
当記事ではMulti-AZによる高可用性(HA)構成のAmazon RDS for Db2を手動でフェイルオーバーする方法について説明します。
尚、Db2だからといって特別なことはなく、他のRDSと方法は同じです。
参考: Amazon Relational Database Service ユーザーガイド
1. 前提
当然ながらマルチAZによる高可用性(HA)構成のAmazon RDS for Db2に対して実施します。
GUIで作成する場合は、作成時に
可用性と耐久性
というセクションで
スタンバイインスタンスを作成する (本稼働環境向けに推奨)
というオプションを選択して作成します。
一旦スタンバイインスタンスを作成しないでください
で作成してしまっても、マルチAZ配置への変換
が可能です。ただし、「DB インスタンスは、マルチ AZ DB インスタンスデプロイへの変換中および変換後に、パフォーマンスに大きな影響を受ける可能性があります。本稼働DBインスタンスではこの変換はお勧めしません。」との警告が出てきますので、本稼働DBインスタンスでは本当に問題ないか確認するようにしてください。
補足: シングル構成に戻すこと可能
尚、「DB インスタンスを変更」でシングルに戻すことも可能でした。データベースの概要画面あるいは一覧画面でDBを選択し「変更」をクリックすると、作成時と同じUIが出てきます。新規作成時と同じく可用性と耐久性
というセクションで、スタンバイインスタンスを作成しないでください
というオプションに選択を変更すればよいです。
(中略)
2. 前提の確認: マルチAZによる高可用性(HA)構成
まずはプライマリーインスタンスのAZを確認:
「RDS > データベース 」で表示されるデータベース一覧の「リージョーンとAZ」列がプライマリーインスタンスのAZです。
下のha-db-01
の場合は細かく言うとリージョンがap-northeast-1
でAZがc
となりますが、通常はap-northeast-1c
がAZ名として使われています。
DB識別子をクリックしてスタンバイ・インスタンスを確認します。
DB識別子をクリックし概要を表示後、「設定」タブをクリックして設定を表示します。
マルチAZ
があり
になっていればマルチAZによる高可用性(HA)構成になっています。
セカンダリゾーン
のAZ名がスタンバイ・インスタンスのAZ名です。
この場合はap-northeast-1d
となっています。
3. 手動フェイルオーバー手順
では上記で確認したha-db-01
を手動で フェイルオーバーしてみます。
フェイルオーバー前にプライマリーインスタンスのIPアドレスを確認してみます。
インスタンスのホスト名(=エンドポイントのホスト名)は概要画面の「接続とセキュリティ」タブのエンドポイント
です。
(下記はhostコマンドをMacから実行しています)
~:$ host ha-db-01.xxxxxxxx.ap-northeast-1.rds.amazonaws.com
IPは**.**.**.122
であることがわかります(最後以外は**に変更 )
またAWS CLIでAvailabilityZone, MultiAZ, SecondaryAvailabilityZoneの情報を取得してみます:<DB識別子>には自分のDB識別子をセットしてください。
aws rds describe-db-instances --db-instance-identifier <DB識別子> --query 'DBInstances[].{AvailabilityZone:AvailabilityZone, MultiAZ:MultiAZ, SecondaryAvailabilityZone:SecondaryAvailabilityZone}' --output table
実行例:<DB識別子>はha-db-01
~:$ aws rds describe-db-instances --db-instance-identifier ha-db-01 --query 'DBInstances[].{AvailabilityZone:AvailabilityZone, MultiAZ:MultiAZ, SecondaryAvailabilityZone:SecondaryAvailabilityZone}' --output table
--------------------------------------------------------------
| DescribeDBInstances |
+-------------------+----------+-----------------------------+
| AvailabilityZone | MultiAZ | SecondaryAvailabilityZone |
+-------------------+----------+-----------------------------+
| ap-northeast-1c | True | ap-northeast-1d |
+-------------------+----------+-----------------------------+
~:$
AvailabilityZoneはap-northeast-1c
, MultiAZはTrue
, SecondaryAvailabilityZoneはap-northeast-1d
となっています。
3-1. 「アクション」メニューから「再起動」をクリック
概要画面または「RDS > データベース 」で表示されるデータベース一覧からフェイルオーバーしたいDBを選択して、 「アクション」メニューから「再起動」をクリックします
概要画面から:
3-2. 「DB インスタンスを再起動」画面で「フェイルオーバーで再起動しますか?」にチェックを入れ、「確認」をクリック
ステータスが「利用可能」になるまで待ちます。この時は1〜2分で利用可能になりました。
ただ「リージョーンとAZ」列が反映されるのはもう少し時間がかかるようで、直後はap-northeast-1c
のままでした。
本当に変更されたか、確認してみましょう。
4. 確認
4-1. ログで確認
DB一覧の画面でDB識別子をクリックして概要を表示します。
「ログとイベント」タブをクリックします。
「最近のイベント」セクションでフェイルオーバー系のイベントが確認できます。
Multi-AZ instance failover completed
と表示されており、フェイルオーバーが完了したことが分かります。
4-2. 「設定」で確認
しばらくするとDB一覧画面や概要・設定画面に反映されてきます。(直後は更新されていません。少々時間がかかります)
「設定」タブをクリックします。
概要の「リージョーンとAZ
と「設定」のセカンダリゾーン
が最初と入れ替わっているのがわかります。
4-3. IPで確認
IPアドレスも確認してみます。フェイルオーバー前に確認した時と同じコマンドを実行します。
インスタンスのホスト名(=エンドポイントのホスト名)は概要画面の「接続とセキュリティ」タブのエンドポイント
です。フェイルオーバーしてもエンドポイントのホスト名は変更されません。
(下記はhostコマンドをMacから実行しています)
~:$ host ha-db-01.xxxxxxxx.ap-northeast-1.rds.amazonaws.com
IPは**.**.**.71
であることがわかります(最後以外は**に変更)
フェイルオーバー前の**.**.**.122
から同じエンドポイントでも変更になっていることがわかります。
フェイルオーバーしてもエンドポイントのホスト名は変更されないのも確認できました。フェイルオーバー後もエンドポイントのホスト名を使用しての接続であれば、変更なしで使えます。
4-4. AWS CLIで確認
AWS CLIでも確認してみます:<DB識別子>には自分のDB識別子をセットしてください。
aws rds describe-db-instances --db-instance-identifier <DB識別子> --query 'DBInstances[].{AvailabilityZone:AvailabilityZone, MultiAZ:MultiAZ, SecondaryAvailabilityZone:SecondaryAvailabilityZone}' --output table
実行例:<DB識別子>はha-db-01
~:$ aws rds describe-db-instances --db-instance-identifier ha-db-01 --query 'DBInstances[].{AvailabilityZone:AvailabilityZone, MultiAZ:MultiAZ, SecondaryAvailabilityZone:SecondaryAvailabilityZone}' --output table
--------------------------------------------------------------
| DescribeDBInstances |
+-------------------+----------+-----------------------------+
| AvailabilityZone | MultiAZ | SecondaryAvailabilityZone |
+-------------------+----------+-----------------------------+
| ap-northeast-1d | True | ap-northeast-1c |
+-------------------+----------+-----------------------------+
~:$
AvailabilityZoneはap-northeast-1d
, MultiAZはTrue
, SecondaryAvailabilityZoneはap-northeast-1c
となっています。
(注意: GUIへの反映と反映タイミングは同じようです)
無事フェイルオーバーされたようです!
以上です。