透過 CloudFront 原始容錯移轉將高可用性 - Amazon CloudFront

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

透過 CloudFront 原始容錯移轉將高可用性

您可以針對需要高可用性的案例設定來源容錯移轉。 CloudFront 如要開始使用,您可以使用兩個原始伺服器建立原始伺服器群組:主要及次要。如果主要原點無法使用,或傳回指示失敗的特定 HTTP 回應狀態碼,則 CloudFront 會自動切換至次要來源。

若要設定原始伺服器容錯移轉,您必須至少分佈兩部原始伺服器。接著,您可以為您的分佈建立原始伺服器群組,其中包含兩個原始伺服器,並將其中一個設為主要原始伺服器。最後,您可以建立或更新快取行為,以使用原始伺服器群組。

如要查看設定原始伺服器群組和設定特定原始伺服器容錯移轉選項的步驟,請參閱 建立原始伺服器群組

設定快取行為的來源容錯移轉之後, CloudFront 請針對檢視器要求執行下列動作:

  • 當有緩存命中時, CloudFront 返回請求的對象。

  • 發生快取未命中時,會將要求 CloudFront 路由至原始群組中的主要原點。

  • 當主要來源傳回未設定用於容錯移轉的狀態碼 (例如 HTTP 2xx 或 3xx 狀態碼) 時,會將要求的物件 CloudFront 提供給檢視者。

  • 發生下列任何一種情況時:

    • 主要原始伺服器會傳回您為容錯移轉設定的 HTTP 狀態碼

    • CloudFront 無法連接到主要原點

    • 主要原始伺服器的回應花費時間太長 (逾時)

    然後將請求 CloudFront 路由至原始群組中的次要原點。

    注意

    對於某些使用案例 (例如串流視訊內容),您可能會想 CloudFront 要快速容錯移轉至次要來源。若要調整容 CloudFront 錯移轉至次要原點的速度,請參閱控制原始伺服器逾時和嘗試次數

CloudFront 將所有傳入的要求路由至主要來源,即使先前的要求失敗移轉至次要來源也是如此。 CloudFront 只有在對主要來源的要求失敗後,才會傳送要求至次要來源。

CloudFront 只有當檢視器要求的 HTTP 方法為GETHEAD或時,才容錯移轉至次要原點OPTIONS。 CloudFront 當檢視器傳送不同的 HTTP 方法 (例如POST,等等) 時PUT,不會容錯移轉。

下圖說明原始伺服器容錯移轉的運作方式。


				原始伺服器容錯移轉的運作方式

建立原始伺服器群組

建立來源群組
  1. 登入AWS Management Console並開啟 CloudFront 主控台,位於https://console.aws.amazon.com/cloudfront/v4/home

  2. 選擇您要為原始伺服器群組建立的分佈。

  3. 選擇 Origins (原始伺服器) 索引標籤。

  4. 請確定分佈有多個原始伺服器。如果沒有多個原始伺服器,請新增第二個原始伺服器。

  5. Origins (原始伺服器) 索引標籤上的 Origin groups (原始伺服器群組) 窗格中,選擇 Create Origin Group (建立原始伺服器群組)

  6. 選擇原始伺服器群組的原始伺服器。新增原始伺服器後,使用箭號來設定優先順序,即哪一個原始伺服器為主要原始伺服器,哪一個為輔助。

  7. 輸入原始伺服器群組的名稱。

  8. 選擇要用來做為容錯移轉條件的 HTTP 代碼。您可以選擇以下狀態碼的任意組合:400、403、404、416、500、502、503 或 504。當 CloudFront 收到包含您指定的其中一個狀態碼的回應時,會容錯移轉至次要原點。

    注意

    CloudFront 只有當檢視器要求的 HTTP 方法為GETHEAD或時,才容錯移轉至次要原點OPTIONS。 CloudFront 當檢視器傳送不同的 HTTP 方法 (例如POST,等等) 時PUT,不會容錯移轉。

  9. 選擇 Create origin group (建立原始伺服器群組)

如需指定原始伺服器群組進行分佈的相關資訊,請參閱 名稱

控制原始伺服器逾時和嘗試次數

