全部產品
Search
文件中心

Microservices Engine:如何解決MSE Nacos執行個體網域名稱無法解析的問題?

更新時間:Jan 24, 2025

本文介紹如何解決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命令,嘗試解析網域名稱,並查看statusSERVER欄位是否能夠正常地解析網域名稱。

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
  • 如果dig命令無法正常解析網域名稱,採用以下方式修複:

    • 如果您的環境是通過ECS部署,請記錄SERVER欄位中的DNS伺服器和NameServer地址資訊,並提工单聯絡ECS或網路支援人員協助排查網域名稱解析失敗的原因。

    • 如果您的環境是通過Docker或Kubernetes部署,請退出到宿主機或Node上再次執行dig命令嘗試解析。

      • 如果解析成功,說明是網路模式錯誤或容器內外的DNS伺服器和NameServer設定不同,嘗試修改部署的網路模式,或將Node上的/etc/resolv.conf配置移植到容器中重試。

      • 如果無法解析,請提工单聯絡ECS或網路支援人員協助排查網域名稱解析失敗的原因。

  • 如果執行dig命令可以正常解析,且應用已經恢複不再出現異常,說明是DNS伺服器或NameServer出現故障。請提工单聯絡網路支援人員協助排查DNS伺服器或NameServer故障原因。

    如果使用的是ACK,請提工单聯絡ACK支援人員協助排查CoreDNS故障原因。

方案二:使用ping命令

  1. 使用ping ${mse.nacos.host}指令嘗試解析。

    • 如果提示unknown host,則無法解析網域名稱。

    • 如果提示PING ${mse.nacos.host} (xxx.xx.xx.xx) 56(84) bytes of data.,則解析成功。

  2. 如果執行ping命令無法正常解析,可查看檔案/etc/resolv.conf的內容,擷取DNS伺服器和NameServer地址資訊,嘗試採用以下方式修複:

    • 如果您的環境是通過ECS部署,請記錄/etc/resolv.conf中的內容,並提工单聯絡ECS或網路支援人員協助排查網域名稱解析失敗的原因。

    • 如果您的環境是通過Docker或Kubernetes部署,請退出到宿主機或Node上再次執行ping命令嘗試解析。

      • 如果解析成功,說明是網路模式錯誤或容器內外的DNS伺服器和NameServer設定不同,嘗試修改部署的網路模式,或將Node上的/etc/resolv.conf配置移植到容器中重試。

      • 如果無法解析,請提工单聯絡ECS或網路支援人員協助排查網域名稱解析失敗的原因。

  3. 如果執行ping命令可以正常解析,且應用已經恢複不再出現異常,說明是DNS伺服器或NameServer出現故障。請提工单聯絡網路支援人員協助排查DNS伺服器或NameServer故障原因。

    如果使用的是ACK叢集,請提工单聯絡ACK支援人員協助排查CoreDNS故障原因。