RDS の Multi-AZ 配置が未使用

可用性要件に合わせて RDS Multi-AZ のフェイルオーバーとアプリケーションの再接続を構成します。

説明

単一のアベイラビリティーゾーンに配置した RDS DB インスタンスでは、プライマリやそのゾーンの障害時に Multi-AZ のスタンバイへ自動で切り替える保護を利用できません。高い可用性が必要なワークロードでは、別のゾーンのスタンバイを使う Multi-AZ 配置を検討してください。

想定される影響

障害やメンテナンスによる停止が長引き、アプリケーションのエラーや手動復旧の負担が増えるおそれがあります。

対処方法

対応する RDS DB インスタンスで MultiAZ: true を設定し、費用と変更の影響を確認してください。フェイルオーバーとアプリケーションの再接続を試し、バックアップ・復旧計画も維持してください。Multi-AZ は無停止を保証せず、バックアップの代わりにもなりません。Aurora では別のクラスター可用性構成を使います。

例

RDS MySQL インスタンスの抜粋です。対応する DBInstanceType と残りのネットワーク設定を定義してください。マスターパスワードは RDS が Secrets Manager で管理する構成です。

変更前

yaml
Resources:
  MasterDB:
    Type: AWS::RDS::DBInstance
    Properties:
      DBName: MyDatabase
      AllocatedStorage: "20"
      DBInstanceClass: !Ref DBInstanceType
      Engine: mysql
      MasterUsername: admin
      ManageMasterUserPassword: true

新しいインスタンスで Multi-AZ を要求していません。許容できる停止時間と照らし合わせてください。

変更後

yaml
Resources:
  MasterDB:
    Type: AWS::RDS::DBInstance
    Properties:
      DBName: MyDatabase
      AllocatedStorage: "20"
      DBInstanceClass: !Ref DBInstanceType
      Engine: mysql
      MasterUsername: admin
      ManageMasterUserPassword: true
      MultiAZ: true

別のアベイラビリティーゾーンにあるスタンバイへ切り替えられるようにします。この DB インスタンスのスタンバイは読み取り負荷の分散には使えません。

参考資料