預設情況下, CloudFront 會嘗試連線至原始群組中的主要原點,長達 30 秒 (3 次連線嘗試,每次嘗試 10 秒),然後再容錯移轉至次要原點。對於某些使用案例 (例如串流視訊內容),您可能會想 CloudFront 要更快速地容錯移轉至次要來源。您可以調整以下設定,以影響容 CloudFront 錯移轉至次要原點的速度。如果來源是次要原點或不屬於原始群組的來源,則這些設定會影響將 HTTP 504 CloudFront 回應傳回給檢視器的速度。

若要更快地容錯移轉,請指定較短的連線逾時、較少的連線嘗試次數或兩者。對於自訂原始伺服器 (包括使用靜態網站託管所設定的 Amazon S3 儲存貯體),您也可以調整原始伺服器回應逾時。

原始伺服器連線逾時

原始連線逾時設定會影響嘗試建立與原始連線時的 CloudFront 等待時間長度。依預設,會 CloudFront 等待 10 秒來建立連線,但您可以指定 1—10 秒 (含)。如需詳細資訊,請參閱 連線逾時。

原始伺服器連線嘗試次數

原始連線嘗試次數設定會影響 CloudFront 嘗試連線至原點的次數。依預設, CloudFront 嘗試連線 3 次,但您可以指定 1—3 (含)。如需詳細資訊,請參閱 連線嘗試

對於自訂來源 (包括使用靜態網站託管設定的 Amazon S3 儲存貯體),此設定也會影響在原始回應逾時的情況下 CloudFront 嘗試從來源取得回應的次數。

原始伺服器回應逾時
注意

這僅適用於自訂原始伺服器。

來源響應超時設置會影響從源接收響應(或接收完整響應)的 CloudFront 等待時間。依預設,會 CloudFront 等待 30 秒,但您可以指定 1—60 秒 (含)。如需詳細資訊,請參閱 回應逾時 (僅限自訂原始伺服器)

如何變更這些設定

CloudFront 主控台中變更這些設定

  • 對於新原始伺服器或新的分佈,您可以在建立資源時指定這些數值。

  • 對於現有分佈中的現有原始伺服器,您可以在編輯原始伺服器時指定這些數值。

如需更多詳細資訊,請參閱 您在建立或更新分佈時指定的值

使用原始伺服器容錯移轉與 Lambda@Edge 函數搭配

您可以將 Lambda @Edge 函數與您使用來源群組設定的發行版搭 CloudFront 配使用。如要使用 Lambda 函數,請在建立快取行為時,於原始伺服器群組的原始伺服器請求或原始伺服器回應觸發條件中進行指定。當您搭配原始伺服器群組使用 Lambda@Edge 函數時,可能會針對單一瀏覽者請求觸發函數兩次。例如,考量以下情境:

  1. 您可以使用原始伺服器請求觸發條件建立 Lambda@Edge 函數。

  2. CloudFront 傳送要求至主要來源 (在快取未命中時) 時,Lambda 函數會觸發一次。

  3. 主要原始伺服器會回應為容錯移轉設定的 HTTP 狀態碼。

  4. 將相同的請求發 CloudFront 送到次要原點時,Lambda 函數會再次觸發。

下圖說明當您在原始伺服器請求或回應觸發中包括 Lambda@Edge 函數時,原始伺服器容錯移轉的運作方式。


					原始伺服器容錯移轉如何使用 Lambda@Edge 函數

如需使用 Lambda@Edge 觸發的詳細資訊,請參閱為 Lambda@Edge 函數新增觸發條件

搭配原始伺服器容錯移轉使用自訂錯誤頁面

您可以使用自訂錯誤頁面與原始伺服器群組搭配,其方式與您將它們與未針對原始伺服器容錯移轉設定之原始伺服器搭配使用的方式類似。

當您使用來源容錯移轉時,您可 CloudFront 以設定為傳回主要或次要來源 (或兩者) 的自訂錯誤頁面:

  • 回主要來源的自訂錯誤頁面 — 如果主要來源傳回未設定用於容錯移轉的 HTTP 狀態碼,則會將自訂錯誤頁面 CloudFront 傳回給檢視者。

  • 回次要來源的自訂錯誤頁面 — 如果 CloudFront 收到次要來源的失敗狀態碼,則會 CloudFront 傳回自訂錯誤頁面。

如需搭配使用自訂錯誤頁的詳細資訊 CloudFront,請參閱產生自訂錯誤回應