一、问题描述
在 docker 里面的成功安装 nacos 并可以正常访问,然后服务在nacos里可以正常注册、正常发现,但就是不能调用,一调用就说unknownhost exception,具体错误:
com.alibaba.nacos.shaded.io.grpc.StatusRuntimeException: UNAVAILABLE: Unable to resolve host {域名}
二、解决过程
可以做个试验,测试一下:
1. 如果在服务器上, ping {域名} ,如果有返回规律的数据,说明可以访问域名成功
2. 如果在服务器上,如果1不能访问域名,直接ping ip地址,看看是否能访问,不能访问检查网络配置是否正确
3. 如果 1 和 2 都可以访问,那在你本地电脑上,用cmd命令, ping {域名} ,如果不能访问,说明hosts文件里没用配置域名,或者配置错误的域名,需要修改成正确的。
4. 如果3 ping不通,但是ping 服务器的ip地址,可以ping 通,说明本地电脑访问不了本地的hosts文件, 可能是hosts文件当前用户没用访问/修改权限,导致本地程序不能正确读取对应的ip地址。
对于 windows 系统的电脑来说,不同的用户的权限不同。例如,Admin用户与Administrator用户,访问 C:\Windows\System32\drivers\etc\hosts 文件的权限是不一样的,可能会造成读取hosts文件失败,解析hosts失败,找不到域名映射。
三、修改权限,完美解决
对于因权限问题导致hosts文件读取失败的问题,可以按照下面方法来修复:
1、按住 win 键和 x 键,在左下角弹框菜单里选择 Windows Powershell(管理员)
2、在打开的Windows Powershell界面输入notepad,按回车,就会出现记事本的界面
3、记事本界面点击"文件"-"打开",弹出的窗口选择路径 C:\Windows\System32\drivers\etc,点击右下角"文本文档",选择"所有文件",点击出现的 hosts 文件,点右下角的"打开",就会弹出hosts文件的编辑页面
4、改完hosts文件后,点击"文件"-"保存",这样hosts文件就修改成功了。
至此,这个问题终于被完美的解决了。