examlab .net 用最有效率的方法,考取最有價值的證照
本篇導覽 約 26 分鐘

多區域故障轉移 — Route 53 健康檢查與路由政策

5,050 字 · 約 26 分鐘閱讀 ·

DOP-C02 深入探討 Route 53 故障轉移路由、健康檢查(端點、計算、CloudWatch 警示)、應用程式復原控制員 (ARC)、以延遲為基礎和加權路由、跨區域故障轉移模式以及 DNS TTL 的權衡。

立即做 20 題練習 → 免費 · 不用註冊 · DOP-C02

透過 Route 53 實現跨區域故障轉移 (Multi-region failover) 是 DOP-C02 領域 3 中頻率最高的主題之一。考試測試何時選擇故障轉移路由 vs 以延遲為基礎的路由 vs 加權路由端點健康檢查計算健康檢查CloudWatch 警示健康檢查如何結合以驅動故障轉移決策;應用程式復原控制員 (ARC) 在明確的復原就緒檢查和路由控制中的角色;以及在故障轉移事件期間 DNS TTL 的權衡。

本指南假設您已瞭解 A 記錄和 CNAME。DOP-C02 的重點在於:主要/次要故障轉移記錄計算健康檢查樹針對 RDS 複寫延遲等指標的 CloudWatch 警示健康檢查ARC 路由控制(可繞過 DNS 傳播延遲切換路由)、用於主動-主動跨區域的以延遲為基礎的路由、用於金絲雀的加權路由多值回答路由、用於合規路由的地理位置和地理鄰近路由、作為故障轉移 RTO 下限的 DNS TTL、指向 AWS 資源的別名記錄,以及用於內部故障轉移的私有託管區域

為什麼跨區域故障轉移在 DOP-C02 中很重要

DOP-C02 在領域 3 中明確列出了「在可用情況下啟用跨區域解決方案(例如 Amazon DynamoDB, Amazon RDS, Amazon Route 53, Amazon S3, Amazon CloudFront)」以及「測試多亞區 (Multi-AZ) 和跨區域工作負載的故障轉移」。社群考試回報指出,災害復原 (DR) 策略題目是被標記頻率最高的類別之一:考生知道存在故障轉移路由,但在分層檢查(結合子項的計算健康檢查)以及 Route 53 健康檢查驅動與 ARC 驅動的故障轉移區別上容易出錯。

現實世界的 DR 情境驅動了考試題目:「主動-被動雙區域設置;主要區域故障;次要區域必須在 1 分鐘內接管」 —— 答案涉及故障轉移路由 + 低 TTL + 可偵測上游和下游故障的計算健康檢查 + 用於明確故障開啟的 ARC 路由控制。「具備法規限制的主動-主動路由(歐盟使用者指向歐盟區域)」 —— 地理位置路由為主 + 延遲備援。「在一個區域金絲雀發布新版本」 —— 加權路由 95/5。考試期望您能從原語中組裝出這些模式。

  • 託管區域 (Hosted zone):Route 53 中 DNS 記錄的容器(公開或私有)。
  • 路由策略 (Routing policy):每個記錄集的策略:簡單故障轉移加權延遲地理位置地理鄰近多值回答基於 IP
  • 故障轉移路由 (Failover routing):主要/次要記錄對;當主要記錄健康檢查失敗時,Route 53 返回次要記錄。
  • 健康檢查 (Health check):Route 53 監視器,探查端點 (HTTP/HTTPS/TCP)、對子檢查評估計算表達式,或監控 CloudWatch 警示。
  • 端點健康檢查 (Endpoint health check):來自 Route 53 全球檢查員集群的 HTTP/HTTPS/TCP 探針;評估 N 個中的 3 個是否健康。
  • 計算健康檢查 (Calculated health check):使用 OR/AND/閾值邏輯結合多個子檢查的父檢查。
  • CloudWatch 警示健康檢查:將 Route 53 健康狀況連結到 CloudWatch 警示(例如 RDS 複寫延遲 > 閾值)。
  • 應用程式復原控制員 (ARC):用於透過就緒檢查 (Readiness Checks) 和繞過 DNS 進行明確切換的路由控制來編排跨區域復原的服務。
  • 路由控制 (Routing control):由 ARC 管理的布林值 (On/Off),可同時切換一或多個 Route 53 記錄。
  • 叢集 (Cluster):由跨區域的 5 個冗餘控制端點組成的 ARC 建構,為路由控制狀態變更提供 99.999% 的可用性。
  • TTL (Time to Live):下游解析器中每個記錄的快取時間;較低的 TTL = 更快的故障轉移,但 Route 53 查詢量更高。
  • 別名記錄 (Alias record):Route 53 特有的記錄類型,按名稱指向 AWS 資源 (ALB, CloudFront, S3);在查詢時解析並支持區域頂點 (Zone Apex)。
  • 參考:https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover.html

