高可用性和複本

本頁說明 Memorystore for Valkey 的架構如何支援並提供高可用性 (HA)。本頁面也會說明可改善執行個體效能和穩定性的建議設定。

高可用性

Memorystore for Valkey 採用高可用性架構建構而成,可讓用戶端直接存取受管理的 Memorystore for Valkey 節點。如「連線至 Memorystore for Valkey 執行個體」一節所述,用戶端會連線至個別端點。

直接連線至區塊可提供下列優點:

  • 直接連線可避免中介躍點,進而縮短用戶端與 Valkey 節點之間的往返時間 (用戶端延遲時間)。

  • 在啟用叢集模式的情況下,直接連線可避免單點故障,因為每個分片都會獨立故障。舉例來說,如果來自多個用戶端的流量造成某個區塊 (鍵值空間區塊) 超載,則區塊失敗會限制負責提供該區塊的區塊所受到的影響。

我們建議您建立高可用性的多區域執行個體,而非單一區域執行個體,因為前者可提供更高的可靠度。不過,如果您選擇佈建沒有複本的執行個體,建議您選擇單一區域執行個體。詳情請參閱「如果執行個體不使用複本,請選擇單一可用區執行個體」一文。

如要為執行個體啟用高可用性,每個區段都必須配置至少 1 個備援節點。您可以在建立執行個體時執行這項操作,也可以調整備用資源數量,讓每個資料分割至少有 1 個備用資源。在預定維護作業和意外的分片失效期間,副本可提供自動容錯移轉功能。

您應根據「用戶端最佳做法」一文的指引設定用戶端。採用建議的最佳做法後,客戶就能自動處理以下項目,且不會造成任何服務中斷:

  • 角色 (自動容錯移轉)

  • 端點 (節點取代)

  • 啟用叢集模式的相關時段指派變更 (消費者擴大和縮小)

備用資源

高可用性的 Memorystore for Valkey 執行個體是區域資源。也就是說,Memorystore for Valkey 會將區塊的主要節點和備援節點分散到多個區域,以防區域發生中斷。Memorystore for Valkey 支援每個節點有 0、1 或 2 個備援資源的執行個體。

您可以使用備援資料庫來提升讀取總處理量,但可能會導致資料過時。

  • 啟用叢集模式:使用 READONLY 指令建立連線,讓用戶端可從備援資料讀取資料。
  • 叢集模式已停用:連線至讀取器端點,即可連線至任何可用的備援機制。

已啟用叢集模式的執行個體形狀

下圖說明已啟用叢集模式的執行個體形狀:

每個節點有 3 個分割區和 0 個備援

沒有備用資源的 Memorystore for Valkey 叢集模式啟用執行個體,節點已平均分配到三個區域。

每個節點有 3 個分割區和 1 個備援節點

啟用叢集模式的 Memorystore for Valkey 執行個體,每個節點有一個備援,且節點平均分散在三個區域中。

每個節點有 3 個分割區和 2 個備援

啟用叢集模式的 Memorystore for Valkey 執行個體,每個節點有兩個備援機制,且節點平均分配在三個區域中。

已停用叢集模式的執行個體形狀

下圖顯示停用叢集模式的執行個體形狀:

含 2 個備用資源

已停用叢集模式的 Memorystore for Valkey 執行個體,其中兩個備援機制和節點平均分配在三個區域中。

自動容錯移轉

當主要節點發生維護或意外故障時,分片內可能會發生自動容錯移轉。在容錯移轉期間,備用資源會提升為主要資料庫。您可以明確設定備用資源。服務也可以在內部維護期間暫時提供額外的複本,避免發生任何停機情形。

自動備援機制可避免在維護更新期間遺失資料。如要進一步瞭解維護期間的自動容錯移轉行為,請參閱「維護期間的自動容錯移轉行為」。

容錯移轉和節點修復時間長度

在發生非預期事件 (例如主要節點程序當機或硬體故障) 時,自動容錯移轉可能需要數十秒的時間。在此期間,系統會偵測失敗情形,並選出備用資源做為新的主機。

節點修復作業可能需要數分鐘的時間,才能讓服務取代失敗的節點。這項規定適用於所有主要節點和副本節點。對於非高可用性 (未配置備用資源) 的執行個體,修復失敗的主節點也需要花費數分鐘的時間。

非預定容錯移轉期間的用戶端行為

視失敗的性質而定,用戶端連線可能會重設。自動復原後,應使用指數輪詢重試連線,以免主節點和複本節點過載。

使用副本進行讀取吞吐量的用戶端應準備好因應暫時性容量降級,直到失敗的節點自動取代為止。

遺失的寫入作業

在因意外失敗而導致的容錯移轉期間,由於 Valkey 複製通訊協定具有非同步特性,因此已確認的寫入作業可能會遺失。

用戶端應用程式可以利用 Valkey WAIT 指令,提升實際資料安全性。

單一區域停機對鍵值空間的影響

本節說明單一區域服務中斷對 Memorystore for Valkey 執行個體的影響。

多可用區執行個體

  • HA 執行個體:如果某個可用區發生中斷,整個鍵值空間都會可供讀取及寫入,但由於部分唯讀備用資源無法使用,因此讀取容量會減少。我們強烈建議您超額佈建叢集容量,以便在單一可用區發生中斷的極少數情況下,執行個體仍有足夠的讀取容量。停機結束後,受影響區域的備援資源會還原,叢集的讀取容量也會恢復至設定的值。詳情請參閱「可擴充且可靠的應用程式模式」。

  • 非 HA 執行個體 (沒有複本):如果某個區域發生中斷,在受影響區域中配置的鍵值空間部分會進行資料刷除作業,且在中斷期間無法進行寫入或讀取作業。中斷服務結束後,受影響區域的初始資料會還原,叢集的容量也會恢復為設定的值。

單一可用區執行個體

  • HA 和非 HA 執行個體:如果已佈建執行個體的區域發生中斷,叢集就會無法使用,資料也會清除。如果其他區域發生服務中斷,叢集會繼續提供讀取和寫入要求。