目次

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 の リソースを一元制御

目次

  1. 概要
  2. ARC が解決する課題
  3. 主な特徴
  4. アーキテクチャ
  5. コアコンポーネント
  6. Routing Control
  7. Readiness Check
  8. Zonal Shift・Zonal Autoshift
  9. Region Switch
  10. Route 53 との統合
  11. Global Accelerator 統合
  12. CloudFront・ALB との連携
  13. 主要ユースケース(10+)
  14. CLI・SDK・IaC による操作例
  15. Safety Rules・Split-Brain 防止
  16. Incident Manager との連携
  17. 類似サービス比較(PagerDuty・Statuspage・ServiceNow)
  18. ベストプラクティス
  19. トラブルシューティング表
  20. 2025-2026 最新動向
  21. 学習リソース
  22. 実装例・チェックリスト
  23. まとめ
  24. 参考文献

概要

初心者向けメモ:ARC は「マルチリージョン・マルチ AZ 対応アプリケーションのフェイルオーバーを安全に制御するプラットフォーム」です。通常、リージョン間のフェイルオーバーは Route 53 の DNS フェイルオーバーで実現されますが、DNS TTL の遅延・split-brain(両リージョンがプライマリ状態)・準備状態の確認不足が課題です。ARC は以下を提供します:

  1. Routing Control:ルーティングコントロールで Route 53 ヘルスチェック状態を制御→即座にトラフィック切り替え
  2. Safety Rules:セーフティルール(例:最低 1 リージョンはアクティブ)で誤操作を防止
  3. Readiness Check:フェイルオーバー先の準備状態を常時監視
  4. 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

  1. Global Accelerator Listener 作成
  2. Endpoint Group(Region A / Region B)を登録
  3. Traffic dial を ARC Routing Control で制御
  4. 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