白話文解釋 Route 53 故障轉移

Route 53 的機制可以清晰地對應到非軟體領域的分派與備援模式。從端點健康檢查、故障轉移路由模型和 ARC 三個角度來理解。

類比 1:醫院急診室分流系統

一個區域醫療網絡有多個急診室 (ED)。Route 53 就是中央調度員,將病患 (DNS 查詢) 路由到正確的 ED。端點健康檢查調度員的持續撥測,詢問每個 ED「你們是否在接收病人」 —— 如果過去 30 秒內的 5 次通話中有 3 次報告「分流中」,該 ED 就被標記為不健康。

故障轉移路由指定主要/備用 ED —— 所有病患都去區域 1 級創傷中心;如果它正在分流,調度員就將病患送到 2 級中心。以延遲為基礎的路由按住址分派 —— 將病患送往最近的運作中的 ED。加權路由負載平衡分派 —— 70% 去 A 醫院,30% 去 B 醫院。

計算健康檢查調度員的綜合評估 —— 「僅當 (放射科 AND 檢驗科 AND 人員配置) 均顯示綠色時,ED 才算健康」。若子檢查失敗(如檢驗科離線),父檢查即失敗,調度員重導向。

CloudWatch 警示健康檢查營運指標觸發器 —— 「如果平均等待時間 > 90 分鐘,將 ED 標記為不健康」 —— 將基於指標的降級轉化為路由決策。

應用程式復原控制員 (ARC)手動覆寫總機 —— 醫務主任有一個明確的「全部導向備援」切換開關,該開關不依賴自動健康檢查。當主任發現自動檢查尚未捕捉到的問題時非常有用。

TTL當地救護車分派電台的快取時間 —— 如果中央調度員更新了指派,救護車每隔 TTL 秒重新整理其電台。較低的 TTL = 更快接收變更,但電台通訊量更高。

類比 2:航空公司飛機路由系統

一家航空公司在多個樞紐之間路由航班。Route 53飛行營運中心,為飛機分配位置。端點健康檢查持續的無線電輪詢,檢查每架飛機「你是否可運作」 —— 5 次中有 3 次健康表示飛機在役。

故障轉移路由主要/備用樞紐分配 —— 所有航班去 JFK;如果 JFK 關閉,重導向到 Newark。以延遲為基礎的路由距離最優樞紐選擇 —— 底特律的旅客去 ORD,亞特蘭大的旅客去 ATL。加權路由樞紐逐步遷移 —— 每週將 10% 的流量移向新航廈。

計算健康檢查樞紐就緒狀況的綜合評估 —— 「僅當 (跑道開放 AND 塔台在線 AND 地勤人員配置) 時,樞紐才算運作中」。一個子項失敗,樞紐即標記為關閉。

應用程式復原控制員 (ARC)營運總監的手動控制 —— 即明確的「關閉 JFK,重導向 Newark」切換開關,即使自動系統不同意也能運作。ARC 的就緒檢查起飛前驗證,確保備用樞紐在開關切換前確實具備燃油、登機門和機組人員。

多值回答路由具備備援的負載平衡分派 —— 返回最多 8 個健康的 IP 供客戶端選擇,沒有偏好,只是排除不健康的 IP。

類比 3:多分行銀行容錯

一個銀行網絡在多個城市設有分行。Route 53客服中心,將客戶電話導向正確的分行。端點健康檢查是針對每家分行客服線的電話心跳

故障轉移路由城市主要/備用分行對 —— 所有電話打給 A 分行;如果 A 分行電話斷線,轉向 B 分行。地理位置路由法律轄區路由 —— 歐盟客戶導向歐盟分行(合規),美國客戶導向美國分行。

計算健康檢查分行就緒狀況的綜合評估 —— 「僅當 (網絡在線 AND 櫃員在崗 AND 金庫可存取) 時,分行才算正常」。CloudWatch 警示健康檢查服務等級指標觸發器 —— 「如果平均通話等待 > 5 分鐘,路由至備用分行」。

應用程式復原控制員 (ARC)銀行總裁的緊急控制 —— 無論自動檢查如何,總裁都可以手動切換路由。ARC 的安全規則防止危險的操作(如「禁止同時將所有 4 個區域中心標記為失敗」)。

