Docker容器上Spring Cloud微服务相互调用时报错:java.net.UnknownHostException:主机名

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/NeverSad_/article/details/83384592
项目背景:

采用Spring Cloud+IDEA+Maven搭建了由多个微服务组成的项目,部署上线是用的是Docker容器技术。

问题描述:

部署上线过程中,各个微服务都正常启动,而且都注册到了eureka注册中心,但是相互调用时报java.net.UnknownHostException:主机名的错误。

原因分析:

各个微服务是以“主机名:服务名:端口”的形式注册到注册中心。当本地测试时,主机是同一个,为localhost,所以能找到主机并相互调用。当部署上线时,每个微服务运行在不同主机,主机名都各不相同,所以调用时找不到目标主机在哪。

解决方法:

让微服务以“ip:端口”的形式注册,这里的ip指的是部署的主机ip。
我的Spring Cloud版本:

<spring-cloud.version>Finchley.SR1</spring-cloud.version>

在application.properties中添加

eureka.instance.prefer-ip-address=true
eureka.instance.instance-id=ip地址:端口

其中,ip地址可以更换为http://域名,亲测可用。

展开阅读全文

没有更多推荐了,返回首页