我想對在 Amazon ElastiCache for Redis 自行設計的叢集中容錯移轉後收到的唯讀錯誤進行疑難排解。
簡短說明
如果主要節點容錯移轉到 ElastiCache 自行設計叢集中的複本節點,則複本節點變成主要節點。這允許提供傳入的請求。使用節點端點而非應用程式中叢集的主要端點時,就會發生唯讀錯誤。此外,當應用程式中的 DNS 快取將流量路由到舊的主要節點時,亦會發生此錯誤。
解決方法
若要對已關閉叢集模式的 ElastiCache for Redis 自設計叢集中的唯讀錯誤進行疑難排解,請完成下列步驟:
檢查叢集模式是否已關閉
開啟 ElastiCache 主控台,然後選取 Redis 叢集。檢查叢集的叢集模式是否已關閉。如需詳細資訊,請參閱如何解決 ElastiCache for Redis 中重新導向至碎片的主要節點而不是複本節點的 Redis 用戶端讀取請求?
檢查端點
確保使用主要端點,而不是節點端點。若要檢查寫入命令是否前往主要節點,請使用下列其中一種方法:
使用 redis-cli
-
對主要端點使用 redis-cli 以連線到叢集。
-
設定金鑰,然後讀取金鑰。
範例:
set key1 "hello"
OK
-
確認金鑰設定正確。
範例:
get key1
"hello"
檢查 DNS 設定
為防止 DNS 快取問題,請在應用程式中開啟重試邏輯。確保遵循您使用的 Redis 用戶端程式庫的準則。
檢查傳入的命令
若要檢查傳入的命令,請使用 MONITOR 命令。如需詳細資訊,請參閱 Redis 網站上的 MONITOR。若要開啟 MONITOR,請使用 redis-cli 連線至叢集。MONITOR 命令會列出叢集節點的所有傳入命令。
**注意:****MONITOR ** 命令是很耗費資源的命令,可能會嚴重降低節點效能。請將此命令用作疑難排解的最後一個選擇。