對於健康檢查語義(端點、計算、CloudWatch 警示),醫院急診調度員是最清晰的心法。對於 ARC 與 Route 53 健康檢查的區別,航空公司營運總監的手動覆寫捕捉到了明確 vs 自動的區別。對於路由策略類型,銀行分行路由更具體。參考:https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover.html

路由策略詳解

Route 53 支持八種路由策略,每種都在 DOP-C02 情境中有所測試。

故障轉移路由 (Failover Routing)

兩個同名記錄且 RoutingPolicy=FAILOVER:一個為 Primary,另一個為 Secondary。兩者都必須具備健康檢查。當主要記錄不健康時,Route 53 返回次要記錄;否則返回主要記錄。如果兩者都不健康,Route 53 會將主要記錄作為最後手段返回(嘗試總比返回 NXDOMAIN 好)。

對於主動-被動跨區域架構,這是正統模式:主要指向 us-east-1 的 ALB,次要指向 us-west-2 的 ALB。

以延遲為基礎的路由 (Latency-Based Routing)

根據解析器 IP 測得的延遲最低的 AWS 區域返回記錄。AWS 維護一個全球延遲資料庫。最適合服務終端使用者流量的主動-主動跨區域架構。

結合健康檢查:如果延遲最低的區域不健康,則返回次優區域。

加權路由 (Weighted Routing)

多個同名記錄且具備權重值;Route 53 按權重比例返回記錄。常見模式:

  • 90/10 金絲雀:10% 流量去新版本,90% 去舊版本。
  • 50/50 主動-主動。
  • 將記錄權重設為 0 以在不刪除的情況下排空流量(不返回該記錄)。

地理位置路由 (Geolocation Routing)

根據解析器的地理位置(國家或美國州,具備預設回退項)返回記錄。用於合規限制(「歐盟使用者導向歐盟伺服器」)或內容本地化。

地理鄰近路由 (Geoproximity Routing)

類似地理位置但具備「偏差 (Bias)」值(-99 到 +99),可將流量引向或引離某個區域。需要使用 Route 53 Traffic Flow。

多值回答路由 (Multivalue Answer Routing)

隨機返回最多 8 個健康的記錄,沒有偏好。具備健康檢查感知功能。這是一種輕量級的負載分佈方式,無需 ELB 成本。

基於 IP 的路由 (IP-Based Routing)

根據解析器 IP 是否位於配置的 CIDR 區塊內來返回記錄。適用於 ISP 感知路由或具有已知出口 IP 的大型企業。

簡單路由 (Simple Routing)

每個名稱一個記錄。沒有健康檢查(無法附加)。這是最簡單的預設選項。

您無法將健康檢查附加到簡單路由記錄。如果您需要具備健康檢查感知的路由,請使用故障轉移、延遲、加權、多值回答、地理位置或地理鄰近路由。考試經常將「主動-被動設置中的簡單路由」作為錯誤答案進行測試。參考:https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy.html

健康檢查類型

三種主要的健康檢查類型可以組合成複雜的監控體系。

端點健康檢查 (Endpoint Health Check)

從 Route 53 的全球檢查員集群(15 個以上區域)探查 HTTP/HTTPS/TCP 端點。評估 N 個中的 3 個健康閾值:

  • 請求間隔:10 或 30 秒。
  • 失敗閾值:連續失敗的次數(預設 3 次)。
  • 字串比對(針對 HTTP/HTTPS):要求回應主體中包含特定子字串才算健康。
  • 具備 SNI 的 HTTPS:支持現代 TLS 端點。
  • 延遲圖表:選用,增加延遲監控。

端點檢查看到的是外部客戶端看到的內容 —— 可連通性和內容。它們無法評估內部指標(如佇列深度)。

計算健康檢查 (Calculated Health Check)

使用邏輯表達式結合子檢查的父檢查。最簡單形式:子項 1 健康 AND 子項 2 健康。更複雜形式:至少 (子項 1, 子項 2, 子項 3, 子項 4) 中的 2 個健康

適用於「僅當前端 AND 後端 AND DB 複本均健康時,網站才算健康」的模式。

CloudWatch 警示健康檢查

監視 CloudWatch 警示。當警示轉換為 ALARM 時,健康檢查為不健康。使用案例:

  • 「如果 RDS 複寫延遲 > 30 秒,將路由標記為不健康」 —— 在客戶端命中過時數據前觸發故障轉移。
  • 「如果 5 分鐘內 5xx 錯誤率 > 1%,將路由標記為不健康」 —— 覆蓋端點檢查可能遺漏的應用層故障。
  • 「如果佇列深度 > 10000 條訊息,將路由標記為不健康」 —— 覆蓋背壓情境。

