如何對 ElastiCache for Redis 自行設計的叢集進行連線問題疑難排解?

2 分的閱讀內容
0

我想要對 Amazon ElastiCache for Redis 自行設計的叢集進行連線問題疑難排解。

解決方法

若要對 ElastiCache for Redis 自行設計的叢集進行連線問題疑難排解,請完成下列步驟:

檢查您的叢集是否處於可用狀態

**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤,請參閱AWS CLI 錯誤疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本

如果您最近建立叢集,請確認叢集建立完成,且叢集已準備好接受連線。若要檢查叢集的狀態,請使用 ElastiCache 主控台、AWS CLI 或 ElastiCache API 來檢視叢集的詳細資料。檢閱狀態資料欄,並檢查下列項目:

  • 如果狀態資料欄顯示可用,則叢集已準備就緒。
  • 如果狀態資料欄顯示建立,則叢集建立進行中。等待幾分鐘,直到狀態更新為可用
  • 如果狀態資料欄顯示修改,則叢集的組態正在更新。等待幾分鐘,直到修改完成,並且狀態更新為可用

檢查您的叢集是否運作狀態良好

運作狀態良好的叢集中的節點處於可用狀態。若要檢查叢集的運作狀態,請執行下列動作:

檢查叢集與用戶端資源之間的網路連線

若要最小化延遲,請從 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體或從相同的 Amazon Virtual Private Cloud (Amazon VPC) 內的資源存取 ElastiCache。此外,您也可以從 Amazon VPC 外部或 AWS 外部進行連線。如需詳細資訊,請參閱存取 Amazon VPC 中 ElastiCache 快取的存取模式存取叢集或複寫群組。若要分析連線並進一步疑難排解 AWS 資源之間的連線問題,請使用 Amazon VPC 網路存取分析器

檢查安全群組和網路存取控制清單 (網路 ACL) 是否允許連線

檢查啟動連線的叢集和資源上的安全群組和網路 ACL。確定安全群組和網路 ACL 已正確設定。下列內容是用戶端資源的範例:

  • Amazon EC2 執行個體
  • AWS Lambda 函數
  • Amazon Elastic Container Service (Amazon ECS) 容器
  • Amazon Elastic Kubernetes Service (Amazon EKS) 容器

檢查叢集安全群組

若要檢查叢集的安全群組,請完成下列步驟:

  1. 開啟 ElastiCache 主控台
  2. Redis 叢集功能表中選取叢集名稱,然後選取網路和安全索引標籤。
    **注意:**依預設,沒有安全群組關聯時,叢集會使用 Amazon VPC 安全群組。
  3. 檢查至少有其中一個相關聯的安全群組允許從用戶端資源到叢集連接埠上叢集的輸入連線
  4. 若要檢查埠號,請檢查任何叢集端點。端點的格式為 domain_name:port
    **注意:**依預設,叢集的連接埠為 6379/TCP。您可以在建立叢集時覆寫埠號。
  5. 在用戶端資源上,檢查安全群組是否允許連接到叢集的連接埠以及叢集子網路的 CIDR 區塊的輸出連線。
  6. 檢查網路 ACL 是否允許用戶端和叢集之間的傳出和傳入連線。
    **注意:**依預設,網路 ACL 允許所有連線。
  7. 若要進一步疑難排解安全群組和網路 ACL 組態,請使用 Amazon VPC 網路存取分析器

檢查連線是否使用正確的端點

根據叢集組態建議連線端點。如需詳細資訊,請參閱尋找連線端點

在用戶端檢查 DNS 解決方法

如果您有 DNS 問題,則可能會收到 Name or service not known (未知名稱或服務) 或 NXDOMAIN 錯誤。若要解決這些錯誤,請確定 Amazon VPC 用戶端資源上擁有正確的 DNS 屬性。使用 Amazon DNS 伺服器是最佳實務。

檢查 Redis 與用戶端之間的 TCP 連線

若要建立並確認 Redis 與用戶端之間的連線功能,請使用 curl 命令:
**注意:**將 example-cluster-endpoint 取代為叢集的端點。

$ curl -v telnet://example-cluster-endpoint:6379

範例輸出:

*   Trying 172.31.1.242:6379...
* Connected to example-cluster-endpoint (172.31.1.242) port 6379

在上述範例中,已連線關鍵字會顯示 TCP 連線成功。如果命令輸出中未顯示已連線,請檢查下列項目:

  • 在叢集上,檢查安全群組是否允許在叢集的連接埠上進行連線。確認叢集組態頁面上的連接埠值。(預設連接埠為 TCP/6379。) 如需詳細資訊,請參閱修改 ElastiCache 叢集
  • 在叢集上,檢查所有碎片和節點是否處於可用狀態。如需詳細資訊,請參閱檢視叢集的詳細資料
  • 在用戶端資源上,檢查安全群組是否允許輸出連線到叢集的 IP 位址和連接埠。
  • 在用戶端資源上,檢查路由表是否具有適當的路由,且叢集是否可以存取。
  • 在用戶端資源上,檢查是否已設定正確的連線。用戶端資源可以位於相同的 Amazon VPC、不同的 Amazon VPC 或 AWS 外部。可以將連線設定為使用 VPN、Amazon VPC 對等互連傳輸 Amazon VPC、[AWS Transit GatewayAWS Direct Connect](https://aws.amazon.com/directconnect/)。如需詳細資訊,請參閱存取 Amazon VPC 中 ElastiCache 快取的存取模式存取叢集或複寫群組

注意: Amazon ElastiCache 專為從相同的 Amazon VPC 存取而設計,以確保低延遲。Amazon VPC 外部的連線可能會增加延遲。直接或透過通道使用公用網際網路的連線時會發生延遲增加。此外,延遲增加可能會導致連線功能或逾時問題。如果您已封鎖存取權,請使用 Amazon VPC Reachability Analyzer 進一步疑難排解。

檢查具有傳輸加密的叢集連線

若要透過 TLS 傳送 Redis 流量,請使用傳輸加密。若要建立連線,用戶端必須具有 TLS 支援。

如果您有 TLS 支援的 redis-cli,則請將 --tls 引數新增至命令:
**注意:**將 example-encrypted-cluster-endpoint 取代為叢集的加密端點。

$ redis-cli -h example-encrypted-cluster-endpoint --tls

範例輸出:

example-encrypted-cluster-endpoint:6379>

如果您沒有 TLS 支援的 redis-cli,則會出現下列錯誤:

"Unrecognized option or bad number of args for: '--tls'"

若要疑難排解上述錯誤,請安裝有 TLS 支援的 redis-cli,或對沒有 TLS 支援的 redis-cli 使用 openssl 命令。如需詳細資訊,請參閱步驟 4 中的連線至 Redis 叢集或複寫群組 (Linux) 區段: 連線至叢集的節點

檢查已開啟驗證的叢集連線

若要檢查驗證的叢集連線,請使用 redis-cliopenssl 命令。如需詳細資訊,請參閱步驟 4 中的連線至已啟用加密/驗證的叢集區段: 連線至叢集的節點

**注意:**redis-cli 命令同時需要 --tls--askpass (或 -a) 引數。如果未提供這些引數或您使用錯誤的密碼,則會出現 NOAUTHAUTH 失敗訊息。如果您使用 redis-cli --tls,則請在連線後使用 AUTH 密碼來完成驗證。

相關資訊

其他疑難排解步驟

AWS 官方
AWS 官方已更新 10 個月前