本地裝置無法通過公網遠端連線Redis的原因可能是使用了錯誤的串連地址,未將本地裝置的公網IP添加到Redis白名單,未使用正確的帳號密碼等。本文介紹本地裝置通過公網串連Redis的常見問題與解決辦法。
本地裝置公網串連問題排查流程圖
步驟一:報錯資訊是否為invalid password
、WRONGPASS
、NOAUTH Authentication required
如果報錯資訊為connection timed out
或者無明確的報錯資訊,請跳過步驟一,直接查看步驟二。
報錯說明
報錯資訊為invalid password
、WRONGPASS invalid username-password pair
或者NOAUTH Authentication required
,說明帳號密碼錯誤。
解決方案
使用
<user>:<password>
格式的密碼重新串連。例如自訂帳號為testaccount
,密碼為Rp829dlwa
,密碼需填寫為testaccount:Rp829dlwa
。如果使用
<user>:<password>
格式的密碼重新串連,仍然提示密碼錯誤,可能是密碼記錯了,請重設密碼後使用新密碼串連。重設密碼,請參見修改或重設密碼。
步驟二:使用ping命令檢測本地裝置與Redis的網路是否連通
操作方法
在本地裝置執行ping命令。
ping <host>
樣本:ping r-bp1zx****.redis.rds.aliyuncs.com
結果說明
如果Ping通(如下所示),說明網路連通,可參考步驟三繼續排查。
如果返回資訊類似
0 packets received,100.0% packet loss
,說明網路未連通。請檢查您使用的串連地址是否為執行個體的公網訪問串連地址。
如果返回資訊類似
Unknown host
或Name or service not known
,說明位址解析出現問題。請檢查您使用的串連地址是否有拼字錯誤。
常見原因
使用了專用網路地址串連KVStore for Redis執行個體。
本地裝置串連KVStore for Redis執行個體,需要使用公網訪問地址。
串連地址拼字錯誤。
串連地址拼字錯誤或網域名稱解析失敗,導致無法解析出IP地址。
解決方案
在KVStore for Redis控制台的執行個體資訊頁面串連資訊地區,查看KVStore for Redis執行個體的公網訪問串連地址。複製公網訪問的串連地址,重新執行ping命令。
重要如果控制台未顯示公網訪問的串連地址,請先申請串連地址。具體操作請參見申請公網串連地址。
雲原生版叢集架構直連模式執行個體不支援申請公網地址。
如果使用了公網訪問串連地址且串連地址拼字正確,仍無法ping通,請檢查是否網域名稱解析失敗,具體操作請參見解決因網域名稱解析失敗導致的串連問題。
步驟三:使用telnet命令檢測服務連接埠是否可用
操作方法
在本地裝置執行telnet命令。
telnet <host> <port>
樣本:telnet r-bp1zx****.redis.rds.aliyuncs.com 6379
結果說明
如果返回Connected to ...
或顯示telnet介面(如下所示),說明已建立串連。
如果執行個體為經典版執行個體,telnet成功後,依然需要檢查白名單,在白名單中的IP才能訪問資料庫,排查白名單的步驟,請參見步驟四:檢查白名單。
如果顯示Connection timed out或Connect failed,表示串連失敗。
常見原因和解決方案
白名單配置錯誤或未配置白名單。具體請參見步驟四:檢查白名單。
步驟四:檢查白名單
白名單錯誤或未配置白名單是串連失敗的常見原因。如果出現以下兩種現象,建議您排查白名單。
網域名稱可以ping通,但telnet失敗。
如果您在本地裝置使用redis-cli串連Redis公網地址,報錯
(error) ERR illegal address
或(error) ERR client ip is not in whitelist
。
常見原因
白名單配置錯誤,即未將本地裝置的公網IP配置到白名單中。
未配置白名單。
解決方案
查詢本地裝置的公網IP。
Linux作業系統:開啟終端,輸入
curl ifconfig.me
命令後斷行符號。Windows作業系統:開啟命令提示字元,輸入
curl ip.me
命令後斷行符號。macOS作業系統:開啟終端,輸入
curl ifconfig.me
命令後斷行符號。
將查到的公網IP添加到Redis白名單中。具體操作請參見設定IP白名單。