我想對 Amazon ElastiCache for Valkey 和 Amazon ElastiCache for Redis OSS 自行設計叢集的連線問題進行疑難排解。
解決方法
檢查叢集的狀態
**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本。
如果您最近建立了叢集,而該叢集未處於可用狀態,則可能會遇到連線問題。若要確認已完成建立,請檢叢集及其每個附加節點的狀態:
- 如果 Status (狀態) 資料欄顯示可用,則表示叢集已準備好接受連線。
- 如果 Status (狀態) 資料欄顯示建立中或修改中,則表示叢集正在建立或正在更新。請等待幾分鐘,直到狀態更新為可用。
檢查叢集的運作狀態
若要檢查叢集的運作狀態,請查看下列來源以取得叢集相關資訊:
檢閱您的安全群組和網路 ACL 組態
檢閱您啟動連線之叢集和資源上安全群組和網路存取控制清單 (網路 ACL) 的組態。您必須設定安全群組和網路 ACL 才能存取資源。如需詳細資訊,請參閱存取 ElastiCache 叢集或複寫群組。
下列是用戶端資源的範例:
- Amazon Elastic Compute Cloud (Amazon EC2) 執行個體
- AWS Lambda 函數
- Amazon Elastic Container Service (Amazon ECS) 容器
- Amazon Elastic Kubernetes Service (Amazon EKS) 容器
若要檢閱叢集的安全群組,請完成下列步驟:
- 開啟 ElastiCache console (ElastiCache 主控台)。
- 在導覽窗格的 Resources (資源) 下,選擇 Valkey caches (Valkey 快取) 或 Redis OSS caches (Redis OSS 快取),然後選取叢集。
- 在叢集詳細資訊頁面上,選取 Connectivity and security (連線和安全性) 索引標籤。
- 檢查至少有一個相關聯的安全群組允許從用戶端資源到叢集連接埠上叢集的傳入連線。
- 若要尋找連接埠號碼,請檢閱任何叢集端點。端點的格式為 domain_name:port。
**注意:**預設情況下,叢集的連接埠為 6379/TCP。建立叢集時,您可以覆寫連接埠號碼。
- 在用戶端資源上,檢查安全群組是否允許從叢集連接埠到叢集子網路 CIDR 區塊的傳出連線。
- 檢查網路 ACL 是否允許用戶端和叢集之間的傳出和傳入連線。此外,請檢查路由表是否具有適當的路由。
**注意:**預設情況下,網路 ACL 允許所有連線。
若要進一步對網路組態進行疑難排解,請使用 Amazon Virtual Private Cloud (Amazon VPC) 網路存取分析器。
請檢查您是否使用正確的端點進行連線
請確定您將用戶端應用程式設定為使用正確的端點。如需詳細資訊,請參閱在 ElastiCache 中尋找連線端點。
檢閱 Valkey 或 Redis OSS 叢集與用戶端之間的 TCP 連線
確定 Valkey 或 Redis OSS 叢集與用戶端資源之間有 TCP 連線。若要確認 ElastiCache 叢集與用戶端之間的連線,請從用戶端資源執行 curl 命令:
$ curl -v telnet://example-cluster-endpoint:6379
**注意:**將 example-cluster-endpoint 取代為叢集的端點。
輸出範例:
* Trying 172.31.1.242:6379...* Connected to example-cluster-endpoint (172.31.1.242) port 6379
在上述範例中,輸出中的已連線表示 TCP 連線已成功。
檢閱具有傳輸加密的叢集連線
若要透過 TLS 傳送 Valkey 或 Redis OSS 叢集流量,您必須使用傳輸加密。若要從用戶端建立連線,用戶端必須具有 TLS 支援。
如果您有支援 TLS 的 valkey-cli 或 redis-cli,那麼您可以在命令中新增 --tls 引數來開啟 TLS 支援。
redis-cli 範例:
$ redis-cli -h example-encrypted-cluster-endpoint -p 6379 --tls
valkey-cli 範例:
$ valkey-cli -h example-encrypted-cluster-endpoint -p 6379 --tls
**注意:**將 example-encrypted-cluster-endpoint 取代為叢集的加密端點。
輸出範例:
example-encrypted-cluster-endpoint:6379>
如果您的 valkey-cli 或 redis-cli 不支援 TLS,那麼您會收到以下錯誤:
"Unrecognized option or bad number of args for: '--tls' "
若要對上述錯誤疑難排解,請安裝支援 TLS 的 valkey-cli 或 redis-cli。
檢查與具有驗證之叢集的連線
若要檢查與具有驗證之叢集的連線,請使用 valkey-cli 或 redis-cli。如需詳細資訊,請參閱連線到叢集的節點中連線至已啟用加密/驗證的叢集一節。
redis-cli 範例:
redis-cli -h your-cluster-endpoint -p 6379 --tls -c --user your-user --askpass # Enter the password when prompted
valkey-cli 範例:
valkey-cli -h your-cluster-endpoint -p 6379 --tls -c --user your-user --askpass # Enter the password when prompted
**注意:**valkey-cli 和 redis-cli 命令需要 --tls 和 --askpass 或 -a 引數。如果您未提供這些引數或您使用不正確的密碼,則會出現 NOAUTH 或 AUTH 失敗訊息。如果您僅將 valkey-cli 或 redis-cli 和 --tls 引數一起使用,則連線後請使用 AUTH <password> 完成驗證。
更新用戶端資源上的 DNS 屬性
如果您有 DNS 問題,則可能會收到「未知名稱或服務」或「NXDOMAIN」錯誤。當透過自訂 DNS 伺服器進行 DNS 查詢失敗時,就會發生這些錯誤。若要解決這些錯誤,請確定 Amazon VPC 用戶端資源上擁有正確的 DNS 屬性。
**注意:**最佳做法是將 Amazon DNS 伺服器用於您的虛擬私有雲端 (VPC)。
檢閱您的用戶端連線
若要檢閱 ElastiCache 叢集的用戶端連線詳細資訊,您可以使用 Valkey 和 Redis OSS 的指標,例如 CurrConnections 和 **NewConnections。**ElastiCache 會使用四至六個連線來監控叢集。
若要尋找用戶端連線詳細資訊,請執行下列 valkey-cli 或 redis-cli 命令:
$ CLIENT LIST
該命令的輸出會列出所有連線的用戶端,包括其 IP 位址、閒置時間和其他資訊。如需詳細資訊,請參閱 Valkey 網站上的用戶端清單和 Redis OSS 網站上的用戶端清單。
檢閱叢集與用戶端資源之間的網路連線
根據您存取 ElastiCache 叢集的方式,您可能會遇到延遲問題。為了將延遲降至最低,最佳做法是從 Amazon EC2 或從同一 Amazon VPC 內的資源存取 ElastiCache。如需詳細資訊,請參閱存取 Amazon VPC 中 ElastiCache 快取的存取模式和存取 ElastiCache 叢集或複寫群組。
相關資訊
持續的連線問題
連線至 Valkey 或 Redis OSS 叢集或複寫群組 (Linux)