關於手動容錯移轉

本頁面提供 Memorystore for Redis 的手動容錯移轉總覽。如要瞭解如何執行容錯移轉,請參閱「啟動手動容錯移轉」。

什麼是手動容錯移轉?

標準級 Memorystore for Redis 執行個體會使用備用節點來備份主要節點。當主要節點的健康狀態變得不良時會發生正常容錯移轉,將備用節點指定為主要節點。手動容錯移轉與正常容錯移轉的不同之處在於您自行啟動這項作業。如要進一步瞭解 Memorystore for Redis 複製作業的運作方式,請參閱「高可用性」。

為何要啟動手動容錯移轉

啟動手動容錯移轉可讓您測試應用程式如何回應容錯移轉。如果日後發生未預期的容錯移轉,這項資訊可確保更順暢的容錯移轉程序。

(選用) 資料保護模式

系統提供下列兩種資料保護模式:

  • limited-data-loss 模式 (預設)。
  • force-data-loss 模式。

如要設定資料保護模式,請使用下列其中一個指令:

gcloud redis instances failover INSTANCE_NAME --data-protection-mode=limited-data-loss

gcloud redis instances failover INSTANCE_NAME --data-protection-mode=force-data-loss

資料保護模式的運作方式

limited-data-loss 模式會在啟動容錯移轉之前,驗證主要執行個體和備用資源之間的資料差異是否小於 30 MB,藉此將資料遺失量降到最低。對於必須同步至備援機制的每個資料位元組,主要機制的偏移量會遞增。在 limited-data-loss 模式中,如果主執行個體和每個備用資源之間的最大偏移差異為 30 MB 以上,容錯移轉作業就會中止。如果您可以容忍更多資料遺失,且想積極執行容錯移轉,請嘗試將資料保護模式設為 force-data-loss

force-data-loss 模式會採用一連串的容錯移轉策略,積極執行容錯移轉。在啟動容錯移轉之前,不會檢查主要執行個體和備用資源之間的偏移差異,因此可能會遺失超過 30 MB 的資料變更。

待複製的位元組指標

待複製的位元組指標會顯示備用資源還需要複製多少位元組,主要執行個體才會全部備份完成。在容錯期間,主要資源會複製至備用資源,因此待傳輸的位元組數量可能會增加。如果備援機制是因硬體錯誤而觸發,您可能會看到待複製的位元組為空白,因為新副本必須先從主機錯誤中修復,才能取得偏移值。

您可以在執行個體詳細資料頁面的 Google Cloud 主控台中查看這個指標。如要查看執行個體詳細資料頁面,請在專案的「Instances list」(執行個體清單) 頁面上按一下執行個體 ID。

或者,您也可以使用專案的 Metrics Explorer,並搜尋 redis.googlapis.com/replication/offset_diff 指標。

執行手動容錯移轉作業的時機

只有當待複製的位元組指標小於 30 MB 時,採用預設 limited-data-loss 保護模式的手動容錯移轉作業才會成功。如果您想執行手動容錯移轉作業,且待複製的位元組大於 30 MB,請使用 force-data-loss 保護模式。

如果您希望能儘量保留資料,請讓應用程式暫時停止寫入 Redis 執行個體,並等到待複製的位元組指標低到您可以接受的範圍後,再執行手動容錯移轉作業。

封鎖手動容錯移轉的潛在問題

  • 無法在基本級執行個體上執行手動容錯移轉,因為基本級執行個體沒有備用資源,主要執行個體無法容錯移轉。

  • 如果 Redis 執行個體的健康狀態不良,則手動容錯移轉作業會失敗,因為系統會為了減少資料遺失而封鎖這項作業。

  • 如果您執行的 Lua 指令碼會無限期執行,則必須使用 force-data-loss 來啟動備援機制。在這種情況下,限制資料遺失的容錯移轉作業將無法順利完成。

  • 如果執行個體含有待處理的未完成作業 (例如資源調度或更新),則手動容錯移轉作業會遭到封鎖。您必須等到執行個體處於 READY 狀態時才能執行手動容錯移轉。

用戶端應用程式連線

當主要節點容錯移轉到備用資源時,所有連到 Memorystore for Redis 的現有連線都會遭到捨棄。不過在重新連線時,系統會使用相同的連線字串或 IP 位址,將您的應用程式自動重新導向到新的主要節點。

驗證手動容錯移轉

您可以使用Google Cloud 主控台或 gcloud 驗證手動容錯移轉作業是否成功。

Google Cloud 控制台驗證

開始執行手動容錯移轉作業之前,請先前往 Memorystore for Redis 「Instances list」(執行個體清單) 頁面,然後按一下執行個體名稱。

接著,在「Configuration」分頁中,查看「Primary Location」旁邊的區域,瞭解主要節點位於哪個區域。請記下這個區域。當您完成手動容錯移轉作業後,請再次查看本頁面,確認主要節點已切換區域。

Cloud Monitoring 驗證

如要使用 Metrics Explorer 查看受控資源的指標,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的 「Metrics Explorer」頁面:

    前往 Metrics Explorer

    如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果

  2. 在 Google Cloud 控制台的工具列中,選取您的 Google Cloud 專案。 如要設定 App Hub,請選取 App Hub 主機專案或已啟用應用程式的資料夾管理專案。
  3. 在「指標」元素中,展開「選取指標」選單,在篩選列中輸入 Node role,然後使用子選單選取特定資源類型和指標:
    1. 在「Active resources」選單中,選取「Cloud Memorystore Redis」
    2. 在「Active metric categories」(使用中的指標類別) 選單中,選取「replication」(複製)
    3. 在「Active metrics」選單中,選取「Node role」
    4. 按一下 [套用]
  4. 如要從顯示畫面中移除時間序列,請使用 Filter 元素

  5. 如要合併時間序列,請使用「Aggregation」元素上的選單。舉例來說,如要根據區域顯示 VM 的 CPU 使用率,請將第一個選單設為「平均」,並將第二個選單設為「區域」

    當「Aggregation」元素的第一個選單設為「Unaggregated」時,系統會顯示所有時序資料。Aggregation 元素的預設設定取決於您選取的指標類型。

  6. 針對每天回報一個樣本的配額和其他指標,請執行下列操作:
    1. 在「顯示」窗格中,將「小工具類型」設為「堆疊長條圖」
    2. 將時間範圍設為至少一週。

Cloud Monitoring 圖表會以兩行顯示主要節點和備用節點。當圖表上的節點行顯示的值為 0 時,代表這是備用節點。當圖表上的節點行顯示的值為 1 時,代表這是主要節點。圖表透過顯示行的值如何分別從 1 切換為 0,以及從 0 切換為 1 來表示容錯移轉作業。

gcloud 驗證

啟動手動容錯移轉作業之前,請先使用下列指令檢查主要節點的所在區域:

gcloud redis instances describe [INSTANCE_ID] --region=[REGION]

您的主要節點位於標示為 currentLocationId 的區域。記下這個區域。

完成手動容錯移轉作業後,您可以再次執行 gcloud redis instances describe 指令並檢查 currentLocationId 的區域是否已變更,藉此確認主要節點已切換到新區域。

此外,locationId 標籤也會顯示您原先佈建主要節點的區域。alternativeLocationId 標籤會顯示原先系統為您佈建備用節點的區域。每次發生容錯移轉時,主要節點和備用節點就會在這兩個區域中切換。不過,與 locationIdalternativeLocationId 相關的區域不會變更。