當警示為 ALARM 時,Route 53 將健康檢查標記為不健康;當警示為 OKINSUFFICIENT_DATA 時,標記為健康。有一個 InvertHealthcheck 旗標可以翻轉此邏輯。許多考生假設 INSUFFICIENT_DATA 預設為不健康;事實並非如此。請務必明確處理缺失數據。參考:https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/health-checks-monitor-cloudwatch-alarms.html

DNS TTL 與故障轉移 RTO

Route 53 健康檢查失敗觸發故障轉移的最小 RTO 下限受以下因素限制:

  • 健康檢查偵測:3 次連續 30 秒失敗 = 90 秒(若為 10 秒間隔則為 30 秒)。
  • DNS 傳播:TTL(解析器在 TTL 到期前快取舊答案)。

對於「60 秒內故障轉移」的要求,請將 TTL 設為 30 秒,並使用 10 秒間隔的健康檢查。請注意,某些解析器(企業 DNS、某些 ISP)會忽略 TTL,快取時間長於指令要求。

對於低於 30 秒的故障轉移,單靠基於 DNS 的故障轉移是不夠的 —— 您需要 ARC 路由控制或負載平衡器層級的故障轉移。

即使具備即時的健康檢查偵測,下游 DNS 解析器也會快取舊答案直到 TTL 到期。300 秒的 TTL 意味著客戶端在看到新記錄前可能需要等待高達 300 秒。為了快速故障轉移,TTL 必須為數十秒;對於極速故障轉移,請改用 ARC 路由控制或區域內多亞區負載平衡。參考:https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover.html

應用程式復原控制員 (ARC)

ARC 為跨區域復原增加了除 Route 53 健康檢查之外的兩項關鍵能力。

就緒檢查 (Readiness Checks)

持續評估備援區域是否準備好接管

  • 區域間容量匹配(ASG 尺寸、RDS 複本容量)。
  • 配置匹配(安全性群組規則、VPC 對等互連)。
  • 複寫延遲(DynamoDB 全球資料表、RDS 跨區域複本)。

就緒檢查針對每個資源群組返回狀態(READYNOT_READY)。此訊號讓操作員避免故障轉移到一個尚未準備就緒的備援區域。

路由控制與叢集 (Routing Controls and Clusters)

路由控制是明確的 On/Off 開關,可在不依賴健康檢查評估的情況下切換 Route 53 記錄。每個路由控制都與一個監視控制狀態的 Route 53 健康檢查配對。

ARC 建立一個由跨區域 5 個控制端點組成的叢集 (Cluster)。操作員透過叢集的區域端點切換路由控制;叢集確保在確認前,任何切換在所有 5 個區域都是持久的。叢集為控制平面操作提供 99.999% 的可用性 —— 高於應用程式的數據平面。

路由控制群組層級的安全規則防止危險的組合 —— 「禁止同時將超過 2 個路由控制設為 Off」,防止意外關閉所有區域。

何時 ARC 優於單獨使用 Route 53 健康檢查

  • 當故障模式發生在應用程式上游(例如相依服務降級但端點檢查仍通過)。
  • 當操作員必須手動核准故障轉移時。
  • 當故障轉移觸發器需要 99.999% 的控制平面可用性時。
  • 當您想要進行不修改健康檢查的演練測試時。

主動-主動 vs 主動-被動模式

兩種正統的跨區域模式:

主動-被動 (Active-Passive)

主要區域處理所有流量;次要區域已配置但接收不到流量。RTO 和 RPO 取決於:

  • DNS TTL(故障轉移延遲)。
  • 健康檢查偵測(通常 90 秒)。
  • 備援區域預熱時間(若是縮減規模的)。
  • 數據複寫延遲 (RPO)。

穩態成本較低,但 RTO 較高。Route 53 中的故障轉移路由是其正統機制。

主動-主動 (Active-Active)

兩個區域同時處理流量。以延遲為基礎的路由將流量分配到最近的健康區域。故障轉移是自動且近乎即時的 —— 若一個區域的記錄變為不健康,流量立即流向另一個區域。

穩態成本較高(運行雙倍容量),RTO 較低(無需預熱),且活動負載本身驗證了備援區域已就緒。

