项目背景:
采用Spring Cloud+IDEA+Maven搭建了由多个微服务组成的项目,部署上线是在多个阿里服务器里的。
问题描述:
部署上线过程中,各个微服务都正常启动,而且都注册到了eureka注册中心,但是相互调用时报java.net.UnknownHostException:主机名的错误。
问题原因思考:
各个微服务是以“主机名:服务名:端口”的形式注册到注册中心。当发布测试时,服务器用的是同一个,为localhost,所以能找到主机并相互调用。当部署上线时,每个微服务运行在不同主机,主机名都各不相同,所以调用时找不到目标主机在哪。
解决方法:
让微服务以“ip:端口”的形式注册,这里的ip指的是部署的主机ip。
在每个需要注册的微服务的application.properties文件中添加如下:
eureka.instance.prefer-ip-address=true
eureka.instance.instance-id=ip地址:端口