關於手動容錯移轉

本頁面提供 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 主控台的「Instance details」(執行個體詳細資料) 頁面上查看這個指標。如要查看執行個體詳細資料頁面,請在專案的「Instances list」(執行個體清單) 頁面上按一下執行個體 ID。

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

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

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

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

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

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

  • 如果 Redis 執行個體的健康狀態不良,則系統會封鎖 limited-data-loss 手動容錯移轉作業,以盡量減少資料遺失。

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

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

用戶端應用程式連線

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

驗證手動容錯移轉

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

Google Cloud 控制台驗證

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

接著,在「設定」分頁的「主要位置」旁,查看主要節點所在的區域。請記下這個區域。當您完成手動容錯移轉作業後,請再次查看本頁面,確認主要節點已切換區域。

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」(未匯總) 時,系統會顯示所有時間序列。「匯總」元素的預設設定取決於您選取的指標類型。

  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 相關的區域不會變更。