本文介紹如何解決MSE Nacos執行個體網域名稱無法解析的問題。
問題現象
當程式串連MSE Nacos出現執行個體網域名稱無法解析時,可能會有如下幾種報錯。
UnknownHostException
No route to host
Unable to resolve host
問題原因
應用節點所配置的DNS伺服器或NameServer不正確,導致無法解析MSE網域名稱。
容器未使用宿主機的DNS伺服器或NameServer,或網路模式錯誤,導致無法解析MSE網域名稱。
應用節點所配置的DNS伺服器或NameServer故障,特別是Kubernetes叢集所依賴的CoreDNS故障,導致無法解析MSE網域名稱。
解決方案
方案一:使用dig命令
執行如下命令安裝dig工具。
yum install -y bind-utils如下代碼所示,使用dig命令,嘗試解析網域名稱,並查看status和SERVER欄位是否能夠正常地解析網域名稱。
若status值為NOERROR,以及SERVER欄位使用的DNS伺服器或NameServer正確,表明網域名稱正常解析。
dig ${mse.nacos.host}
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.1.alios7.2 <<>> ${mse.nacos.host}
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN ## 確認這個欄位, id: 46791
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;${mse.nacos.host}. IN A
;; AUTHORITY SECTION:
com. 900 IN SOA a.gtld-servers.net. nstld.verisign-grs.com. 1670413473 1800 900 604800 86400
;; Query time: 0 msec
## 確認這個欄位
;; SERVER: yyy.yyy.yyy.yyy#zz(...)
;; WHEN: Wed Dec 07 19:39:32 CST 2022
;; MSG SIZE rcvd: 73方案二:使用ping命令
使用
ping ${mse.nacos.host}指令嘗試解析。如果提示
unknown host,則無法解析網域名稱。如果提示
PING ${mse.nacos.host} (xxx.xx.xx.xx) 56(84) bytes of data.,則解析成功。
如果執行
ping命令無法正常解析,可查看檔案/etc/resolv.conf的內容,擷取DNS伺服器和NameServer地址資訊,嘗試採用以下方式修複:如果執行
ping命令可以正常解析,且應用已經恢複不再出現異常,說明是DNS伺服器或NameServer出現故障。請提工单聯絡網路支援人員協助排查DNS伺服器或NameServer故障原因。如果使用的是ACK叢集,請提工单聯絡ACK支援人員協助排查CoreDNS故障原因。