AWSのDR対応について

目次

DR対策とは

DR対策とは、災害や障害が発生し、システムやデータが利用できなくなった際に、迅速な復旧と業務継続を実現するための仕組みです。
AWS環境では、複数リージョンに同じ環境を構築し、データのレプリケーションを行う方法が一般的です。

DR用語

RPO(Recovery Point Objective) データ損失の許容範囲を時間で表したもの。
例:「過去1時間分のデータ損失まで許容」

 

RTO(Recovery Time Objective) システム停止から復旧までの許容時間。
例:「4時間以内に復旧」

 

DRの種類

各戦略の特徴

項目コールドスタンバイパイロットライトウォームスタンバイホットスタンバイ
概要全システムが停止状態で待機最小限のコアシステムのみ稼働一部システムが稼働状態で待機全システムが稼働状態で待機
システム稼働状態全て停止データベースなど重要部分のみ稼働縮小版システムが稼働本番同等のシステムが稼働
データ同期定期的なバックアップのみリアルタイムまたは準リアルタイム継続的なデータ同期リアルタイム同期
災害時の復旧手順全システム起動 + データ復旧残りシステムの起動 + スケールアップシステム拡張 + 切り替え即座に切り替え

運用特性

項目コールドスタンバイパイロットライトウォームスタンバイホットスタンバイ
RTO(復旧時間)数時間~数日数十分~数時間数分~数十分数秒~数分
RPO(データロス)数時間~1日数分~数時間数分~数十分数秒~数分
初期コスト中~高
運用コスト中~高
複雑性中~高

使用場面

戦略適用業界・システム具体例
コールドスタンバイ非クリティカルシステム社内システム、開発環境
パイロットライト中小企業の基幹システム中規模ECサイト、業務アプリ
ウォームスタンバイ重要だが一時停止可能なシステム企業Webサイト、顧客管理システム
ホットスタンバイミッションクリティカルシステム金融システム、医療システム、大規模ECサイト

 

プロジェクトAで行った事例

プロジェクトAでは、以下の方針でDR対策を検討しました。

  • 想定リスク:大規模地震などで東京リージョンが利用不可になるケース
  • 採用戦略:パイロットライト方式
  • ソウルリージョンに東京リージョン同等のインフラを構築
  • DB系のデータ層は常時稼働し、レプリケーションを実施
  • STG環境で移行・稼働テストを完了(本番構築は今後実施予定)

 

切り替え対象のAWSサービス

  • ECS
  • EC2
  • ALB
  • Aurora DB
  • ElastiCache
  • APIGateway
  • CloudFront
  • Lambda
  • Route53
  • EventBridge
  • S3

 

以下、構築のみ。切り替え対応不要。

  • WAF
  • SystemManager
  • SQS
  • CloudWatch
  • SNS
  • Bedrock

 

プロジェクトAのパイロットライト

  • レプリケーションを取っているもの
    • Aurora DB
    • ElastiCache
    • S3
  • 停止状態のもの
    • ECS
    • EC2

 

障害が起きたら、

  • DB, ElastiCacheをソウルリージョンへフェイルオーバー
  • ソウルのECS, EC2を立ち上げ
  • Route53(ドメイン)のルーティング先をソウルへ変更
  • 各種設定変更

をおこない、ソウルリージョン稼働へ移す。

 

テストでは、すべてのリソースを切り替えるのに約3時間かかりました。
一部で設定漏れなどがありましたが、スムーズに進めば2時間程度で完了できる見込みです

 

DRテストの内容

  • 移行テスト
  • システム連携テスト
  • バッチテスト
  • 画面テスト
  • 外部連携テスト

 

実際に東京リージョンでトラブルが発生したと仮定して、東京→ソウルの移行から、ソウル側での稼働まで約1週間を掛けてテストを行いました。

 

テストによってそれぞれ設定漏れなどがいくつか見つかりましたが、一番は外部連携が問題起こりがちでした。

実は今もまだ一部と連携できていないため、外部連携先へ確認を投げているところです。

 

DBの切り替えについて

Aurora Global Databaseの場合、以下の2つのフェイルオーバー方式があります。

項目スイッチオーバーフェイルオーバー
用途計画的な運用・メンテナンス予期しない障害からの復旧
実行タイミング正常なシステム状態障害発生時
データ同期完全同期を待機同期を待たずに実行
RTO数分数分
RPO0(データロスなし)数秒(レプリケーション遅延による)

今回はスイッチオーバーでテストを実施しましたが、実際の障害発生時には、多少のデータ損失があってもフェイルオーバーを選択する方が適切と考えられます。

スイッチオーバーではデータ同期を行うため、同期元のデータベースが障害で停止している場合、復旧までに時間がかかる、あるいはスイッチオーバー自体が不可能になる可能性があります。

まとめ

ホットスタンバイ方式のDR対策では、本番と同等のインフラを常時維持する必要があるため、コストは2倍になりますし、DR対策はあくまで「保険」であり、どこまで投資するかは企業の判断に委ねられます。
そのため、ビジネス要件に応じた適切な落としどころを検討することが重要です。

また、DR環境を構築しただけで安心するのではなく、定期的なテストの実施や手順書のアップデートが重要になってくると考えられます。

参考サイト

出典:atlax blogs – Aurora Global Databaseを利用したDR自動切り替えについてhttps://atlaxblogs.nri.co.jp/entry/20240910

出典:Developers IO – [アップデート]Amazon Aurora Global Database は、(計画外の)フェイルオーバーができるようになりました
https://dev.classmethod.jp/articles/update-amazon-aurora-global-database-failover/

役に立ったらシェアしていただけると嬉しいです
  • URLをコピーしました!
  • URLをコピーしました!
目次