本文介绍如何解决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故障原因。
文档内容是否对您有帮助?