

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

# 設定 DNS 備援
<a name="dns-failover-configuring"></a>

當您有多個執行相同功能的資源 (例如，多個 HTTP 伺服器或郵件伺服器)，您可以設定 Amazon Route 53 檢查資源的運作狀態並僅使用正常的資源來回應 DNS 查詢。例如，假設您的網站 example.com 由六個伺服器託管，這些伺服器位於三個全球資料中心，每個資料中心兩個伺服器。您可以設定 Route 53 檢查這些伺服器的運作狀態，並僅使用目前正常的伺服器來回應對 example.com 的 DNS 查詢。

Route 53 可以檢查簡單和複雜組態中之資源的運作狀態：
+ 在簡單組態中，您可以建立一組全含有相同名稱和類型的記錄 (例如 example.com 類型 A 的加權記錄群組)。然後，設定 Route 53 來檢查對應資源的運作狀態。Route 53 會根據資源的運作狀態來回應 DNS 查詢。如需詳細資訊，請參閱[簡單 Amazon Route 53 組態中運作狀態檢查的運作方式簡單組態中運作狀態檢查的運作方式](dns-failover-simple-configs.md)。
+ 在較為複雜的組態中，您可以依據多項條件來建立記錄樹狀目錄以路由流量。例如，如果使用者的延遲狀態是您最重要的條件，您可以使用延遲別名記錄將流量路由到可提供最佳延遲性的區域。延遲別名記錄和別名目標一樣，在每個區域中都可以有加權記錄。加權記錄可根據執行個體類型，將流量路由到 EC2 執行個體。如同簡單的組態一樣，您可以將 Route 53 設為依據資源的運作狀態來路由流量。如需詳細資訊，請參閱[複雜 Amazon Route 53 組態中運作狀態檢查的運作方式複雜組態中運作狀態檢查的運作方式](dns-failover-complex-configs.md)。

**Topics**
+ [設定 DNS 備援的任務清單](dns-failover-how-to.md)
+ [簡單 Amazon Route 53 組態中運作狀態檢查的運作方式](dns-failover-simple-configs.md)
+ [複雜 Amazon Route 53 組態中運作狀態檢查的運作方式](dns-failover-complex-configs.md)
+ [當您已設定運作狀態檢查時，Amazon Route 53 會如何選擇記錄](health-checks-how-route-53-chooses-records.md)
+ [主動-主動和主動-被動容錯移轉](dns-failover-types.md)
+ [在私有託管區域中設定容錯移轉](dns-failover-private-hosted-zones.md)
+ [Amazon Route 53 如何避免容錯移轉問題](dns-failover-problems.md)

# 設定 DNS 備援的任務清單
<a name="dns-failover-how-to"></a>

若要使用 Route 53 來設定 DNS 備援，請執行以下任務：

1. 繪製組態的樹狀圖，並指定要為每個節點建立的記錄類型 (加權別名、容錯移轉、延遲等等)。在樹狀目錄頂端，放置記錄的網域名稱 (例如 example.com)，以讓使用者用來存取您的網站或 Web 應用程式。

   此類型的記錄會依據組態的複雜性顯示在您的樹狀圖中：
   + 在簡單組態中，您的圖表可能不含任何別名記錄，或別名記錄會將流量直接路由到資源 (例如 ELB 負載平衡器)，而不是到另一個 Route 53 記錄。如需詳細資訊，請參閱[簡單 Amazon Route 53 組態中運作狀態檢查的運作方式簡單組態中運作狀態檢查的運作方式](dns-failover-simple-configs.md)。
   + 在複雜的組態，您的圖表會在多層級樹中包含別名記錄 (例如加權別名和容錯移轉別名) 和非別名記錄的組合，如 [複雜 Amazon Route 53 組態中運作狀態檢查的運作方式複雜組態中運作狀態檢查的運作方式](dns-failover-complex-configs.md) 主題中的範例。
