

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 複雜 Amazon Route 53 組態中運作狀態檢查的運作方式
<a name="dns-failover-complex-configs"></a>

在複雜組態中檢查資源運作狀態的運作方式和簡單組態大致相同。不過，在複雜組態中，您會使用別名記錄 (例如加權別名和容錯移轉別名) 和非別名記錄的組合來建置決策樹，以更一步控制 Route 53 回應請求的方式。

例如，您可以使用延遲別名記錄來選擇一個接近使用者的區域，並對每個區域內的兩個或多個資源使用加權記錄，以防止單一端點或可用區域故障。下圖顯示此組態。

![\[包含延遲別名記錄和加權別名記錄的 DNS 組態。\]](http://docs.aws.amazon.com/zh_tw/Route53/latest/DeveloperGuide/images/hc-latency-alias-weighted.png)


以下是如何配置 Amazon EC2 和 Route 53 的方式。我們先從樹狀目錄的底端開始，因為這將是您建立記錄的順序：
+ 您在 us-east-1 和 ap-southeast-2 這兩個區域中，各有兩個 EC2 執行個體。您想讓 Route 53 將流量路由到正常運作的 EC2 執行個體，所以您要為每個執行個體建立運作狀態檢查。您設定每個運作狀態檢查，以將運作狀態檢查請求傳送給對應的執行個體 (位於執行個體的彈性 IP 地址)。

  Route 53 是一項全球服務，因此您不必指定要建立運作狀態檢查的區域。
+ 您想要根據執行個體類型，將流量路由到每個區域中的兩個執行個體，因此您建立每個執行個體的加權記錄，並為每個記錄設定權重。(您可以稍後變更權重，將更多或更少的流量路由到執行個體。) 您也可以將適用的運作狀態檢查與每個執行個體建立關聯。

  當您建立記錄時，您會使用類似 as us-east-1-www.example.com. 和 ap-southeast-2-www.example.com 的名稱。等到您位於樹狀目錄頂端時，即可為記錄命名，以讓使用者用來存取您的網站或 Web 應用程式，例如 example.com。
+ 您想要將流量路由到可為使用者提供最低延遲的區域，因此您針對樹狀目錄頂端的記錄，選擇延遲[路由政策](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy.html)。

  您想要將流量路由到每個區域中的*記錄*，而不是直接路由到每個區域中的*資源* (加權記錄會處理這項作業)。因此，您可以建立延遲[別名記錄](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resource-record-sets-choosing-alias-non-alias.html)。

  當您建立別名記錄時，您可為其命名以讓使用者用來存取您的網站或 Web 應用程式，例如 example.com。別名記錄可將 example.com 的流量路由到 us-east-1-www.example.com 和 ap-southeast-2-www.example.com 記錄。

  對於這兩個延遲別名記錄，您將 **Evaluate Target Health (評估目標運作狀態)** 設為 **Yes (是)**。這可讓 Route 53 先判斷區域中是否有任何正常運作的資源，再嘗試路由流量至此。如果沒有，Route 53 會選擇其他區域中正常運作的資源。

![\[包含延遲別名記錄和加權別名記錄的 DNS 組態。\]](http://docs.aws.amazon.com/zh_tw/Route53/latest/DeveloperGuide/images/hc-latency-alias-weighted-both-failed.png)


上圖說明下列事件序列：

1. Route 53 收到對 example.com 的查詢。根據使用者提出請求的延遲，Route 53 為 us-east-1 區域選擇延遲別名記錄。

1. Route 53 根據權重選擇加權記錄。延遲別名記錄的 **Evaluate Target Health (評估目標運作狀態)** 為 **Yes (是)**，因此 Route 53 會檢查所選加權記錄的運作狀態。

1. 運作狀態檢查失敗，因此 Route 53 根據權重選擇另一個加權記錄，並檢查其運作狀態。該記錄也是狀況不良。

1. Route 53 退出該樹分支，尋找具有次佳延遲的延遲別名記錄，並選擇 ap-southeast-2 的記錄。

1. Route 53 會再次根據權重選取記錄，然後檢查所選資源的運作狀態。資源正常運作，因此 Route 53 會傳回適用的值，以回應查詢。

**Topics**
+ [將運作狀態檢查與別名記錄關聯時會發生什麼情況？](#dns-failover-complex-configs-hc-alias)
+ [當您忽略運作狀態檢查時會發生什麼情況？](#dns-failover-complex-configs-hc-omitting)
+ [當您將「evaluate target health (評估目標運作狀態)」設為「No (否)」時會發生什麼情況？](#dns-failover-complex-configs-eth-no)

## 將運作狀態檢查與別名記錄關聯時會發生什麼情況？
<a name="dns-failover-complex-configs-hc-alias"></a>

不論您是否要將 **Evaluate Target Health (評估目標運作狀態)** 的值設為 **Yes (是)**，您都可以將運作狀態檢查與別名記錄建立關聯。不過，如果 Route 53 根據基礎資源 (HTTP 伺服器、資料庫伺服器，以及別名記錄參照的其他資源) 的運作狀態來回應查詢，通常會更有用。例如，假設以下組態：
+ 將運作狀態檢查指派至其別名目標是一組加權記錄的延遲別名記錄。
+ 對於這個延遲別名記錄，將 **Evaluate Target Health (評估目標運作狀態)** 設為 **Yes (是)**。

在這個組態，以下兩個條件必須為真，Route 53 才會為加權記錄傳回適用的值：
+ 與延遲別名記錄相關的運作狀態檢查必須通過。
+ 因為與已通過的運作狀態檢查關聯，或未與運作狀態檢查關聯，至少一個加權記錄必須被視為正常運作。在後一個案例中，Route 53 永遠會將加權記錄視為正常運作。

在下圖中，左上角延遲別名記錄的運作狀態檢查失敗。因此，如果查詢使用任何延遲別名記錄參考的加權記錄，即使它們都是正常運作，Route 53 也不再使用這些記錄來回應查詢。只有當延遲別名記錄的運作狀態檢查再次正常運作時，Route 53 才會再次開始參考這些加權記錄。(如需了解例外情況，請參閱 [當您已設定運作狀態檢查時，Amazon Route 53 會如何選擇記錄當您已設定運作狀態檢查時，Route 53 會如何選擇記錄](health-checks-how-route-53-chooses-records.md)。) 

![\[DNS 組態，其中包含 Evaluate Target Health (評估目標運作狀態) 設為 Yes (是) 且具有運作狀態檢查的別名記錄。\]](http://docs.aws.amazon.com/zh_tw/Route53/latest/DeveloperGuide/images/hc-latency-alias-weighted-alias-hc-failed.png)


## 當您忽略運作狀態檢查時會發生什麼情況？
<a name="dns-failover-complex-configs-hc-omitting"></a>

在複雜組態中，您必須將運作狀態檢查與所有非別名記錄建立關聯。在下列範例中，us-east-1 區域的其中一個加權記錄缺少運作狀態檢查：

![\[DNS 組態，其中包含一個失敗的運作狀態檢查，以及一個沒有運作狀態檢查的記錄。\]](http://docs.aws.amazon.com/zh_tw/Route53/latest/DeveloperGuide/images/hc-latency-alias-weighted-missing-health-check.png)


在這個組態，當您忽略非別名記錄的運作狀態檢查，發生的情況如下：

1. Route 53 收到對 example.com 的查詢。根據使用者提出請求的延遲，Route 53 為 us-east-1 區域選擇延遲別名記錄。

1. Route 53 為延遲別名記錄尋找別名目標，並檢查對應運作狀態檢查的狀態。一個加權記錄的運作狀態檢查失敗，因此不考慮該記錄。

1. us-east-1 區域的別名目標中的令一個加權記錄沒有運作狀態檢查。對應的資源可能正常運作或可能狀況不良，但沒有運作狀態檢查，Route 53 無從了解。Route 53 假設資源正常，並傳回適用的值，以回應查詢。

## 當您將「evaluate target health (評估目標運作狀態)」設為「No (否)」時會發生什麼情況？
<a name="dns-failover-complex-configs-eth-no"></a>

一般而言，您應該將樹狀目錄中所有別名記錄的 **Evaluate Target Health (評估目標運作狀態)** 設為 **Yes (是)**。如果您將 **Evaluate Target Health (評估目標運作狀態)** 設為 **No (否)**，則即使別名記錄所參考記錄的運作狀態檢查失敗，Route 53 仍會持續將流量路由到這些記錄。

在下列範例中，所有加權記錄都有相關聯的運作狀態檢查，但 us-east-1 區域中延遲別名記錄的 **Evaluate Target Health (評估目標運作狀態)** 設為 **No (否)**：

![\[DNS 組態，其中包含 Evaluate Target Health (評估目標運作狀態) 設為 No (否) 的別名記錄。\]](http://docs.aws.amazon.com/zh_tw/Route53/latest/DeveloperGuide/images/hc-latency-alias-weighted-eth-is-no.png)


在這個組態中，當您將別名記錄的 **Evaluate Target Health (評估目標運作狀態)** 設為 **No (否)** 時，發生的情況如下：

1. Route 53 收到對 example.com 的查詢。根據使用者提出請求的延遲，Route 53 為 us-east-1 區域選擇延遲別名記錄。

1. Route 53 判斷延遲別名記錄的別名目標，並檢查對應運作狀態檢查。兩個檢查都失敗。

1. 由於 us-east-1 區域中延遲別名記錄的 **Evaluate Target Health (評估目標運作狀態)** 值是 **No (否)**，Route 53 必須在這個分支中選擇一個記錄，而不是退出分支並在 ap-southeast-2 區域中尋找正常運作的記錄。