建议使用以下浏览器,以获得最佳体验。 IE 9.0+以上版本 Chrome 31+ 谷歌浏览器 Firefox 30+ 火狐浏览器
请选择 进入手机版 | 继续访问电脑版
设置昵称

在此一键设置昵称,即可参与社区互动!

确定
我再想想
选择版块

liubao68

发帖: 96粉丝: 7

级别 : 版主

Rank: 7Rank: 7Rank: 7

发消息 + 关注

发表于2018-10-17 14:38:28 1212 6 楼主 显示全部楼层
[技术交流] 服务部署启动后报告域名解析失败

错误日志:


2018-10-17 06:13:22,818 ERROR (RestUtils.java:93)- POST /v4/default/registry/microservices fail, endpoint is cse.cn-north-1.myhuaweicloud.com:443, message: Search domain query failed. Original hostname: 'cse.cn-north-1.myhuaweicloud.com' failed to resolve 'cse.cn-north-1.myhuaweicloud.com.cluster.local' after 3 queries


解决方法:


这个错误是由于域名解析失败。在某些环境上需要配置域名解析参数,才能够正常解析。CSE默认在cse-solution-service-engine里面提供了默认配置:

# 域名解析
addressResolver:
 searchDomains: default.svc.cluster.local,svc.cluster.local,cluster.local
 ndots: 1


一般不会出现问题,通常是业务没有依赖CSE提供的公共POM或者老版本。在自己的配置文件增加这个配置即可。DNS的其他配置参考:

https://docs.servicecomb.io/java-chassis/zh_CN/general-development/dnsconfig.html


回复 举报
分享

分享文章到朋友圈

分享文章到微博

yhs0092

发帖: 12粉丝: 2

级别 : 注册会员

Rank: 2

发消息 + 关注

发表于2018-11-5 17:41:52 沙发 显示全部楼层

有些时候,在Windows笔记本电脑上做开发的时候也会碰到这个问题,通常是由于Netty在Windows多网卡环境下做DNS域名解析的时候,选错了网卡导致的。

Windows笔记本电脑通常有一张无线网卡一张有线网卡,用户通常是连WiFi进行开发的,而有时候Netty会误选择有线网卡来做DNS解析,此时也有会碰到这种错误,可以考虑禁用有线网卡。

点赞 回复 举报

一拳打死老...

发帖: 4粉丝: 1

级别 : 新手上路

Rank: 1

发消息 + 关注

发表于2018-11-20 15:37:46 板凳 显示全部楼层
yhs0092 发表于 2018-11-5 17:41 有些时候,在Windows笔记本电脑上做开发的时候也会碰到这个问题,通常是由于Netty在Windows多网卡环境下做D ...

靠谱的回答,出现如下错误


2018-11-20 15:30:15.348 ERROR 9100 --- [ntloop-thread-0] o.a.s.s.client.http.RestUtils            : GET /v4/default/registry/existence?appId=helloworld&type=microservice&serviceName=provider&env&version=0.0.1 fail, endpoint is cse.cn-north-1.myhuaweicloud.com:443, message: Search domain query failed. Original hostname: 'cse.cn-north-1.myhuaweicloud.com' failed to resolve 'cse.cn-north-1.myhuaweicloud.com'. Exceeded max queries per resolve 4 

2018-11-20 15:30:15.348  WARN 9100 --- [ntloop-thread-0] o.a.s.s.c.h.ServiceRegistryClientImpl    : invoke service [/v4/default/registry/existence] failed, retry.

2018-11-20 15:30:15.348  INFO 9100 --- [ntloop-thread-0] o.a.s.s.client.IpPortManager             : Change service center address from cse.cn-north-1.myhuaweicloud.com:443 to 



解决方式:开发环境使用wifi,故禁用本地连接即可

image.png

点赞 回复 举报

liubao68

发帖: 96粉丝: 7

级别 : 版主

Rank: 7Rank: 7Rank: 7

发消息 + 关注

发表于2018-12-11 19:26:19 地板 显示全部楼层

场景更新: 在Windows场景下,有些用户网络设置里面,需要手工添加DNS设置,而不能使用自动发现DNS地址。 可以打开Windows系统的DNS配置进行查看。 


这种情况下,在microservice.yaml中,也需要手工配置DNS地址。 比如:


addressResolver:
  servers: 8.8.8.8,8.8.4.4


CSE的DNS配置参考: https://docs.servicecomb.io/java-chassis/zh_CN/general-development/dnsconfig.html



不过加入这个配置之前,需要看看#6楼的建议,使用正确的DNS服务器。 

点赞 回复 举报

yhs0092

发帖: 12粉丝: 2

级别 : 注册会员

Rank: 2

发消息 + 关注

发表于2019-1-23 11:15:46 5# 显示全部楼层

补充1楼的说明:

域名解析时自动加上了后缀,也就是配置的地址是xxx,实际日志里显示解析的是xxx.cluster.local,这个问题其实是环境问题,是由于resolv.conf文件里的配置不适合你的场景,通常出现在云上K8s集群部署的条件下。

做如下配置可以解决。

addressResolver:
 searchDomains: default.svc.cluster.local,svc.cluster.local,cluster.local
 ndots: 1


这个配置并不是在所有版本的CSEJavaSDK中都生效,如果你在sdk中找不到 org.apache.servicecomb.foundation.vertx.AddressResolverConfig 类(在foundation-vertx包里),或者在里面搜不到ndots的配置项,则说明你所使用的版本太旧,不支持这种配置。


解决方法有两个:

  1. 升级SDK版本(推荐)

  2. 去环境的/etc/resolv.conf中编辑ndots配置以保证sdk做域名解析的时候不会加后缀(这里的是标准的域名解析配置,相关原理请自行查找资料 : )  )

点赞 回复 举报

liubao68

发帖: 96粉丝: 7

级别 : 版主

Rank: 7Rank: 7Rank: 7

发消息 + 关注

发表于2019-1-30 09:53:23 6# 显示全部楼层

由于国内网络调整, 如下两个DNS服务器经常无法访问:

8.8.8.8,8.8.4.4
     


如果业务的配置文件加上了配置

addressResolver:  
  servers: 8.8.8.8,8.8.4.4

很可能报告无法解析域名的情况。 一般情况下, 业务都不需要设置DNS,操作系统默认可以自动进行DNS查找,业务可以删除这个配置。 只在无法解析域名,并且使用自定义DNS地址的时候,才需要配置。 




点赞 回复 举报

yhs0092

发帖: 12粉丝: 2

级别 : 注册会员

Rank: 2

发消息 + 关注

发表于2019-2-15 16:13:22 7# 显示全部楼层

补充6楼的说明:

如无必要,建议不配置DNS服务器地址,尤其是国外DNS。否则有可能造成域名解析失败,甚至有可能由于DNS查询返回的错误结果导致启动流程抛出异常,JVM进程退出。


另外在华为云上的集群内部署服务的时候,通常集群节点上配置了内网使用的DNS server地址,用户微服务通过这个DNS解析出的IP是内网IP,连接CSE经过的网络路径更短,效率更高。

如果在这种条件下显式配置了外网的DNS server,有可能因为集群不通外网而报DNS错误,即使能连通外网,解析出来的华为云服务的IP地址也是外网的地址,用户微服务发送请求要从集群内经过外网再发到华为云后台服务,网络链路变长,效率降低。

点赞 回复 举报

游客

您需要登录后才可以回帖 登录 | 立即注册