**注意**  
若要快速且輕鬆地為複雜路由組態建立記錄，並將記錄與運作狀態檢查關聯，您可以使用流量流程視覺化編輯器，並將組態儲存為流量政策。然後，您可以將流量政策與相同託管區域或多個託管區域中的一或多個網域名稱 (例如 example.com) 或子網域名稱 (如 www.example.com) 關聯。此外，如果新組態執行不如預期，您可以復原更新。如需詳細資訊，請參閱[使用流量流程路由 DNS 流量](traffic-flow.md)。

   如需詳細資訊，請參閱下列 文件：
   + [選擇路由政策](routing-policy.md)
   + [選擇別名或非別名記錄](resource-record-sets-choosing-alias-non-alias.md)

1. 針對無法建立別名記錄的資源 (例如 Amazon EC2 伺服器與執行於資料中心的電子郵件伺服器)，建立運作狀態檢查。您會將這些運作狀態檢查與您的非別名記錄關聯。

   如需詳細資訊，請參閱[建立、更新和刪除運作狀態檢查](health-checks-creating-deleting.md)。

1. 如有必要，請設定路由器和防火牆規則，讓 Route 53 可以將一般請求傳送給您在運作狀態檢查中指定的端點。如需詳細資訊，請參閱[為 Amazon Route 53 運作狀態檢查設定路由器和防火牆規則為運作狀態檢查設定路由器和防火牆規則](dns-failover-router-firewall-rules.md)。

1. 在圖表中建立所有非別名記錄，並將步驟 2 中建立的運作狀態檢查與適用的記錄建立關聯。

   如果您是在不含任何別名記錄的組態中設定 DNS 備援，請跳過其餘的任務。

1. 建立將流量路由到 AWS 資源的別名記錄，例如 ELB 負載平衡器和 CloudFront 分佈。如果您希望 Route 53 在資源狀況不良時嘗試樹狀目錄的其他分支，請將每個別名記錄的 **Evaluate Target Health (評估目標運作狀態)** 設為 **Yes (是)**。（某些 AWS 資源不支援**評估目標運作狀態**。)

1. 從步驟 1 建立的樹狀圖底部開始，建立別名記錄以將流量路由到您在步驟 4 和 5 建立的記錄。如果您希望 Route 53 在樹狀目錄某個分支中的所有非別名記錄都是狀況不良時嘗試該樹狀目錄的其他分支，請將每個別名記錄的 **Evaluate Target Health (評估目標運作狀態)** 設為 **Yes (是)**。

   請記住，您必須先建立其他記錄之後，才能建立別名記錄來將流量路由到其他記錄。

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

當您有兩個或多個執行相同功能的資源 (例如兩個或多個 Web 伺服器用於 example.com)，您可以使用下列運作狀態檢查功能，僅將流量路由到正常運作的資源：

**檢查 EC2 執行個體和其他資源的運作狀態 (非別名記錄)**  
如果您要將流量路由到無法建立別名記錄的資源 (例如 EC2 執行個體)，則可以為每個資源建立記錄和運作狀態檢查。然後，再將每個運作狀態檢查與適用的記錄建立關聯。運作狀態檢查會定期檢查對應資源的運作狀態，而 Route 53 只會將流量路由到運作狀態檢查回報為正常運作的資源。

**評估 AWS 資源的運作狀態 （別名記錄）**  
如果您使用[別名記錄](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resource-record-sets-choosing-alias-non-alias.html)將流量路由到選取的 AWS 資源，例如 ELB 負載平衡器，您可以設定 Route 53 來評估資源的運作狀態，並僅將流量路由到運作狀態良好的資源。當您設定別名記錄以評估資源的運作狀態時，即不需要建立資源的運作狀態檢查。

以下是如何設定 Route 53 以在簡單組態中檢查資源運作狀態的概觀：

1. 您識別出希望 Route 53 監控的資源。例如，您可能想要監控對 example.com 請求有所回應的所有 HTTP 伺服器。

