本頁面說明 Memorystore for Redis Cluster 如何對叢集執行維護作業。此外,也提供用戶端應用程式應留意的資訊和設定建議,以便充分運用 Memorystore for Redis Cluster 的零停機維護設計。這些建議適用於高可用性叢集和沒有副本的叢集。不過,我們強烈建議您在所有正式環境用途中,採用高可用性設定。
Memorystore for Redis Cluster 會定期更新叢集,確保服務可靠、高效能、安全且最新。這些更新稱為維護。維護作業完全由服務全代管,不會造成停機。
維護作業通常分為以下幾類:
- Memorystore 功能Memorystore 必須進行維護更新,才能推出部分功能。
- 作業系統修補程式。我們會持續監控作業系統中新發現的安全漏洞。一旦發現漏洞,我們會修補作業系統,保護您免受新風險的威脅。
- 資料庫修補程式。維護作業可能包括 Redis 更新,以提升叢集的安全性、效能和可靠性,超越 Redis 提供的特性。
Memorystore for Redis Cluster 不會自動更新每個維護版本的叢集。為判斷安排全面維護作業的最佳時機, Google Cloud 會定期評估可用的更新。如果需要盡快取得特定維護版本,可以在更新推出後,使用自助式維護功能。如要進一步瞭解維護版本,包括維護版本編號和詳細資料,請參閱「Memorystore for Redis Cluster 維護作業變更記錄」。
設定用戶端應用程式
如要設定用戶端應用程式,在維護期間盡可能提高效能和可用性,請按照下列步驟操作:
- 請按照「Redis 用戶端最佳做法」中的指引,使用及設定 OSS Redis 叢集用戶端,確保排定的維護作業不會影響用戶端應用程式。建議您採用我們的用戶端設定,透過定期內嵌拓撲重新整理和背景連線輪替,避免連線重設。
- 在主要和副本節點上執行代表性工作負載,並監控對用戶端的影響,同時透過一系列更新作業 (例如縮減或擴充、副本數量變更) 測試用戶端應用程式。這些更新會測試用戶端的內嵌拓撲重新整理邏輯、完整同步影響、新節點探索,以及現有節點移除功能。測試有助於確保用戶端設定正確,避免對應用程式造成任何負面影響。
定期維護
Memorystore for Redis Cluster 採用逐步部署和「先建立再刪除」的生命週期策略,以免維護作業造成停機影響。如要達成零停機時間維護,請使用 Redis 通訊協定的要求重新導向功能,並搭配下列 Memorystore 機制:
- 協調容錯移轉,不會遺失任何資料。
- 正常移除節點,讓用戶端能跟上叢集拓撲更新,不會影響可用性。
- 叢集的 Private Service Connect 端點不受維護作業影響。如要進一步瞭解這些端點,請參閱「叢集端點」。
下列各節說明的服務行為僅適用於排定的維護作業。如要瞭解硬體故障等非預期事件的影響,請參閱「非預期容錯移轉期間的用戶端行為」。
漸進式部署策略
Memorystore for Redis Cluster 維護部署作業會逐步擴大範圍,並以能及早偵測到故障的速度進行,以減輕影響並建立穩定性信心。在服務規模上,Memorystore 叢集機群會整合烘焙時間 (套用並監控更新的時間,確認成功後再繼續)。此外,系統也會在區域內各可用區 (多個容錯網域) 的叢集中整合烘焙時間,盡可能縮小影響範圍。
如果叢集設為高可用性,系統一次最多只會更新一個容錯網域/可用區,確保叢集 shard (包括主要和副本) 在更新期間維持高可用性。此外,在任何指定時間,只有少數 Redis 節點會更新。更新作業會採用「先建立再刪除」的生命週期機制,盡可能提高叢集穩定性。更新含有多個 shard 的叢集時,這項策略最能發揮效益。在任何指定時間,只將更新套用至整體使用者金鑰空間的一小部分,可盡可能提高資料可用性。
「先建立再刪除」生命週期策略
Redis 叢集有多個 shard。每個 shard 都有一個主要節點和零或多個副本節點。Memorystore 會使用下列程序,更新 shard 中任何現有的主要或副本 Redis 節點:
- Memorystore for Redis Cluster 會先在 shard 中新增一個全新的副本,並套用最新的軟體更新。Memorystore 會建立全新的節點,而非更新現有節點,確保在發生非預期的啟動失敗時,仍能保留佈建的容量。
- 如果要更新的 shard 內有主要節點,系統會先使用協調容錯移轉將其轉換為副本,然後再移除。
- 接著,Memorystore 會移除使用舊版軟體的副本。
- 叢集中的每個節點都會重複這個程序。
相較於一般就地更新的滾動式部署,先建立後刪除策略有助於保留叢集的佈建容量,但會導致用戶端應用程式發生可用性中斷 (有時會遺失資料)。如果 shard 沒有副本,Memorystore for Redis Cluster 仍會先佈建新的副本、協調容錯移轉,最後取代 shard 現有的主要節點。
步驟 1:新增 Redis 副本
「先建立後刪除」機制的第一步,是使用完整同步 OSS Redis 機制,新增搭載最新軟體的副本節點,將資料從主要節點複製到副本節點。方法是建立子程序,並利用無磁碟複製功能啟動副本。Memorystore for Redis Cluster 支援無磁碟複製。除非啟用持續性,否則 Memorystore for Redis Cluster 在複製期間不會使用磁碟。
您可以佈建更多 shard,減少節點內的鍵空間大小,充分發揮叢集水平擴充架構的優勢。每個節點的資料集越小,完整同步作業的分叉延遲影響就越小。此外,還能加快節點間的資料複製速度。
步驟 2:協調主要容錯移轉
如果需要更新的 Redis 節點是主要節點,Memorystore 會先執行協調容錯移轉,將作業轉移至新加入的副本節點,然後再移除節點。在協調容錯移轉期間,用戶端和 Redis 節點會協同合作,並採用下列策略,避免應用程式停機:
- 傳入的用戶端要求會在主要節點上暫時遭到封鎖,提供一個時間範圍,確保現有副本與主要節點 100% 同步。
- 副本會完成選舉程序,接管主要角色。
- 先前的主要節點 (現在是副本) 會解除封鎖現有要求,並使用 OSS Redis 叢集通訊協定,將要求重新導向至新選出的主要節點。傳送至先前副本節點的所有新要求,都會繼續重新導向至新的主要節點。
- Redis 叢集相容用戶端會重新整理記憶體內拓撲。它會學習新的主要端點位址,不再需要重新導向。
協調式容錯移轉通常需要數十毫秒。不過,叢集總大小可能會增加容錯移轉延遲時間。待清除並傳送至副本的傳輸中資料也可能遺失。叢集大小可能會影響主要節點之間的收斂,進而影響新主要節點的選舉決策。
步驟 3:移除 Redis 副本
「先建立後刪除」機制的最後一個步驟,是移除舊版軟體上的副本節點。突然移除節點會對用戶端應用程式造成影響,因為用戶端會快取端點資訊和叢集拓撲。Memorystore for Redis Cluster 移除 Redis 副本時,會採取安全停用機制,讓用戶端應用程式在節點強制關閉前,先重新整理拓撲。拓撲經過自訂,可讓用戶端瞭解新的副本。拓撲也會在移除副本前,先忘記要移除的副本。
執行舊版軟體的副本節點會保留一段時間 (通常為幾分鐘),在這段期間內,該節點會開始將傳入的讀取要求重新導向至其 shard 的主要節點。叢集用戶端可以重新整理叢集拓撲,並瞭解新的副本端點。如果用戶端在耗盡期間過後嘗試連線至已移除的節點,連線會失敗,進而觸發叢集用戶端重新整理叢集拓撲,以便瞭解副本變更。重新整理叢集拓撲時,不會看到要移除的副本節點。
維護作業設定
Memorystore 可讓您自訂維護排程,配合應用程式需求,盡可能減少中斷情形。只要為叢集設定維護期間,即可達成這項目標。
維護期間是依 Memorystore 叢集設定,並提供下列設定選項:
- 星期幾。指定維護作業的執行日期。
- 開始小時。維護作業開始的時間。
維護期間為 1 小時。請注意,在某些情況下,維護作業可能會超過您選取的時間範圍。
為叢集設定維護期間後,Memorystore for Redis Cluster 會根據您設定的維護期間偏好設定,安排日後的自動維護作業。
預設維護期間
如未設定維護期間,Memorystore 會根據叢集的時區,在下列其中一個時段更新叢集:
平日時段 (週一至週五)。晚上 10 點至早上 6 點
週末時段。週五晚上 10 點至週一上午 6 點
維護範例
身為零售商的購物車服務開發人員,您必須負責監控包含叢集的正式環境。為確保維護期間能發揮最佳效能,您打算在叢集流量最低時安排維護作業,通常是週日午夜左右。
在這種情況下,您可以將正式版叢集的維護期間設為:
- 星期幾。星期日。
- 開始小時。凌晨 1 點。
即將進行維護作業的通知
為確保您能隨時掌握叢集的維護事件,可以設定電子郵件通知,在排定維護作業前至少一週收到通知。這類通知的主旨行會是「"Upcoming maintenance for your Cloud Memorystore instance [your-cluster-name]"」。
叢集開始維護時,您也會收到通知。電子郵件的主旨為 "Maintenance
is undergoing for your Cloud Memorystore instance [your-cluster-name]"。
維護作業完成後,系統會傳送完成通知。電子郵件標題為「"Completed Maintenance
for your Cloud Memorystore instance [your-cluster-name]"」。
如果 Memorystore 重新排定維護作業,您會收到電子郵件,通知您維護作業已取消。這封電子郵件的主旨行會是 "Canceled maintenance for your Cloud Memorystore instance [your-cluster-name]"。
您必須選擇加入才能接收這類維護通知。如要訂閱維護通知,請按照下列步驟操作:
如要接收 Memorystore 的維護通知,請務必在叢集排定維護更新前至少一週完成這些步驟。否則 Memorystore for Redis Cluster 將沒有足夠時間通知您即將進行維護。
Memorystore for Redis Cluster 會傳送通知到與您 Google 帳戶相關聯的電子郵件地址。您無法設定自訂電子郵件別名 (例如團隊電子郵件別名)。目前不支援將通知傳送至其他電子郵件地址。
訂閱維護通知後,只要指定專案中的 Memorystore 叢集有排定的維護作業,您就會收到快訊。訂閱後,您會收到每個叢集的個別通知。
如需查看排定維護作業的操作說明,請參閱「查看排定的維護作業」。
重新安排維護時間
如果叢集已設定維護期間,本節會提供重新排定維護作業的指南。舉例來說,如果新服務預定在目前的維護期間推出,您可能需要將維護期間延後到推出後的幾天。
您可以在原定時間的 14 天內重新安排維護作業。在重新安排維護作業時,請選擇下列其中一個選項:
- 立即更新:您可以立即將更新套用至叢集,不必等待排定的維護期間。
- 自訂日期和時間:選擇原定維護時間 14 天內的任何時間。
重新排定維護作業時,須遵守下列限制:
- 如果距離目前排定的維護時間不到一小時,則無法重新安排維護作業。
- 重新排程成功後,系統會傳送電子郵件,確認取消先前的維護作業,並傳送新的維護作業通知,其中包含更新後的排程。
如需重新安排維護時間的操作說明,請參閱「重新安排維護時間」。
常見問題
本節提供 Memorystore for Redis Cluster 維護作業的常見問題。
如何得知叢集的維護作業排程?
如要瞭解叢集的維護排程,建議您訂閱通知並設定維護期間。您也可以手動檢查叢集,查看回應中是否顯示 maintenanceSchedule 參數。
Memorystore for Redis Cluster 何時會通知您即將進行維護作業?
如果您訂閱維護通知並設定維護期間,Memorystore for Redis Cluster 會在維護事件發生前至少一週,透過電子郵件通知您。
維護作業最多可延後多久?
排定叢集維護作業後,您可以立即開始更新叢集,也可以將更新作業延後,最多可延後至原定維護日期和時間後的兩週。
舉例來說,如果您將維護作業排定在 10 月 11 日晚上 11:15,則可將維護作業延後至 10 月 25 日晚上 11:15。如未採取任何行動,系統會在排定的日期和時間執行維護作業。
詳情請參閱「重新安排維護作業」。
哪些最佳做法可確保維護更新作業順利進行?
為確保維護更新作業順利進行,建議您採取下列做法:
- 按照操作說明設定用戶端應用程式。
- 將維護期間設為叢集流量最低的日期和時間 (例如星期日午夜)。
- 開啟維護通知。因此,Memorystore for Redis Cluster 會在叢集排定維護更新前至少七天,透過電子郵件通知您。
- 如果應用程式使用量沒有低影響或無影響時段,請使用逐步推出的服務預設值。這個預設值包含維護更新的最佳做法。詳情請參閱「排定的維護作業」。
何時建議立即套用維護更新?
您可以立即在測試叢集上套用維護更新,瞭解更新對應用程式的影響。您可以觀察這項更新帶來的影響。如果更新有問題,您可以延後正式環境叢集的維護作業,直到問題解決為止。
如果目前日期和時間適合叢集,且您預期叢集日後會承受高負載,可以立即執行維護更新。
維護更新作業是否一律會在維護期間內完成?
Memorystore for Redis Cluster 會在您指定的維護期間內,啟動維護更新作業。Memorystore for Redis Cluster 通常會在時間範圍內完成更新,但並非總是如此。
可以選擇不進行維護,或先安排特定叢集的維護作業嗎?
您無法選擇不進行維護,也無法控制叢集的維護順序。不過,收到初始維護通知後,您可以重新安排維護作業,最多可延後兩週。
後續步驟
- 查看管理叢集維護期間所需的權限。