本頁提供 Memorystore for Redis 手動容錯移轉總覽。如要瞭解如何執行容錯移轉,請參閱「啟動手動容錯移轉」。
什麼是手動容錯移轉?
標準級 Memorystore for Redis 執行個體會使用備用節點備份主要節點。如果主要節點狀況不佳,系統就會執行正常容錯移轉,將備用節點指定為新的主要節點。手動容錯移轉與正常容錯移轉的不同之處在於您自行啟動這項作業。如要進一步瞭解 Memorystore for Redis 複寫的運作方式,請參閱「高可用性」。
手動容錯移轉 Standard 層級執行個體時,系統會保留資料。手動執行容錯移轉時,執行個體會短暫重設連線,時間最多幾分鐘。建議應用程式在程式碼中加入重試邏輯,以便重新連線至執行個體。IP 位址和連線字串維持不變。
除了複製和容錯移轉之外,如要提供額外的資料保護層,使用 Google Cloud 控制台建立 Memorystore for Redis 執行個體時,系統預設會啟用 RDB 快照。
為何要啟動手動容錯移轉
手動啟動容錯移轉可測試應用程式如何回應容錯移轉。這項知識可確保日後發生非預期的容錯移轉時,容錯移轉程序能順利進行。
(選用) 資料保護模式
系統提供下列兩種資料保護模式:
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 控制台的執行個體詳細資料頁面存取這項指標。如要查看執行個體詳細資料頁面,請在專案的執行個體清單頁面中,按一下執行個體 ID。
或者,您也可以存取專案的 Metrics Explorer,然後搜尋 redis.googlapis.com/replication/offset_diff 指標。
執行手動容錯移轉作業的時機
使用預設 limited-data-loss 保護模式手動容錯移轉時,只有在「待複製的位元組」指標小於 30 MB 時,才會成功。如要手動容錯移轉,且待複製的位元組超過 30 MB,請使用 force-data-loss 保護模式。
如果您希望能儘量保留資料,請讓應用程式暫時停止寫入 Redis 執行個體,並等到待複製的位元組指標低到您可以接受的範圍後,再執行手動容錯移轉作業。
封鎖手動容錯移轉的潛在問題
在基本級執行個體上執行手動容錯移轉不會有作用,因為基本級執行個體沒有備用資源,主要執行個體無法容錯移轉至備用資源。
如果 Redis 執行個體狀況不佳,則受限於資料遺失最小化,手動容錯移轉作業會遭到封鎖,因此無法執行。
如果您執行的 Lua 指令碼會無限期執行,則必須使用
force-data-loss啟動容錯移轉。在這種情況下,有限資料遺失容錯移轉作業將無法順利完成。如果執行個體含有待處理的未完成作業 (例如資源調度或更新),則手動容錯移轉作業會遭到封鎖。您必須等到執行個體處於
READY狀態時才能執行手動容錯移轉。
用戶端應用程式連線
主要節點容錯移轉至副本時,系統會捨棄現有與 Memorystore for Redis 的連線。不過,重新連線時,應用程式會使用相同的連線字串或 IP 位址,自動重新導向至新的主要節點。
驗證手動容錯移轉
您可以使用Google Cloud 控制台或 gcloud,確認手動容錯移轉作業是否成功。
Google Cloud 控制台驗證
手動容錯移轉前,請前往 Memorystore for Redis 執行個體清單頁面,然後按一下執行個體的名稱。
接著,在「設定」分頁中,查看「主要位置」旁邊顯示的主要節點所在區域。請記下區域。完成手動容錯移轉後,請再次查看這個頁面,確認主要節點已切換區域。
Cloud Monitoring 驗證
如要使用 Metrics Explorer 查看受監控資源的指標,請執行下列操作:
-
前往 Google Cloud 控制台的 leaderboard「指標探索器」頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果。
- 在 Google Cloud 控制台的工具列中,選取 Google Cloud 專案。 如要進行 App Hub 設定,請選取 App Hub 主專案或已啟用應用程式的資料夾的管理專案。
- 在「指標」元素中,展開「選取指標」選單,
在篩選列中輸入
Node role, 然後使用子選單選取特定資源類型和指標:- 在「使用中的資源」選單中,選取「Cloud Memorystore Redis」。
- 在「使用中的指標類別」選單中,選取「複寫」。
- 在「使用中的指標」選單中,選取「節點角色」。
- 按一下「套用」。
如要新增篩選器,從查詢結果中移除時間序列,請使用「Filter」元素。
如要合併時間序列,請使用「Aggregation」(匯總) 元素上的選單。 舉例來說,如要根據可用區顯示 VM 的 CPU 使用率,請將第一個選單設為「平均值」,第二個選單設為「可用區」。
如果將「匯總」元素的第一個選單設為「未匯總」,系統就會顯示所有時間序列。匯總元素的預設設定取決於您選取的指標類型。
- 如要查看每日回報一個樣本的配額和其他指標,請按照下列步驟操作:
- 在「顯示」窗格中,將「小工具類型」設為「堆疊長條圖」。
- 時間範圍至少要設為一週。
Cloud Monitoring 圖表會以兩條線代表主要節點和副本節點。如果圖表上節點的線值為零,則為副本節點。如果節點的線條在圖表上的值為 1,則為主要節點。圖表會顯示線路從 1 切換至 0,以及從 0 切換至 1 的情況,藉此呈現容錯移轉。
gcloud驗證
手動啟動容錯移轉前,請先使用下列指令,檢查主要節點所在的區域:
gcloud redis instances describe [INSTANCE_ID] --region=[REGION]
主要節點位於標示為 currentLocationId 的區域。記下這個區域。
手動容錯移轉完成後,您可以再次執行 gcloud redis instances describe 指令,並檢查 currentLocationId 是否已變更區域,確認主要節點已切換至新區域。
此外,locationId 標籤會顯示您最初佈建主要節點的區域。alternativeLocationId 標籤會顯示系統最初佈建備用節點的區域。每次發生容錯移轉時,主要執行個體和副本都會在這兩個可用區之間切換。不過,與 locationId 和 alternativeLocationId 相關聯的區域不會變更。