目次
- 初心者から実務者向けの包括的解説
- 概要
- ARC が解決する課題
- 主な特徴
- アーキテクチャ
- コアコンポーネント
- Routing Control
- Readiness Check
- Zonal Shift・Zonal Autoshift
- Region Switch
- Route 53 との統合
- Global Accelerator 統合
- CloudFront・ALB との連携
- 主要ユースケース
- CLI・SDK・IaC による操作例
- Safety Rules・Split-Brain 防止
- Incident Manager との連携
- 類似サービス比較
- ベストプラクティス
- トラブルシューティング表
- 2025-2026 最新動向
- 学習リソース
- 実装例・チェックリスト
- まとめ
AWS Application Recovery Controller(ARC)v2.0 完全ガイド
初心者から実務者向けの包括的解説
AWS Application Recovery Controller(ARC) は、マルチリージョン・マルチ AZ アプリケーションの フェイルオーバーを安全かつ迅速に制御し、99.999% の SLA を実現する高可用性制御プラットフォームです。Routing Control によるワンクリックフェイルオーバー・Readiness Check による継続的な準備状態監視・Zonal Shift による AZ 障害時の瞬時トラフィック切り替えを提供します。本ガイドは、ARC の概念・アーキテクチャ・フェイルオーバー制御・準備状態管理・ゾーンシフトを体系的に解説します。
ドキュメントの目的
本ガイドは以下を対象としています。
- 初心者向け:マルチリージョン HA・フェイルオーバーとは何かを学びたい方
- DevOps/SRE 向け:Routing Control・Readiness Check・Zonal Shift を運用したい方
- アーキテクト向け:Route 53・Global Accelerator・CloudFront との統合設計
- 意思決定者向け:99.999% SLA 実現に必要な投資判断・TCO
2025-2026 年の ARC エコシステム
- Region Switch(リージョン切り替え):multi-region disaster recovery automation
- Zonal Autoshift:AWS が自動的に impaired AZ からトラフィックを切り替え
- Readiness Check 強化:より細粒度の準備状態監視
- Incident Manager 統合:フェイルオーバー Runbook の自動実行
- CloudFormation IaC:Routing Control / Readiness Check の定義をコード化
- Cross-Account フェイルオーバー:複数 AWS Account の リソースを一元制御
目次
- 概要
- ARC が解決する課題
- 主な特徴
- アーキテクチャ
- コアコンポーネント
- Routing Control
- Readiness Check
- Zonal Shift・Zonal Autoshift
- Region Switch
- Route 53 との統合
- Global Accelerator 統合
- CloudFront・ALB との連携
- 主要ユースケース(10+)
- CLI・SDK・IaC による操作例
- Safety Rules・Split-Brain 防止
- Incident Manager との連携
- 類似サービス比較(PagerDuty・Statuspage・ServiceNow)
- ベストプラクティス
- トラブルシューティング表
- 2025-2026 最新動向
- 学習リソース
- 実装例・チェックリスト
- まとめ
- 参考文献
概要
初心者向けメモ:ARC は「マルチリージョン・マルチ AZ 対応アプリケーションのフェイルオーバーを安全に制御するプラットフォーム」です。通常、リージョン間のフェイルオーバーは Route 53 の DNS フェイルオーバーで実現されますが、DNS TTL の遅延・split-brain(両リージョンがプライマリ状態)・準備状態の確認不足が課題です。ARC は以下を提供します:
- Routing Control:ルーティングコントロールで Route 53 ヘルスチェック状態を制御→即座にトラフィック切り替え
- Safety Rules:セーフティルール(例:最低 1 リージョンはアクティブ)で誤操作を防止
- Readiness Check:フェイルオーバー先の準備状態を常時監視
- Zonal Shift:AZ 障害時に ALB / NLB レベルでトラフィック即座切り替え
ARC は金融・EC・医療など RTO 5 分・RPO ゼロを要求する mission-critical ワークロードむけの高可用性サービスです。
ARC が解決する課題
課題 1: マルチリージョンフェイルオーバーの遅延・不確実性
状況:ap-northeast-1 プライマリ → us-east-1 フェイルオーバー時に Route 53 DNS TTL(デフォルト 60 秒)待機。その間 client はエラーを受けている。
ARC による解決:
- Routing Control で ルーティングコントロール状態を即座に ON/OFF
- Route 53 ヘルスチェックで Health = Healthy を即座に反映
- DNS TTL を待たずに 数秒以内にフェイルオーバー完了
課題 2: split-brain(両リージョンがプライマリ状態)の防止
状況:フェイルオーバー opertion で Region A の ルーティングコントロール OFF → Region B ON に切り替えようとしたが、誤操作で両方 OFF になってしまった。
ARC による解決:
- Safety Rules で「最低 1 リージョンはオン状態」を強制
- 全 routing control OFF は blocked(命令実行失敗)
- split-brain を構造的に防止
課題 3: フェイルオーバー先の準備状態確認不足
状況:Region A 障害 → Region B にフェイルオーバーしたが、RDS レプリカが lag 300 秒→データロス発生。フェイルオーバー前に準備状態を確認しなかった。
ARC による解決:
- Readiness Check で RDS レプリカ lag・ECS タスク数・ALB Target health を常時監視
- Dashboard に「本当にフェイルオーバーできるか」の状態表示
- フェイルオーバー前に準備確認→データロス防止
課題 4: AZ 障害時の影響をすぐに局所化できない
状況:ap-northeast-1a に deployment issue → 1a 内のアプリが slow。全リージョン・全 AZ に影響が波及。
ARC による解決:
- Zonal Shift で 1a からの ALB トラフィックを即座に 1b / 1c に転送
- アプリ再デプロイなしに AZ 障害の影響を局所化
- 数秒でトラフィック転送完了
主な特徴
| 特徴 | 説明 |
|---|---|
| Routing Control | ルーティングコントロール ON/OFF で Route 53 ヘルスチェック制御 |
| Safety Rules | セーフティルール(最低アクティブ数など)で誤操作防止 |
| Readiness Check | RDS lag・ECS タスク数等を常時監視 |
| Zonal Shift | AZ 障害時に ALB / NLB トラフィック即座転送(manual) |
| Zonal Autoshift | AWS が自動的に impaired AZ からトラフィック転送 |
| 99.999% SLA | マルチリージョン・5 AZ 分散コントロールプレーンで高可用性 |
| Region Switch | マルチリージョン災害復旧の自動化・オーケストレーション |
| Incident Manager 統合 | フェイルオーバー実行時に自動的に on-call engineer に通知 |
アーキテクチャ
┌─────────────────────────────────────────────────────────────┐
│ ARC Control Plane(5 リージョンに分散・99.999% SLA) │
│ ├─ us-east-1 cell │
│ ├─ us-west-2 cell │
│ ├─ eu-west-1 cell │
│ ├─ ap-southeast-1 cell │
│ └─ ap-northeast-1 cell │
└─────────────────────────────────────────────────────────────┘
↓
┌───────────────┼───────────────┐
↓ ↓ ↓
┌────────┐ ┌────────┐ ┌────────┐
│ Region │ │ Region │ │ Region │
│ A │ │ B │ │ C │
│ │ │ │ │ │
│Routing │ │Routing │ │Routing │
│Control │ │Control │ │Control │
│ 1 │ │ 2 │ │ 3 │
└────────┘ └────────┘ └────────┘
↓ ↓ ↓
┌────────┐ ┌────────┐ ┌────────┐
│Route53 │ │Route53 │ │Route53 │
│Health │ │Health │ │Health │
│Check 1 │ │Check 2 │ │Check 3 │
└────────┘ └────────┘ └────────┘
↓ ↓ ↓
┌────────┐ ┌────────┐ ┌────────┐
│ ALB │ │ ALB │ │ ALB │
│ │ │ │ │ │
│(Active)│ │(Active)│ │(Standby)│
└────────┘ └────────┘ └────────┘
↓ ↓ ↓
Application Application Application
コアコンポーネント
1. Cluster(クラスター)
ARC の最小単位。5 つの AWS リージョンに分散したコントロールプレーン。
aws route53-recovery-control-config create-cluster \
--cluster-name global-recovery-cluster
2. Control Panel(コントロールパネル)
Routing Control を グループ化する論理単位。
aws route53-recovery-control-config create-control-panel \
--cluster-arn arn:aws:route53-recovery-control::account:cluster/xxx \
--control-panel-name production-app
3. Routing Control(ルーティングコントロール)
ON / OFF を制御するスイッチ。Route 53 ヘルスチェックに紐付け。
aws route53-recovery-control-config create-routing-control \
--cluster-arn arn:aws:route53-recovery-control::account:cluster/xxx \
--control-panel-arn arn:aws:route53-recovery-control::account:controlpanel/xxx \
--routing-control-name region-a-primary
4. Safety Rule(セーフティルール)
Routing Control の状態に制約を付与。例:「最低 1 つはオン状態」。
| タイプ | 説明 | 例 |
|---|---|---|
| ATLEAST | 指定数以上がオン状態 | ATLEAST 1:最低 1 つアクティブ |
| AND | すべてオン状態 | 複数 control を同時管理 |
| OR | 1 つ以上オン状態 | Redundancy 確保 |
5. Readiness Check(準備状態チェック)
Resource の 準備状態を常時監視。
aws route53-recovery-readiness create-readiness-check \
--readiness-check-name rds-replica-readiness
Routing Control
Routing Control フロー
1. Routing Control 作成
├─ Region A Primary → routing control 1
└─ Region B Secondary → routing control 2
2. Safety Rule 設定
└─ ATLEAST 1(最低 1 つはオン)
3. Route 53 Health Check 紐付け
├─ Health Check 1 → Routing Control 1
└─ Health Check 2 → Routing Control 2
4. Route 53 Failover Record 設定
├─ Primary Record(RC 1 ヘルスチェック)
└─ Secondary Record(RC 2 ヘルスチェック)
5. フェイルオーバー実行
└─ RC 1 OFF → RC 2 ON → Route 53 DNS トラフィック切り替え
フェイルオーバー実行例
# Region A → Region B へのフェイルオーバー
aws route53-recovery-cluster update-routing-control-states \
--update-routing-control-state-entries \
'[
{
"RoutingControlArn": "arn:aws:route53-recovery-control::account:controlpanel/xxx/routingcontrol/region-a",
"RoutingControlState": "Off"
},
{
"RoutingControlArn": "arn:aws:route53-recovery-control::account:controlpanel/xxx/routingcontrol/region-b",
"RoutingControlState": "On"
}
]' \
--endpoint-url https://arn:aws:route53-recovery-cluster:us-east-1::cluster/xxx.route53-recovery-cluster.us-east-1.amazonaws.com
# 結果確認
aws route53-recovery-cluster get-routing-control-state \
--routing-control-arn arn:aws:route53-recovery-control::account:controlpanel/xxx/routingcontrol/region-b
Readiness Check
Readiness Check の構成
1. Resource Set 作成(監視対象リソース)
├─ RDS Cluster(レプリカ lag確認)
├─ ECS Service(desired task vs running task)
└─ ALB Target Group(healthy target 数)
2. Readiness Check 作成
└─ Resource Set に対する準備状態チェック定義
3. Readiness Dashboard
└─ リアルタイムで Ready / Not Ready を表示
Readiness Check 実装
# 1. Resource Set 作成
aws route53-recovery-readiness create-resource-set \
--resource-set-name rds-cluster-secondary \
--resource-set-type AWS::RDS::DBCluster \
--resources '[{
"ResourceArn": "arn:aws:rds:us-east-1:account:cluster:prod-replica"
}]'
# 2. Readiness Check 作成
aws route53-recovery-readiness create-readiness-check \
--readiness-check-name rds-replica-ready \
--resource-set-name rds-cluster-secondary \
--tags Environment=production
# 3. 準備状態確認
aws route53-recovery-readiness get-readiness-check-status \
--readiness-check-name rds-replica-ready
# → {"Readiness": "READY"} / "NOT_READY"
Zonal Shift・Zonal Autoshift
Zonal Shift(手動)
# AZ a に問題→トラフィック即座転送
aws arc-zonal-shift start-zonal-shift \
--resource-identifier arn:aws:elasticloadbalancing:ap-northeast-1:account:loadbalancer/app/prod-alb/xxx \
--away-from ap-northeast-1a \
--expires-in PT1H \
--comment "Deployment issue in ap-northeast-1a detected"
# ステータス確認
aws arc-zonal-shift list-zonal-shifts \
--query 'ZonalShifts[*].{ID:ZonalShiftId, ResourceId:ResourceIdentifier, AwayFrom:AwayFrom, Status:Status}'
# Zonal Shift 終了(復旧後)
aws arc-zonal-shift cancel-zonal-shift \
--zonal-shift-id xxxxx
Zonal Autoshift(自動)
# ALB に Zonal Autoshift を有効化
aws arc-zonal-shift update-zonal-autoshift-configuration \
--resource-identifier arn:aws:elasticloadbalancing:ap-northeast-1:account:loadbalancer/app/prod-alb/xxx \
--zonal-autoshift-status ENABLED
# Zonal Autoshift ステータス確認
aws arc-zonal-shift get-zonal-autoshift-configuration \
--resource-identifier arn:aws:elasticloadbalancing:ap-northeast-1:account:loadbalancer/app/prod-alb/xxx
Region Switch
Region Switch フロー
1. Recovery Group 作成(複数リージョンのグループ)
2. Recovery Group Member 定義(各リージョンのリソース)
3. Route 53 Health Check 紐付け
4. Failover Plan 作成(フェイルオーバー手順)
5. Failover 実行(自動化・orchestration)
Region Switch の実装例
# 1. Recovery Group 作成
aws route53-recovery-cluster create-recovery-group \
--recovery-group-name prod-app-global \
--members '[
{
"MemberArn": "arn:aws:route53-recovery-readiness:us-east-1:account:readiness-check/rds-replica-ready"
}
]'
# 2. Region Switch 実行(自動 failover)
aws route53-recovery-control-config update-recovery-group \
--recovery-group-arn arn:aws:route53-recovery-control::account:recoverygroup/xxx
Route 53 との統合
Route 53 Failover DNS Record Setup
# 1. Route 53 Hosted Zone
# 2. Health Check 作成(ARC Routing Control に紐付け)
aws route53 create-health-check \
--caller-reference routing-control-health-check \
--health-check-config \
Type=RECOVERY_CONTROL,\
RoutingControlArn=arn:aws:route53-recovery-control::account:controlpanel/xxx/routingcontrol/region-a
# 3. Failover Record 作成
aws route53 change-resource-record-sets \
--hosted-zone-id Z123456789ABC \
--change-batch '{
"Changes": [{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "api.example.com",
"Type": "A",
"SetIdentifier": "region-a-primary",
"Failover": "PRIMARY",
"AliasTarget": {
"HostedZoneId": "Z14GRHDCWA56QT",
"DNSName": "alb-ap-northeast-1.elb.amazonaws.com",
"EvaluateTargetHealth": true
},
"HealthCheckId": "health-check-region-a"
}
}]
}'
Global Accelerator 統合
Global Accelerator + ARC
- Global Accelerator Listener 作成
- Endpoint Group(Region A / Region B)を登録
- Traffic dial を ARC Routing Control で制御
- Region 障害 → ARC が自動的に traffic dial を 0 に設定
CloudFront・ALB との連携
CloudFront + ARC Routing Control
CloudFront Distribution
├─ Origin A(ap-northeast-1)
├─ Origin B(us-east-1)
└─ Lambda@Edge(Origin Selection)
↓
Route 53 + ARC Routing Control
↓
Origin A / B へ traffic routing
主要ユースケース
1. 金融取引 Platform(99.999% SLA)
ap-northeast-1(Tokyo)→ Primary(RTO 2 min)
us-east-1(Virginia)→ Secondary
eu-west-1(Ireland)→ Witness
Readiness Check:
├─ RDS lag < 10 sec
├─ App tier healthy
└─ Data consistency verified
2. E-Commerce Site(ピーク時 HA)
Region Primary + 2x AZ
├─ Zonal Autoshift enabled(AZ issue時)
└─ Routing Control for Region failover
Traffic: 99.9% → primary / 0.1% → secondary(constant)
3. Mission-Critical API
Multi-Region Active-Active
├─ Route 53 weighted routing
├─ ARC Readiness Check
└─ Incident Manager on-call notify
4. Data Center Migration
DC 1 → AWS Region A → Region B
├─ Gradual traffic shift
├─ Readiness Check validation
└─ Failback capability
5. Disaster Recovery Drill
Automated DR exercise
├─ Schedule weekly failover test
├─ ARC simulate failure
├─ Measure RTO / RPO
└─ Generate report
6. Global Observability
CloudWatch + ARC Readiness
├─ Custom metrics for readiness
├─ Dashboard visualization
└─ Alert on Not Ready
7. Compliance・Audit
Failover audits
├─ CloudTrail logs
├─ ARC Change history
└─ Compliance report generation
8. Cost-Optimized HA
Region A: Active(100% traffic)
Region B: Warm standby(minimal costs)
├─ Readiness Check maintained
├─ Failover < 2 min RTO
└─ Cost optimized
9. Multi-Account Organization
Central Account: ARC Control Plane
Member Accounts: Applications
├─ Centralized failover control
├─ Cross-account safety rules
└─ Organization-wide compliance
10. Real-Time Analytics
Primary Region: Writes
Secondary Region: Reads(lag acceptable)
├─ ARC Readiness monitors lag
├─ Analytics query routes
└─ Failover if lag > threshold
CLI・SDK・IaC による操作例
AWS CLI
# 1. Cluster 情報
aws route53-recovery-control-config describe-cluster \
--cluster-arn arn:aws:route53-recovery-control::account:cluster/xxx
# 2. Routing Control 状態確認
aws route53-recovery-cluster list-routing-controls \
--endpoint-url https://...
# 3. Readiness ダッシュボード
aws route53-recovery-readiness list-readiness-checks
# 4. Zonal Shift 履歴
aws arc-zonal-shift list-zonal-shift-history
Terraform / CDK
# Terraform
resource "aws_route53recoverycontrol_cluster" "main" {
name = "global-recovery"
}
resource "aws_route53recoverycontrol_control_panel" "main" {
name = "production-app"
cluster_arn = aws_route53recoverycontrol_cluster.main.arn
}
resource "aws_route53recoverycontrol_routing_control" "region_a" {
name = "region-a-primary"
cluster_arn = aws_route53recoverycontrol_cluster.main.arn
control_panel_arn = aws_route53recoverycontrol_control_panel.main.arn
}
Safety Rules・Split-Brain 防止
Safety Rule の実装
# 1. Assertion Rule(最低 1 リージョンはオン)
aws route53-recovery-control-config create-safety-rule \
--assertion-rule '{
"AssertedControls": [
"arn:aws:route53-recovery-control::account:controlpanel/xxx/routingcontrol/region-a",
"arn:aws:route53-recovery-control::account:controlpanel/xxx/routingcontrol/region-b"
],
"ControlPanelArn": "arn:aws:route53-recovery-control::account:controlpanel/xxx",
"Name": "MinActiveRegions",
"RuleConfig": {
"Inverted": false,
"Threshold": 1,
"Type": "ATLEAST"
}
}'
Incident Manager との連携
Incident Manager Integration
# On-call engineer に自動通知
# → フェイルオーバー実行時に SNS で on-call 通知
# → Incident を自動で escalate
類似サービス比較
| 観点 | ARC | PagerDuty Incident | Atlassian Statuspage | ServiceNow |
|---|---|---|---|---|
| フェイルオーバー制御 | ネイティブ | API + Custom | Limited | API integration |
| Readiness監視 | 自動継続 | Manual | Limited | Policy-based |
| 99.999% SLA | ✅ | ❌ | ❌ | ❌ |
| Zonal Shift | ✅ | ❌ | ❌ | ❌ |
| Route 53統合 | ネイティブ | API | ❌ | Integration |
| 学習曲線 | 中 | 低 | 低 | 高 |
ベストプラクティス
推奨事項(✅)
- ✅ Safety Rules で split-brain を構造的に防止
- ✅ Readiness Check を常時監視
- ✅ Weekly failover drill を自動化
- ✅ Incident Manager で on-call 通知を自動化
- ✅ CloudTrail で全操作をログ
- ✅ Route 53 health check 設定を厳密に
- ✅ RTO / RPO 目標を明確に定義
- ✅ Multi-region architecture を validate
アンチパターン(❌)
- ❌ Safety Rules なしでフェイルオーバー操作
- ❌ Readiness Check 無視でフェイルオーバー実行
- ❌ Manual failover without test
- ❌ Region 間データ sync なし
トラブルシューティング表
| 症状 | 原因 | 解決方法 |
|---|---|---|
| Routing Control OFF できない | Safety Rule が制約 | Safety Rule を確認・修正 |
| Readiness Check 常に NOT_READY | Resource に問題 | RDS lag・ECS task 数を確認 |
| DNS failover 遅い | Route 53 TTL 長い | TTL を短縮(デフォルト 300s) |
| Zonal Shift できない | 対応リソースではない | 対応リソース種確認(ALB / NLB) |
2025-2026 最新動向
- Region Switch 自動化:Failover Plan の複雑度向上
- Incident Manager 統合強化:自動フェイルオーバー実行
- CloudFormation IaC:Routing Control / Readiness Check の完全コード化
- Cross-Account Control:AWS Organizations での統一制御
学習リソース
実装例・チェックリスト
- [ ] ARC Cluster を作成
- [ ] Routing Control 作成(Region A / B)
- [ ] Safety Rule で split-brain 防止
- [ ] Route 53 Health Check を紐付け
- [ ] Readiness Check を設定
- [ ] Zonal Autoshift を有効化
- [ ] Weekly failover drill を自動化
- [ ] Incident Manager 統合
- [ ] CloudTrail ログを確認
まとめ
AWS Application Recovery Controller(ARC)は 「マルチリージョン・マルチ AZ フェイルオーバーを安全に制御するプラットフォーム」 で、Routing Control・Safety Rules・Readiness Check・Zonal Shift により 99.999% SLA を実現できます。金融・EC・医療など mission-critical ワークロード向けの高可用性・災害復旧ソリューションです。
最終更新:2026-04-27 バージョン:v2.0