ディザスタリカバリ (DR)マルチリージョンEC2
マルチリージョン 高可用性 / DR構成
Route 53 × Aurora Global Database による災害対策
可用性 (SLA目標)
99.99%(リージョン障害に耐える)
RTO(目標復旧時間)
1分以内(Route 53 フェイルオーバー + Aurora昇格)
RPO(目標復旧時点)
1秒未満(Aurora Global Database)
概算コスト
月 200,000〜500,000 円以上
構成概要
- 可用性レベル
- マルチリージョン
- コンピューティング
- EC2
- 想定システム規模
- 大規模(エンタープライズ・基幹システム)
- コスト感
- ¥¥¥高コスト
使用AWSサービス
- Amazon Route 53
- Aurora Global Database
- Amazon EC2
- ALB
- Amazon VPC
概要
Route 53 のヘルスチェックとフェイルオーバールーティングにより、プライマリリージョン(東京)の障害時にセカンダリリージョン(大阪)へ自動切り替えするアクティブ-スタンバイ型のDR構成です。Aurora Global Database による高速なクロスリージョンレプリケーションで、RPO 1秒未満・RTO 1分以内を実現します。
★ 設計のポイント
- ▸リージョン全体の障害でも事業を継続できる災害対策(DR)構成
- ▸Aurora Global Database はリージョン間を通常1秒未満で複製
- ▸平常時はセカンダリを最小構成にし、コストを抑える運用も可能
システム構成図
周辺・運用機能(クロスカッティング / 全体に適用)
監視・運用
セキュリティ・統制
配信・保護
バックアップ・DR
リージョンVPCプライベートパブリック概念図 / アイコン: AWS Architecture Icons
コピーしてすぐ使える IaC
マルチリージョン 高可用性 / DR構成を再現するためのスターターIaCです。事例固有のIP制限、監査、バックアップ、Secret参照は環境に合わせて追加してください。
typescript
import * as cdk from "aws-cdk-lib";
import { Construct } from "constructs";
import * as ec2 from "aws-cdk-lib/aws-ec2";
import * as autoscaling from "aws-cdk-lib/aws-autoscaling";
import * as elbv2 from "aws-cdk-lib/aws-elasticloadbalancingv2";
import * as rds from "aws-cdk-lib/aws-rds";
// 本スタックは Primary(東京) / Secondary(大阪) の各リージョンへデプロイし、
// Aurora Global Database と Route 53 フェイルオーバーで束ねる構成です。
export class MultiRegionHaStack extends cdk.Stack {
constructor(scope: Construct, id: string, props: cdk.StackProps & { primary: boolean }) {
super(scope, id, props);
const vpc = new ec2.Vpc(this, "Vpc", { maxAzs: 2, natGateways: 1 });
const asg = new autoscaling.AutoScalingGroup(this, "WebAsg", {
vpc,
instanceType: new ec2.InstanceType("t3.small"),
machineImage: ec2.MachineImage.latestAmazonLinux2023(),
minCapacity: 2,
maxCapacity: 6,
vpcSubnets: { subnetType: ec2.SubnetType.PRIVATE_WITH_EGRESS },
});
const alb = new elbv2.ApplicationLoadBalancer(this, "Alb", { vpc, internetFacing: true });
alb.addListener("Http", { port: 80, open: true }).addTargets("Web", { port: 80, targets: [asg] });
// Aurora Global Database:Primary でグローバルクラスタを作成し、Secondary を関連付け
new rds.DatabaseCluster(this, "Aurora", {
engine: rds.DatabaseClusterEngine.auroraPostgres({ version: rds.AuroraPostgresEngineVersion.VER_16_1 }),
writer: rds.ClusterInstance.serverlessV2("writer"),
vpc,
storageEncrypted: true,
});
// NOTE: rds.CfnGlobalCluster("multi-region-high-availability-global") を作成し、両リージョンのクラスタを紐付けます。
// NOTE: route53.CfnRecordSet で failover=(props.primary ? "PRIMARY" : "SECONDARY") と HealthCheck を設定します。
}
}この構成を選ぶ理由
マルチリージョン 高可用性 / DR構成は、大規模(エンタープライズ・基幹システム)を想定し、リージョン障害時の継続性を重視する場合に選びやすい構成です。
選定フロー
1
業務要件を確認する
ディザスタリカバリ (DR)で求められる可用性、RTO/RPO、データ分類を確認する。
要件に合う → 候補として採用不足がある → 上位の冗長化/統制構成を検討
2
運用体制を確認する
チームが AWS Native の運用、監視、権限管理を継続できるかを確認する。
運用可能 → 詳細設計へ負荷が高い → よりマネージドな代替案へ
3
コストと拡張性を比較する
月 200,000〜500,000 円以上を許容し、将来のスケールやDR要件に対応できるかを判断する。
許容できる → 本構成を採用過剰/不足 → 代替案を比較
代替案との比較
| 候補 | コスト | 運用保守負荷 | スケーラビリティ | 選定すべきケース |
|---|---|---|---|---|
最小構成 | 低い | 単純だが手動復旧が多い | 限定的 | PoC、検証、小規模な開始段階 |
マルチリージョン 高可用性 / DR構成採用 | 高い | AWS標準運用で管理可能 | リージョン単位で拡張可能 | 金融・基幹システムのディザスタリカバリ |
上位冗長化構成 | 高い | 設計・監視・訓練が増える | 高い | 厳格なSLA、DR、監査要件がある場合 |
採用時のトレードオフ
!
設計前提の確認が必要
RTO/RPO、可用性、コストは実際の設定・運用・負荷条件に依存します。
!
コストと運用負荷のバランス
コストが非常に高い(待機リージョン分が常時発生)
✓ メリット
- •リージョン全体障害でも1分以内に自動切り替え(RTO < 1分)
- •Aurora Global DB により RPO 1秒未満を実現
- •地理的に離れた利用者への低レイテンシ配信にも応用できる
- •高いSLA・事業継続(BCP)要件を満たせる
✗ デメリット
- •コストが非常に高い(待機リージョン分が常時発生)
- •構成・運用・テスト(DR訓練)が複雑
- •書き込みは必ずPrimaryへ向ける必要があり整合性の考慮が必要
- •フェイルオーバー時はDNS TTLの考慮が必要
→ 主なユースケース
- •金融・基幹システムのディザスタリカバリ
- •ECサイト基幹系(リージョン障害でも停止できない)
- •医療・行政など社会インフラ系サービス
マルチリージョンRoute 53Aurora GlobalDR高可用性