微服务之间通过feign互相调用,跨服务器调用时抛出异常:No route to host

com.netflix.hystrix.exception.HystrixRuntimeException: failed and no fallback available.
    at com.netflix.hystrix.AbstractCommand$22.call(AbstractCommand.java:819) ~[hystrix-core-1.5.12.jar!/:1.5.12]
	at com.netflix.hystrix.AbstractCommand$22.call(AbstractCommand.java:804) ~[hystrix-core-1.5.12.jar!/:1.5.12]

Caused by: feign.RetryableException: No route to host (Host unreachable) executing
	at feign.FeignException.errorExecuting(FeignException.java:67) ~[feign-core-9.5.1.jar!/:?]
	at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:104) ~[feign-core-9.5.1.jar!/:?]

Caused by: java.net.NoRouteToHostException: No route to host (Host unreachable)
	at java.net.PlainSocketImpl.socketConnect(Native Method) ~[?:1.8.0_202]
	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[?:1.8.0_202]

解决:

       feign调用其他服务也是通过获取eureka注册中心服务,猜测是否服务注册的IP存在问题,查询指定appId的实例:eureka url/eureka/apps/{appId},看到服务注册IP为管理IP,而规定服务器之间不能通过管理IP访问,只能通过业务IP,所以接下来就考虑如何注册服务到eureka为该服务器业务IP地址。涉及Eureka多网卡下的IP选择,采用配置指定使用的网络地址解决:
spring.cloud.inetutils.preferred-networks=10.258(配置内网业务IP网段)

其他解决方法(Eureka多网卡下的IP选择):

1、手动指定IP地址(ok):
eureka.instance.ip-address=10.258.001.01
2、只使用站点本地地址(验证不成功):
#spring.cloud.inetutils.use-only-site-local-interfaces=true
3、忽略指定名称的网卡(ok):
spring.cloud.inetutils.ignored-interfaces=bond0
4、使用正则表达式,指定使用的网络地址(ok):
spring.cloud.inetutils.preferred-networks=10.258
5、使用/etc/hosts中主机名称映射的ip(ok)(使用none(或其他非ip字符串)匹配不到网卡IP,则取本地host:InetAddress.getLocalHost(),即/etc/hosts中主机名称映射的ip):
spring.cloud.inetutils.preferred-networks=none

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值