New user sign up using AWS Builder ID
New user sign up using AWS Builder ID is currently unavailable on re:Post. To sign up, please use the AWS Management Console instead.
如何對 Amazon Redshift 連線錯誤進行疑難排解?
我無法連線到我的 Amazon Redshift 叢集。如何對此問題進行疑難排解?
解決方案
Amazon Redshift 叢集最近曾從快照調整大小或還原
如果 Amazon Redshift 叢集最近曾從快照調整大小或還原,請檢查叢集的子網路。在快照調整大小或還原之前,叢集必須在相同的子網路中啟動。
如果 Amazon Redshift 叢集最近沒有調整大小或還原,請驗證您的網路組態。新舊子網路的網路組態必須相同。
Amazon Redshift 叢集位於公有子網路中
如果您嘗試連線到位於公有子網路中的 Amazon Redshift 叢集,請檢查下列各項:
- 確認 Amazon Redshift 叢集設為「可公開存取」。 如需可公開存取選項的相關資訊,請參閱管理 VPC 中的叢集。
- 確認您已將網際網路閘道連接到路由表。
若要測試連線,請使用 telnet 來測試與 Amazon Redshift 叢集的連線:
telnet <cluster endpoint> <cluster port>
Amazon Redshift 叢集位於私有子網路中
如果您的 Amazon Redshift 叢集位於私有子網路中,請檢查下列各項:
- 請務必將 NAT 閘道連接到公有子網路的路由表。NAT 閘道允許私有子網路中的叢集連線到網際網路。
- 確定您的叢集不是設為「可公開存取」。
若要確認您的用戶端可以連線到 Amazon Redshift 叢集引導節點的私有 IP 地址,請使用 dig 命令:
dig <cluster endpoint>
若要測試與 Amazon Redshift 叢集的連線,請使用 telnet 命令:
telnet <cluster endpoint><cluster port>
執行 Telnet 失敗或仍然無法存取 Amazon Redshift 叢集
如果 telnet 命令指出您的 Amazon Redshift 叢集連線失敗,請驗證是否滿足下列條件:
- 安全群組的傳入規則允許使用 TCP 類型的 Amazon Redshift 連接埠 (預設值 5439)。
- 您要連線到 Amazon Redshift 叢集的 CIDR 範圍或 IP 已新增到安全群組的輸入規則中。
如果 telnet 命令指出 Amazon Redshift 叢集連線成功,但您的叢集仍然無法存取,請檢查網路的防火牆。您的防火牆可能會封鎖 Amazon Redshift 連接埠 (預設連接埠為 5439)。
無效的作業連線錯誤
如果您的 Amazon Redshift 叢集需要為所有連線啟用 SSL,則您可能會收到下列連線錯誤:
Error: [Amazon](500310) Invalid operation: no pg_hba.conf entry for host "::ffff:205.xxx.xxx.xxx", user "username", database "dbname", SSL off;
若要確認 require_ssl 參數是否設為 true,請執行下列步驟:
1. 開啟 Amazon Redshift 主控台。
2. 選擇設定索引標籤。
3. 修改與您的 Amazon Redshift 叢集相關聯的參數群組。
4. (選用) 使用 AWS Command Line Interface (AWS CLI) 驗證您的 SSL 組態:
describe-cluster-parameters
如果您的 SSL 組態設為 true,請考慮下列方法:
- 將 require_ssl 參數更新回 false,這是預設參數值。透過編輯與 Amazon Redshift 叢集相關聯的參數群組即可變更 SSL 組態。您可以從 Amazon Redshift 主控台的參數索引標籤編輯參數群組。
- 如果您的使用案例或環境需要 SSL 連線,請確定您的連線字串包含必要的 SSL 參數。
例如:
jdbc:redshift://examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.com:5439/dev?ssl=true
嚴重連線錯誤
當 Amazon Redshift 叢集中存在太多開啟的連線時,您會收到下列錯誤:
Error: FATAL: connection limit [500]/[2000] exceeded for user
如錯誤訊息所示,在 Amazon Redshift 中,dc2.large 和 ds2.xlarge 節點類型的最大連線限制為 500。對於 ds2.8xlarge、dc2.8xlarge、ra3.xlplus、ra3.4xlarge 及 ra3.16xlarge 節點,最大連線限制為 2,000。
若要驗證 Amazon Redshift 叢集中開啟的連線數量,請執行下列步驟:
1. 開啟 Amazon CloudWatch 主控台。
2. 在 Amazon CloudWatch Logs 項目中尋找 DatabaseConnections 指標。
3. 使用 STL_CONNECTION_LOG 表格來檢查開啟的連線:
select recordtime, username, dbname, remotehost, remoteport from stl_connection_log where event = 'initiating session' and pid not in (select pid from stl_connection_log where event = 'disconnecting session') order by 1 desc;
4. 使用 STV_SESSIONS 表格來檢視 Amazon Redshift 的作用中使用者工作階段的相關資訊:
select * from stv_sessions;
如果您有大量開啟的連線,請考慮下列方法:
- 使用 PG_TERMINATE_BACKEND 命令來關閉任何閒置的工作階段。
- 根據用來連線到 Amazon Redshift 叢集的作業系統,變更用戶端上的 TCP/IP 逾時設定。TCP/IP 逾時設定的更新有助於防止任何閒置工作階段保持開啟狀態。
連線遭拒錯誤
如果您的 Amazon Redshift 叢集無法建立連線,您可能會收到下列連線遭拒錯誤:
Error: amazon 500150 error setting/closing connection: operation timed out/ connection refused.
此錯誤可能表示存取 Amazon Redshift 叢集時出現權限問題。若要解決此連線錯誤,請考慮下列方法:
- 如果您在 Amazon Virtual Private Cloud (Amazon VPC) 中建立叢集,請將用戶端 CIDR/IP 地址新增至 VPC 安全群組。如需為叢集設定 VPC 安全群組的相關資訊,請參閱管理 VPC 中的叢集。
- 如果您在 VPC 外部建立叢集,請將用戶端 CIDR 或 IP 地址新增至叢集安全群組。如需設定叢集安全群組的相關資訊,請參閱 Amazon Redshift 叢集安全群組。
相關資訊

相關內容
- 已提問 4 個月前lg...
- 已提問 2 年前lg...
- AWS 官方已更新 1 年前
- AWS 官方已更新 1 個月前
- AWS 官方已更新 2 年前
- AWS 官方已更新 2 年前