阿里云Redis數(shù)據(jù)庫因域名解析失敗導(dǎo)致連接問題的解決方法
發(fā)布時間:2019-07-10 點擊數(shù):3763
在使用Redis連接地址連接實例時,如果因DNS服務(wù)出現(xiàn)問題導(dǎo)致ECS解析連接地址失敗,ECS與Redis之間的網(wǎng)絡(luò)連接將會中斷。您可以根據(jù)本文的建議嘗試解決此類問題。
背景信息
ECS與Redis之間出現(xiàn)連接問題的原因多種多樣,DNS解析失敗是其中較為常見的一種。當(dāng)出現(xiàn)UnknownHostException或者failed to connect: r-***************.redis.rds.aliyuncs.com could not be resolved之類提示未知主機(jī)名或連接地址無法正常解析的報錯時,請檢查域名的正確性和DNS服務(wù)器設(shè)置,并刷新DNS緩存。
說明 本文以Linux環(huán)境為例進(jìn)行說明。
操作步驟
-
檢查業(yè)務(wù)代碼中設(shè)置的Redis連接地址是否正確。

-
使用# cat /etc/resolv.conf在ECS中查看/etc/resolv.conf文件中是否正確設(shè)置了DNS服務(wù)器地址。

說明- 如未設(shè)置DNS服務(wù)器請使用# vi /etc/resolv.conf命令編輯/etc/resolv.conf,按照上圖中的格式添加DNS服務(wù)器地址,編輯完成后按鍵盤上的Esc鍵,輸入:wq之后按下回車保存修改。
- 建議您使用ECS中默認(rèn)的DNS服務(wù)器或?qū)⑵渥远x為其它安全穩(wěn)定的DNS服務(wù)器。
-
根據(jù)您使用的DNS服務(wù)在下方選擇相應(yīng)的方法清除DNS緩存。
-
清除nscd的DNS緩存:
# service nscd restart或使用:
# service nscd reload -
清除dnsmasq的DNS緩存:
# service dnsmasq restart -
清除BIND服務(wù)器中的DNS緩存 :
# /etc/init.d/named restart或使用:
# rndc restart
-
清除nscd的DNS緩存:
說明 如果以上步驟未能解決問題,您可以采用臨時方案,在 /etc/hosts文件中加入Redis的域名和IP的映射,確保域名可以正常解析,之后參考Redis連接問題排查與解決嘗試排除其它原因引起的連接問題。hosts文件的編輯方法請參見本文第2步的說明部分和下圖示例。請注意,修改hosts文件只能作為臨時解決方案,如果Redis實例的IP地址發(fā)生改變,該方案將會失效。