1. 您可以針對無法建立別名記錄的資源 (例如 EC2 執行個體或您自己資料中心裡的伺服器)，建立運作狀態檢查。您可以指定如何傳送運作狀態檢查請求給資源：使用哪個通訊協定 (HTTP、HTTPS 或 TCP)、使用哪個 IP 地址和連接埠，以及網域名稱和路徑 (針對 HTTP/HTTPS 運作狀態檢查)。
**注意**  
如果您使用任何可以建立別名記錄的資源 (例如 ELB 負載平衡器)，請不要為這些資源建立運作狀態檢查。

   常見組態是為每個資源建立一個運作狀態檢查，並對運作狀態檢查端點使用與資源相同的 IP 地址。運作狀態檢查會將請求傳送到指定的 IP 地址。
**注意**  
如果資源的 IP 地址位於本機、私有、不可路由或多點傳送範圍內，Route 53 就無法檢查這類資源的運作狀態。如需無法建立運作狀態檢查的 IP 地址詳細資訊，請參閱 [RFC 5735, Special Use IPv4 Addresses](https://datatracker.ietf.org/doc/html/rfc5735) 和 [RFC 6598, IANA-Reserved IPv4 Prefix for Shared Address Space](https://datatracker.ietf.org/doc/html/rfc6598)。

   如需如何建立運作狀態檢查的詳細資訊，請參閱 [建立、更新和刪除運作狀態檢查](health-checks-creating-deleting.md)。

1. 您可能需要設定路由器和防火牆規則，讓 Route 53 可以向運作狀態檢查中指定的端點傳送一般請求。如需詳細資訊，請參閱[為 Amazon Route 53 運作狀態檢查設定路由器和防火牆規則為運作狀態檢查設定路由器和防火牆規則](dns-failover-router-firewall-rules.md)。

1. 您可以建立資源的記錄群組，例如加權記錄群組。您可以混合別名和非別名記錄，但它們必須全擁有相同的 **Name (名稱)**、**Type (類型)** 和 **Routing Policy (路由政策)** 值。

   要如何設定 Route 53 以檢查資源運作的狀態，取決於您建立的是別名記錄或非別名記錄而定：
   + **別名記錄** – 將 **Evaluate Target Health (評估目標運作狀態)** 指定為 **Yes (是)**。
   + **非別名記錄** – 將步驟 2 建立的運作狀態檢查與對應的記錄建立關聯。

   完成後，您的組態如下圖所示，其中僅包含非別名記錄。  
![\[三個加權記錄和對應的運作狀態檢查。\]](http://docs.aws.amazon.com/zh_tw/Route53/latest/DeveloperGuide/images/hc-weighted.png)

   如需如何使用 Route 53 主控台建立記錄的詳細資訊，請參閱 [使用 Amazon Route 53 主控台來建立記錄](resource-record-sets-creating.md)。

1. 如果您已建立運作狀態檢查，Route 53 會定期傳送請求給端點以進行每次運作狀態檢查，而不會在接收 DNS 查詢時執行運作狀態檢查。根據回應，Route 53 決定端點是否正常運作，並使用該資訊來確定如何回應查詢。如需詳細資訊，請參閱[Amazon Route 53 決定運作狀態檢查是否良好的方式Route 53 決定運作狀態檢查是否良好的方式](dns-failover-determining-health-of-endpoints.md)。

   Route 53 不會檢查記錄中所指定資源的運作狀態，例如 example.com 的 A 記錄中所指定的 IP 地址。當您將運作狀態檢查與記錄關聯時，Route 53 會開始檢查您在運作狀態檢查中所指定端點的運作狀態。您也可以設定 Route 53 來監控其他運作狀態檢查的運作狀態，或監控 CloudWatch 警示的資料串流。如需詳細資訊，請參閱[Amazon Route 53 運作狀態檢查的類型運作狀態檢查的類型](health-checks-types.md)。

當 Route 53 收到對 example.com 的查詢，發生的情況如下：

1. Route 53 根據路由政策選擇記錄。在這種情況下，它會根據權重選擇記錄。

1. 它會檢查該記錄運作狀態檢查的狀態，來決定所選記錄的目前運作狀態。

1. 如果選取的記錄狀況不良，Route 53 會選擇不同的記錄。此時，不考慮狀況不良的記錄。

   如需詳細資訊，請參閱[當您已設定運作狀態檢查時，Amazon Route 53 會如何選擇記錄當您已設定運作狀態檢查時，Route 53 會如何選擇記錄](health-checks-how-route-53-chooses-records.md)。

1. 當 Route 53 找到正常運作的記錄，即會以適用的值 (例如 A 記錄中的 IP 地址) 來回應查詢。

以下範例示範一組加權記錄，其中第三個記錄狀況不良。最初，Route 53 根據所有三個記錄的權重來選擇記錄。如果第一次碰巧選擇狀況不良的記錄，Route 53 會選擇另一個記錄，但這次從計算中省略第三個記錄的權重：
+ 當 Route 53 最初從這三個記錄中選擇，在大約 20% 的時間內 (10/(10 \$1 20 \$1 20))，它會使用第一個記錄來回應請求。
+ 當 Route 53 判斷第三個記錄狀況不良，在大約 33% 的時間內 (10/(10 \$1 20))，它會使用第一個記錄來回應請求。

![\[三個加權記錄和對應的運作狀態檢查。第三個運作狀態檢查為狀況不良，所以 Route 53 會將關聯的記錄視為狀況不良。\]](http://docs.aws.amazon.com/zh_tw/Route53/latest/DeveloperGuide/images/hc-weighted-failed-hc.png)


如果您忽略記錄群組的一或多個記錄的運作狀態檢查，Route 53 就無法判斷對應資源的運作狀態。Route 53 會將這些記錄視為正常運作。

![\[三個加權記錄，只有其中兩個有運作狀態檢查。Route 53 一律會將第三個記錄視為正常運作。\]](http://docs.aws.amazon.com/zh_tw/Route53/latest/DeveloperGuide/images/hc-weighted-missing-health-check.png)


# 複雜 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 區域中尋找正常運作的記錄。

# 當您已設定運作狀態檢查時，Amazon Route 53 會如何選擇記錄
<a name="health-checks-how-route-53-chooses-records"></a>

如果您為記錄群組中具有相同名稱、相同類型 (例如 A 或 AAAA) 和相同路由政策 (例如加權或容錯移轉) 的所有記錄設定運作狀態檢查，Route 53 會選擇正常運作的記錄，並從該記錄傳回適用的值以回應 DNS 查詢。

例如，假設您建立三個加權 A 記錄，並指派運作狀態檢查給這三個記錄。如果其中一個記錄的運作狀態檢查為狀況不良，則 Route 53 會使用另外兩個記錄其中之一的 IP 地址來回應 DNS 查詢。

Route 53 以下列方式選擇正常的記錄：

1. Route 53 一開始會根據路由政策以及您為每個記錄指定的值來選擇記錄。例如，若是加權記錄，Route 53 會根據您為每個記錄指定的權重來選擇記錄。

1. Route 53 可判斷記錄是否正常運作：
   + **非別名記錄與相關聯的運作狀態檢查** – 如果您將運作狀態檢查與非別名記錄建立關聯，Route 53 會查看運作狀態檢查的目前狀態。

     Route 53 會定期檢查在運作狀態檢查中所指定端點的運作狀態；當 DNS 查詢到達時，它不會執行運作狀態檢查。

     您可以將運作狀態檢查與別名記錄建立關聯，但我們建議您僅將運作狀態檢查與非別名記錄建立關聯。如需詳細資訊，請參閱[將運作狀態檢查與別名記錄關聯時會發生什麼情況？](dns-failover-complex-configs.md#dns-failover-complex-configs-hc-alias)。
   + **Evaluate Target Health (評估目標運作狀態) 設為 Yes (是) 的別名記錄** – Route 53 會檢查別名記錄參考的資源運作狀態，例如 ELB 負載平衡器或在相同託管區域中的其他記錄。

1. 如果記錄為正常運作，Route 53 即會以適用的值 (例如 IP 地址) 來回應查詢。

   如果記錄狀況不良，Route 53 會使用相同的條件選擇其他記錄，並重複程序直到找到正常運作的記錄為止。

Route 53 會在選擇記錄時使用以下條件：

**如果記錄不具備運作狀態檢查，則一律正常運作**  
在具有相同名稱和類型的記錄群組中，如果某個記錄不具備相關聯的運作狀態檢查，則 Route 53 一律會將它視為正常運作，且一律將它包含在可能的查詢回應中。

**如果沒有正常運作的記錄，則所有記錄都正常運作**  
如果記錄群組中的所有記錄都是狀況不良，Route 53 需要傳回某個項目以回應 DNS 查詢，但沒有用來選擇記錄的基礎。在這種情況下，Route 53 會將所有記錄視為正常運作，並依據路由政策和您為每個記錄指定的值選取一個記錄。

**權重為 0 的加權記錄**  
如果您在加權記錄群組中新增所有記錄的運作狀態檢查，但您為某些記錄設定非零權重，而為其他記錄設定零權重，則運作狀態檢查的運作方式與所有記錄都是非零權重相同，除了以下例外：  
+ Route 53 最初只考量非零加權記錄 (如果有)。
+ 如果權重大於 0 的所有記錄都是狀況不良，Route 53 會考慮零加權記錄。
由於 Route 53 在某些情況下會考慮零加權記錄，因此請務必確定零加權目標也有 DNS 查詢的可行答案。  
如需加權記錄的詳細資訊，請參閱 [運作狀態檢查和加權路由](routing-policy-weighted.md#routing-policy-weighted-healthchecks)。

**別名記錄**  
您也可以將每個別名記錄的 **Evaluate Target Health (評估目標運作狀態)** 設為 **Yes (是)**，以設定別名記錄的運作狀態檢查。這可讓 Route 53 評估記錄要將流量路由所至的資源運作狀態，例如 ELB 負載平衡器或相同託管區域中的其他記錄。  
例如，假設別名記錄的別名目標是一組全部具有非零權重的加權記錄：  
+ 只要至少有一個加權記錄正常運作，Route 53 就會認為別名記錄正常運作。
+ 如果所有加權記錄都狀況不良，Route 53 就會認為別名記錄狀況不良。
+ Route 53 會停止考慮該樹分支中的記錄，直到至少有一個加權記錄再次正常運作。
如需詳細資訊，請參閱[複雜 Amazon Route 53 組態中運作狀態檢查的運作方式複雜組態中運作狀態檢查的運作方式](dns-failover-complex-configs.md)。

**容錯移轉記錄**  
一般來說，容錯移轉記錄的運作方式與其他路由類型相同。您建立運作狀態檢查，並將它們與非別名記錄建立關聯，然後將別名記錄的 **Evaluate Target Health (評估目標運作狀態)** 設為 **Yes (是)**。注意下列事項：  
+ 主要記錄和次要記錄可以兩種都是非別名記錄或別名記錄。
+ 如果您將運作狀態檢查與主要和次要容錯移轉記錄關聯，Route 53 回應請求的方式如下：
  + 如果 Route 53 將主要記錄視為正常運作 (如果運作狀態檢查端點正常運作的話)， Route 53 只會傳回主要記錄，以回應 DNS 查詢。
  + 如果 Route 53 將主要記錄視為狀況不良，將次要記錄視為正常運作，則 Route 53 會傳回次要記錄。
  + 如果 Route 53 將主要和次要記錄都視為狀況不良，Route 53 會傳回主要記錄。
+ 當您設定次要記錄，新增運作狀態檢查是選用的。如果您省略次要記錄的運作狀態檢查，而且如果主要記錄的運作狀態檢查端點是狀況不良，Route 53 永遠會使用次要記錄來回應 DNS 查詢。即使次要記錄的狀況不良，也是如此。
如需詳細資訊，請參閱下列主題：  
+ [使用一個主要資源和一個次要資源來設定主動-被動容錯移轉](dns-failover-types.md#dns-failover-types-active-passive-one-resource)
+ [使用多個主要資源和次要資源來設定主動-被動容錯移轉](dns-failover-types.md#dns-failover-types-active-passive-multiple-resources)

# 主動-主動和主動-被動容錯移轉
<a name="dns-failover-types"></a>

您可以使用 Route 53 運作狀態檢查，設定主動-主動和主動-被動容錯移轉組態。除了容錯移轉以外，您可以使用任何[路由政策](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy.html) (或路由政策的組合) 來設定主動-主動容錯移轉，並使用容錯移轉路由政策來設定主動-被動容錯移轉。

**Topics**
+ [主動-主動容錯移轉](#dns-failover-types-active-active)
+ [主動-被動容錯移轉](#dns-failover-types-active-passive)

## 主動-主動容錯移轉
<a name="dns-failover-types-active-active"></a>

當您希望所有資源在大部分的時間都可用時，可使用此容錯移轉組態。當某個資源無法使用時，Route 53 可以偵測到它狀況不良，並在回應查詢停止包含該資源。

在主動-主動容錯移轉中，具有相同名稱、相同類型 (例如 A 或 AAAA) 和相同路由政策 (例如加權或延遲) 的所有記錄都是主動的，除非 Route 53 將它們視為狀況不良。Route 53 可以使用任何正常運作的記錄來回應 DNS 查詢。

## 主動-被動容錯移轉
<a name="dns-failover-types-active-passive"></a>

當您希望主要資源群組或其他資源群組在大部分的時間都可用，並希望次要資源或其他資源群組處於待命狀態，以防所有主要資源變成無法使用時，可使用主動-被動容錯移轉組態。當回應查詢，Route 53 只包含正常的主要資源。如果所有主要資源都是狀況不良，Route 53 就會只包含正常運作的次要資源以回應 DNS 查詢。

**Topics**
+ [使用一個主要資源和一個次要資源來設定主動-被動容錯移轉](#dns-failover-types-active-passive-one-resource)
+ [使用多個主要資源和次要資源來設定主動-被動容錯移轉](#dns-failover-types-active-passive-multiple-resources)
+ [使用加權記錄來設定主動-被動容錯移轉](#dns-failover-types-active-passive-weighted)

### 使用一個主要資源和一個次要資源來設定主動-被動容錯移轉
<a name="dns-failover-types-active-passive-one-resource"></a>

若要使用一個主要記錄和一個次要記錄來建立主動-被動容錯移轉組態，您只要建立記錄，並指定 **Failover (容錯移轉)** 的路由政策。當主要資源正常運作時，Route 53 會使用主要記錄來回應 DNS 查詢。當主要資源狀況不良時，Route 53 會使用次要記錄來回應 DNS 查詢。

### 使用多個主要資源和次要資源來設定主動-被動容錯移轉
<a name="dns-failover-types-active-passive-multiple-resources"></a>

您也可以將多個資源與主要記錄、次要記錄或兩者建立關聯。在此組態中，只要至少有一個相關聯的資源正常運作，Route 53 就會認為主要容錯移轉記錄正常運作。如需詳細資訊，請參閱[當您已設定運作狀態檢查時，Amazon Route 53 會如何選擇記錄當您已設定運作狀態檢查時，Route 53 會如何選擇記錄](health-checks-how-route-53-chooses-records.md)。

若要使用主要記錄或次要記錄的多個資源來設定主動-被動容錯移轉，請執行以下任務。

1. 針對您想要路由流量的每個資源建立運作狀態檢查，例如 EC2 執行個體或您資料中心內的 Web 伺服器。
**注意**  
如果您要將流量路由到任何可以為其建立[別名記錄](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resource-record-sets-choosing-alias-non-alias.html) AWS 的資源，請勿為這些資源建立運作狀態檢查。當您建立別名記錄時，您反而要將 **Evaluate Target Health (評估目標運作狀態)** 設為 **Yes (是)**。

   如需詳細資訊，請參閱[建立和更新運作狀態檢查](health-checks-creating.md)。

1. 為您的主要資源建立記錄，並指定以下值：
   + 為每個記錄設定相同的名稱、類型和路由政策。例如，您可以建立三個名稱均為 failover-primary.example.com 的加權 A 記錄。
   + 如果您使用的是可以為其建立別名記錄 AWS 的資源，請為評估目標運作狀態指定**是**。 ****

     如果您使用無法建立別名記錄的資源，請將步驟 1 的適用運作狀態檢查與每個記錄建立關聯。

   如需詳細資訊，請參閱[使用 Amazon Route 53 主控台來建立記錄](resource-record-sets-creating.md)。

1. 為您的次要資源建立記錄 (如適用)，並指定以下值：
   + 為每個記錄設定相同的名稱、類型和路由政策。例如，您可以建立三個名稱均為 failover-secondary.example.com 的加權 A 記錄。
   + 如果您使用的是可以為其建立別名記錄 AWS 的資源，請為評估目標運作狀態指定**是**。 ****

     如果您使用無法建立別名記錄的資源，請將步驟 1 的適用運作狀態檢查與每個記錄建立關聯。
**注意**  
有些客戶將 Web 伺服器做為主要資源，並將 Amazon S3 儲存貯體設為網站端點以做為他們的次要資源。S3 儲存貯體包含一個簡單的「暫時無法使用」訊息。如果您使用的是上述組態，則可以略過此步驟，而只建立步驟 4 次要資源的容錯移轉別名記錄。

1. 建立兩個容錯移轉別名記錄 (一個主要記錄和一個次要記錄)，並指定以下值：  
**主要記錄**  
   + **Name (名稱)** – 指定您希望 Route 53 為其路由流量的網域名稱 (example.com) 或子網域名稱 (www.example.com)。
   + **Alias (別名)** – 指定 **Yes (是)**。
   + **Alias Target (別名目標)** – 指定您在步驟 2 建立的記錄名稱。
   + **Routing Policy (路由政策)** – 指定 **Failover (容錯移轉)**。
   + **Failover Record Type (容錯移轉記錄類型)** – 指定 **Primary (主要)**。
   + **Evaluate Target Health (評估目標運作狀態)** – 指定 **Yes (是)**。
   + **Associate with Health Check (與運作狀態檢查建立關聯)** – 指定 **No (否)**。  
**次要記錄**  
   + **Name (名稱)** – 指定您為主要記錄指定的相同名稱。
   + **Alias (別名)** – 指定 **Yes (是)**。
   + **Alias Target (別名目標)** – 如果您已在步驟 3 為您的次要資源建立記錄，請指定該記錄的名稱。如果您為次要資源使用 Amazon S3 儲存貯體，請指定網站端點的 DNS 名稱。
   + **Routing Policy (路由政策)** – 指定 **Failover (容錯移轉)**。
   + **Failover Record Type (容錯移轉記錄類型)** – 指定 **Secondary (次要)**。
   + **Evaluate Target Health (評估目標運作狀態)** – 指定 **Yes (是)**。
   + **Associate with Health Check (與運作狀態檢查建立關聯)** – 指定 **No (否)**。

### 使用加權記錄來設定主動-被動容錯移轉
<a name="dns-failover-types-active-passive-weighted"></a>

您也可以將加權記錄用於主動-被動容錯移轉，並搭配警告。如果您為某些記錄指定非零權重，並為其他記錄指定零權重，則 Route 53 僅會使用具有非零權重的正常運作記錄來回應 DNS 查詢。如果權重大於 0 的所有記錄都是狀況不良，Route 53 會使用零加權記錄來回應查詢。

**注意**  
所有非零權重的記錄都必須為狀況不良，Route 53 才會開始使用零權重的記錄來回應 DNS 查詢。當其他資源無法使用時，如果最後一個正常運作的資源 (例如 Web 伺服器) 無法處理所有流量，這可能會讓您的 Web 應用程式或網站不穩定。

# 在私有託管區域中設定容錯移轉
<a name="dns-failover-private-hosted-zones"></a>

如果您要在私有託管區域中建立容錯移轉記錄，請注意以下事項：
+ Route 53 運作狀態檢查程式位於 VPC 外部。若要依 IP 地址檢查 VPC 中端點的運作狀態，您必須將公有 IP 地址指派給 VPC 中的執行個體。
+ 您可以建立 CloudWatch 指標，將警示與指標建立關聯，然後建立以警示資料串流為依據的運作狀態檢查。例如，您可以建立一個用來檢查 EC2 `StatusCheckFailed` 指標狀態的 CloudWatch 指標，將警示新增至指標，然後建立以警示資料串流為依據的運作狀態檢查，以檢查僅具有私有 IP 地址的 Virtual Private Cloud (VPC) 中的執行個體。如需使用 CloudWatch 主控台建立 CloudWatch 指標和警示的資訊，請參閱 [Amazon CloudWatch 使用者指南](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/)。

如需詳細資訊，請參閱[使用私有託管區域](hosted-zones-private.md)及[使用 CloudWatch 監控運作狀態檢查](monitoring-health-checks.md)。

# Amazon Route 53 如何避免容錯移轉問題
<a name="dns-failover-problems"></a>

Route 53 實作的容錯移轉演算法不僅可用來將流量路由到正常運作的端點，還能避免因運作狀態檢查設定錯誤以及應用程式、端點超載和分割區失敗而使災難案例惡化。

**Topics**
+ [Amazon Route 53 如何避免級聯故障](#dns-failover-cascading-failures)
+ [Amazon Route 53 如何處理網際網路分割區](#dns-failover-internet-partitions)

## Amazon Route 53 如何避免級聯故障
<a name="dns-failover-cascading-failures"></a>

做為避免串聯失敗的第一道防線，每個請求路由演算法 (如加權和容錯移轉) 都有最後解決方法的模式。在這個特殊模式中，當所有記錄都被視為狀況不良時，Route 53 演算法會回復為將所有記錄都視為正常運作。

例如，如果應用程式的所有執行個體在多個主機上都拒絕運作狀態檢查請求，Route 53 DNS 伺服器無論如何都會選擇並傳回回答，而不是不傳回 DNS 回答或傳回 NXDOMAIN (不存在的網域) 回答。應用程式可以回應使用者，但仍無法通過運作狀態檢查，因此這針對設定錯誤提供一些防護。

同樣地，如果應用程式超載，且三個端點的其中一個未通過運作狀態檢查而從 Route 53 的 DNS 回答中排除，則 Route 53 會在其餘的兩個端點之間分配回答。如果其餘的端點無法處理額外負載並失敗，Route 53 會回復為向全部三個端點請求散發。

## Amazon Route 53 如何處理網際網路分割區
<a name="dns-failover-internet-partitions"></a>

雖然不常見，但偶爾會有大型的網際網路分割事件，導致大型地理區域之間無法透過網際網路通訊的情況。在這些分割區，Route 53 位置可能會就端點的運作狀態達成不同結論，並可能不同於回報給 CloudWatch 的狀態。每個 AWS 區域中的 Route 53 運作狀態檢查程式會持續將運作狀態檢查狀態傳送至所有 Route 53 位置。在網際網路分割區，每個 Route 53 位置可能只存取這些狀態的部分集合，通常是來自最接近的區域。

例如，在影響南美洲往來連線的網際網路分割期間，Route 53 南美洲 (聖保羅) 位置中的 Route 53 DNS 伺服器可以正常存取南美洲 (聖保羅) AWS 區域中的運作狀態檢查端點，但無法存取其他位置的端點。同時，美國東部 (俄亥俄) 區域中的 Route 53 可能無法存取南美洲 (聖保羅) 區域中的運作狀態檢查端點，並斷定對應的記錄為狀況不良。

這類分割區可能會導致下列情況：Route 53 位置根據端點的本機可見性，得出有關端點運作狀態的不同結論。因此，只有一部分可連線的運作狀態檢查程式將端點視為正常運作時，每個 Route 53 位置都會將其視為正常運作。