如何遵循 ElastiCache for Valkey 或 ElastiCache for Redis OSS 自行設計叢集的容錯移轉和復原事件的最佳做法?
我想遵循 Amazon ElastiCache for Valkey 或 Amazon ElastiCache for Redis OSS 自行設計叢集中,容錯移轉事件的最佳做法。
簡短描述
容錯移轉和復原事件是 Amazon ElastiCache 的重要部分,使 ElastiCache 具有彈性。但是,當發生容錯移轉和復原事件時,這些事件可能會影響應用程式的效能和可用性。
最佳做法是採取以下動作來減少影響叢集的容錯移轉和復原事件的問題:
- 查看您的活動。
- 了解事件發生的原因。
- 為事件做好準備。
- 設定事件通知。
解決方法
**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本。
查看您的事件
ElastiCache 記錄與您的叢集、安全群組和參數群組相關的各種事件。
事件包括但不限於資源建立和刪除、擴展作業、容錯移轉、節點重新啟動和快照建立。若要更好地了解和分析 ElastiCache 叢集中的事件,請查看 ElastiCache 事件。
ElastiCache 事件日誌中的範例容錯移轉事件:
December 5, 2024, 10:12:20 Finished recovery for cache nodes 0001 December 5, 2024, 10:10:48 Recovering cache nodes 0001 December 5, 2024, 10:05:45 Recovering cache nodes 0001 December 5, 2024, 10:04:24 Failover from master node <node name> to replica node <node name> completed
ElastiCache 事件日誌中的復原事件範例:
2022-10-05 19:20 Finished recovery for cache nodes 0001 2022-10-05 19:18 Recovering cache nodes 0001 2022-10-05 19:14 Recovering cache nodes 0001
**注意:**Amazon ElastiCache for Memcached 不支援容錯移轉,但您可能會在復原事件的事件日誌中看到類似的訊息。
了解事件的原因
在容錯移轉事件期間,ElastiCache 會用副本節點替換不可用的主節點。ElastiCache 也會替換使用者請求的動作或計劃事件的主節點。如需詳細資訊,請參閱 Amazon ElastiCache 常見問題集。
事件範例:
- 測試容錯移轉功能
- 執行計劃維護
- 解決可用區域問題
如果複本節點遇到可用性問題,則 ElastiCache 會以新的複本節點替換該複本。
**注意:**此替換不會啟動容錯移轉事件。
當 ElastiCache 嘗試在這些情況下還原叢集時,ElastiCache 會記錄這些復原事件。
**注意:**若要確定某個節點是否為主節點,請使用 IsMaster Amazon CloudWatch 指標。如需詳細資訊,請參閱Valkey 和 Redis OSS 的指標。
計劃外的容錯移轉與復原事件
在 ElastiCache 中,當主節點意外發生故障並提示服務將複本節點提升為主角色時,就會發生計劃外的容錯移轉。同樣地,如果複本節點需要替換,ElastiCache 會在複本發生故障時自動佈建新的複本節點。這兩個程序都能將停機時間降至最低,並維持高可用性。以下是計劃外容錯移轉和替換的常見原因:
- 對於與 ElastiCache 主機相關的底層問題 (例如硬體故障、網路問題或可用區域故障),ElastiCache 會執行復原作業。對於 AWS 基礎結構而言,即使在極少數發生故障的情況下,自動化流程仍可確保叢集具有高可用性。
- 在處理繁重工作負載時,Amazon ElastiCache for Redis OSS 和 Amazon ElastiCache for Valkey 都是單執行緒。因此,長時間執行的命令可能會阻塞其他作業。叢集中過重的工作負載可能會導致資源過度使用與耗盡,進而觸發容錯移轉和復原機制。例如,複雜的命令、低效率的 Lua 指令碼和大型金鑰型作業可能會使叢集不堪重負並降低效能。
**注意:**當主複本因可用區域暫時中斷而發生故障時,ElastiCache 會在可用區域復原後啟動新的複本。
計劃的容錯移轉與復原事件
計劃的容錯移轉和復原事件可能會因排程維護或使用者啟動的作業而發生。
對於定期維護,AWS 會定期升級 ElastiCache 機群,以增強 ElastiCache 叢集的安全性、可靠性和作業效能。排程維護事件 (例如屬於持續管理維護的節點更換和服務更新) 可以啟動容錯移轉和復原事件。如需詳細資訊,請參閱 Amazon ElastiCache 受管理的維護和服務更新說明頁面。
對於使用者啟動的作業,使用者會透過 TestFailover API、test-failover AWS CLI 命令或 ElastiCache 主控台啟動 TestFailover。若要將讀取複本提升為停用主叢集模式的叢集,請啟動提升作業。如需詳細資訊,請參閱將 Valkey 或 Redis OSS (已禁用叢集模式) 複寫群組的讀取複本提升為主複本。
**注意:**在某些情況下,例如在大規模作業事件期間,AWS 可能會封鎖此 API。如果 AWS 封鎖了 API,那麼您會在事件日誌中看到以下訊息: 「已呼叫節點組 0001 的測試容錯移轉 API。」
為事件做好準備
對於計劃內的容錯移轉事件 (例如維護或服務更新),當叢集處理傳入的寫入請求時,ElastiCache 會取代節點。若要緩解問題,請遵循計劃容錯移轉事件的最佳做法。如需詳細資訊,請參閱 Amazon ElastiCache 受管理的維護和服務更新說明頁面。
對於計劃外的容錯移轉事件,當您為叢集啟用多可用區域時,會自動發生 ElastiCache 容錯移轉。
**注意:**如果在寫入使用複本端點的節點時,該複本發生容錯移轉,則該節點可能無法使用。取代複本後,該節點即可用於讀取請求。
為了減少在計劃內和計劃外事件中出現的問題,請遵循連線和組態最佳做法。
設定事件通知
若要快速回應事件及其原因,請將 ElastiCache 設定為在叢集發生容錯移轉或復原時傳送通知。如需詳細資訊,請參閱管理 ElastiCache Amazon Simple Notification Service (Amazon SNS) 通知。
當您將 ElastiCache 設定為使用 Amazon SNS 進行通知時,您會收到類似下列範例的通知:
復原事件範例:
Recovery reason : Recovery completed for node as ElastiCache monitoring detected a network reachability failure on the node, ElastiCache:CacheNodeReplaceComplete : <node>
Recovery reason : Recovery completed for node as ElastiCache monitoring detected software issues on the node, ElastiCache:CacheNodeReplaceComplete : <node>
Recovery reason : Recovery completed for node as ElastiCache monitoring detected unresponsive engine on the node, ElastiCache:CacheNodeReplaceComplete : <node>
Recovery reason : Recovery completed for node as ElastiCache monitoring detected busy and unresponsive engine on the node, ElastiCache:CacheNodeReplaceComplete : <node>
容錯移轉事件範例:
Failover reason : Failover completed for node as ElastiCache monitoring detected a network reachability failure on the node, ElastiCache:FailoverComplete : <node>
Failover reason : Failover completed for node as ElastiCache monitoring detected software issues on the node, ElastiCache:FailoverComplete : <node>
Failover reason : Failover completed for node as ElastiCache monitoring detected unresponsive engine on the node, ElastiCache:FailoverComplete : <node>
Failover reason : Failover completed for node as ElastiCache monitoring detected busy and unresponsive engine on the node, ElastiCache:FailoverComplete : <node>
**注意:**ElastiCache for Memcached 不支援復原事件的增強訊息。
相關資訊
使用 Amazon CloudWatch 監控 Amazon ElastiCache for Redis 的最佳做法
