2
0
お題は不問!Qiita Engineer Festa 2024で記事投稿!
Qiita Engineer Festa20242024年7月17日まで開催中!

Amazon RDS for Db2: マルチAZによる高可用性(HA)構成の手動フェイルオーバー

Last updated at Posted at 2024-07-09

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で作成する場合は、作成時に
可用性と耐久性 というセクションで
スタンバイインスタンスを作成する (本稼働環境向けに推奨)
というオプションを選択して作成します。
image.png

一旦スタンバイインスタンスを作成しないでくださいで作成してしまっても、マルチAZ配置への変換が可能です。ただし、「DB インスタンスは、マルチ AZ DB インスタンスデプロイへの変換中および変換後に、パフォーマンスに大きな影響を受ける可能性があります。本稼働DBインスタンスではこの変換はお勧めしません。」との警告が出てきますので、本稼働DBインスタンスでは本当に問題ないか確認するようにしてください。
image.png
image.png

補足: シングル構成に戻すこと可能

尚、「DB インスタンスを変更」でシングルに戻すことも可能でした。データベースの概要画面あるいは一覧画面でDBを選択し「変更」をクリックすると、作成時と同じUIが出てきます。新規作成時と同じく可用性と耐久性 というセクションで、スタンバイインスタンスを作成しないでくださいというオプションに選択を変更すればよいです。
image.png
(中略)
image.png

2. 前提の確認: マルチAZによる高可用性(HA)構成

まずはプライマリーインスタンスのAZを確認:
「RDS > データベース 」で表示されるデータベース一覧の「リージョーンとAZ」列がプライマリーインスタンスのAZです。
下のha-db-01の場合は細かく言うとリージョンがap-northeast-1でAZがcとなりますが、通常はap-northeast-1cがAZ名として使われています。

image.png

DB識別子をクリックしてスタンバイ・インスタンスを確認します。
DB識別子をクリックし概要を表示後、「設定」タブをクリックして設定を表示します。
マルチAZありになっていればマルチAZによる高可用性(HA)構成になっています。
セカンダリゾーンのAZ名がスタンバイ・インスタンスのAZ名です。
この場合はap-northeast-1dとなっています。
image.png
image.png

3. 手動フェイルオーバー手順

では上記で確認したha-db-01を手動で フェイルオーバーしてみます。

フェイルオーバー前にプライマリーインスタンスのIPアドレスを確認してみます。
インスタンスのホスト名(=エンドポイントのホスト名)は概要画面の「接続とセキュリティ」タブのエンドポイントです。
(下記はhostコマンドをMacから実行しています)

~:$ host ha-db-01.xxxxxxxx.ap-northeast-1.rds.amazonaws.com

実行例
image.png

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を選択して、 「アクション」メニューから「再起動」をクリックします
概要画面から:
image.png

「RDS > データベース 」から:
image.png

3-2. 「DB インスタンスを再起動」画面で「フェイルオーバーで再起動しますか?」にチェックを入れ、「確認」をクリック

image.png

DB一覧の画面に戻り、ステータスが「再起動中」になります。
image.png

ステータスが「利用可能」になるまで待ちます。この時は1〜2分で利用可能になりました。
image.png
ただ「リージョーンとAZ」列が反映されるのはもう少し時間がかかるようで、直後はap-northeast-1cのままでした。

本当に変更されたか、確認してみましょう。

4. 確認

4-1. ログで確認

DB一覧の画面でDB識別子をクリックして概要を表示します。
「ログとイベント」タブをクリックします。
image.png

「最近のイベント」セクションでフェイルオーバー系のイベントが確認できます。
Multi-AZ instance failover completed と表示されており、フェイルオーバーが完了したことが分かります。
image.png

4-2. 「設定」で確認

しばらくするとDB一覧画面や概要・設定画面に反映されてきます。(直後は更新されていません。少々時間がかかります)
「設定」タブをクリックします。
概要の「リージョーンとAZと「設定」のセカンダリゾーンが最初と入れ替わっているのがわかります。
image.png
image.png

4-3. IPで確認

IPアドレスも確認してみます。フェイルオーバー前に確認した時と同じコマンドを実行します。
インスタンスのホスト名(=エンドポイントのホスト名)は概要画面の「接続とセキュリティ」タブのエンドポイントです。フェイルオーバーしてもエンドポイントのホスト名は変更されません。
(下記はhostコマンドをMacから実行しています)

~:$ host ha-db-01.xxxxxxxx.ap-northeast-1.rds.amazonaws.com

実行例
image.png

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への反映と反映タイミングは同じようです)

無事フェイルオーバーされたようです!

以上です。

2
0
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0