使用ip注册eureka

eureka的client注册到server时默认是使用hostname而不是ip(这种情况不总是发生),这就导致服务间相互调用时也会使用hostname进行调用,从而调用失败。

报异常:java.net.UnknownHostException: iZbp1fgdu6lt0h7c8rvw9aZ

这时候就需要使用ip来服务到eureka-server上,需要在eureka的client增加配置如下:

 

eureka.instance.prefer-ip-address=true

 

http://www.itmuch.com/spring-cloud-code-read/spring-cloud-code-read-eureka-registry-ip/https://blog.csdn.net/soulfight/article/details/77096632

这篇文章从源码的角度阐述了为什么

 

实践:

 

                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Edgware.SR2</version>

  

实验1:

eureka.instance.instance-id=${spring.cloud.client.ipAddress}:${server.port}

仅修改了主机名,但是暴露的ip地址client是无法访问的:

 

实验2:

eureka.instance.prefer-ip-address=true

未修改主机名,但是ip可以访问

 

小结:

eureka.instance.instance-id仅关心实例id,真正注册ip到eureka且被client访问的是eureka.instance.prefer-ip-address

 

附一个加版本号的实例id写法:

#eureka.instance.instance-id=${spring.cloud.client.ipAddress}:${spring.application.name}:${server.port}:@project.version@

 

 

 


posted on 2018-08-29 16:10  silyvin  阅读(519)  评论(0编辑  收藏  举报