常考陷阱 (Common Pitfalls)

  1. 嘗試將健康檢查附加到簡單路由記錄:不支持。請切換為故障轉移或多值回答路由。
  2. 將 DNS TTL 視為保證:某些解析器快取時間更長;設計時應考慮到部分客戶在 TTL 過後仍看到舊答案。
  3. 忘記 CloudWatch 警示健康檢查將 INSUFFICIENT_DATA 視為健康:請明確處理數據缺失的情況。
  4. 僅使用端點檢查處理應用層問題:端點檢查看到的是連通性而非錯誤率。請結合 CloudWatch 警示健康檢查。
  5. 透過 DNS 編輯進行手動故障轉移:太慢;請使用 ARC 路由控制或具備流量流 (Traffic Flow) 的加權路由。
  6. 將以延遲為基礎的路由作為唯一的故障轉移機制:延遲路由返回最低延遲的健康區域;對於明確的主要/次要設置,請使用故障轉移策略。
  7. 忘記 ARC 的管理/帳單帳戶上下文是區域性的:ARC 叢集跨越區域,但路由控制的範圍限於其目標記錄。

DOP-C02 考試優先順序 —— 使用 Route 53 與健康檢查實現跨區域故障轉移。 此主題在 DOP-C02 考試中佔有舉足輕重的地位。掌握各 AWS 服務公開的權衡、決策邊界和成本/效能觸發因素 —— 考試將測試那些依賴於知道哪個服務是錯誤答案的情境,而不僅僅是哪個是正確的。

常見問題

Q1:Route 53 最快的故障轉移時間是多少?

健康檢查 10 秒間隔且失敗閾值為 1 = 10 秒偵測。TTL = 10 秒 = 10 秒 DNS 傳播。最佳情況約 20-30 秒,但現實世界的解析器可能快取更久。若需亞秒級故障轉移,請使用區域內 ALB 目標群組故障轉移,或具備跨區域故障轉移功能的 Global Accelerator。

Q2:我何時應該使用 ARC 而非單獨使用 Route 53 健康檢查?

當您需要:明確的操作員控制故障轉移、故障轉移前的就緒檢查、99.999% 的控制平面可用性,或在不影響健康檢查的情況下進行演練測試。ARC 在 Route 53 健康檢查之上增加了明確性和安全性 —— 您通常會兩者並用。

Q3:Global Accelerator 與 Route 53 跨區域路由有何不同?

Global Accelerator 使用來自 AWS 邊緣站點的 Anycast IP,透過 AWS 骨幹網絡路由流量,當端點不健康時可實現亞秒級故障轉移。Route 53 使用 DNS —— 受 TTL 快取限制。Global Accelerator 是延遲敏感型全球應用的更好選擇;Route 53 更便宜且適用於所有工作負載。

Q4:Route 53 健康檢查可以評估來自其他 AWS 帳戶的指標嗎?

CloudWatch 警示健康檢查引用的是與健康檢查相同帳戶中的警示。對於跨帳戶情境,請在健康檢查所屬帳戶中使用 CloudWatch 複合警示(彙總來自跨帳戶指標流的指標),或使用由跨帳戶 EventBridge 規則切換的 ARC 路由控制。

Q5:如何測試 Route 53 故障轉移?

方法:(1) 在 Route 53 主控台手動將主要記錄的健康檢查標記為不健康;(2) 故意破壞端點(停止 ALB 目標);(3) 在測試叢集中切換 ARC 路由控制。每季運行演練以驗證 RTO 假設。

Q6:每個故障轉移策略對支持的最大記錄數是多少?

故障轉移路由策略精確支持兩個記錄:一個主要,一個次要。若要按優先順序支持超過兩個區域,請使用分層策略(例如主要記錄返回一個記錄,而該記錄本身是跨多個區域的延遲策略)。

Q7:為什麼我的 Route 53 健康檢查會出現震盪 (Flapping)?

常見原因:(1) 端點位於 ALB 後方且未排除 /healthz,導致 ALB 本身過載;(2) 動態內容的字串比對失敗;(3) HTTPS 檢查的 TLS 憑證或 SNI 問題;(4) 健康檢查目標的解析器級 DNS 問題。針對 HealthCheckPercentageHealthy 指標增加 CloudWatch 警示以識別模式。

總結

Route 53 跨區域故障轉移是路由策略、健康檢查、DNS TTL 以及(針對高風險情境)應用程式復原控制員的綜合應用。主動-被動選擇故障轉移路由,主動-主動選擇延遲路由,金絲雀選擇加權路由,合規要求選擇地理位置路由。將端點健康檢查與計算健康檢查及 CloudWatch 警示健康檢查結合,以同時捕捉連通性和應用層健康狀況。使用 ARC 實現明確的操作員控制、就緒驗證和 99.999% 的控制平面可用性。記住 TTL 對 RTO 的限制、N 分之 3 的端點檢查評估、CloudWatch 警示檢查的 INSUFFICIENT_DATA 語義以及 8 種路由策略分類。掌握了這些,跨區域故障轉移情境題目就能迎刃而解。

官方資料來源

更多 DOP-C02 主題