说明:分布式应用部署到服务上,由于服务器可能存在多张网卡,造成IP地址不准的问题。
解决方法:
1、直接添加忽略某张网卡的配置:
spring.cloud.inetutils.ignored-interfaces[0]=eth0 # 忽略eth0, 支持正则表达式
正则:
spring.cloud.inetutils.ignored-interfaces=eth.*
2、指定默认IP:
spring.cloud.inetutils.preferred-networks=192.168.20.123 #可以是IP段:192.168.20
3、除了这些配置,还有以下的这些配置:
spring.cloud.inetutils.default-hostname spring.cloud.inetutils.default-ip-address spring.cloud.inetutils.ignored-interfaces spring.cloud.inetutils.preferred-networks spring.cloud.inetutils.timeout-seconds spring.cloud.inetutils.use-only-site-local-interfaces
ignored-interfaces和preferred-networks这两个配置。这两个配置决定了spring cloud应用在启动的时候所使用的网卡和IP地址。ignored-interfaces接收一个正则表达式数组,配置名字虽然是ignored-interfaces,忽略的网卡,但是因为其接收的是正则表达式,所以我们可以任意的选择和反选本机的网卡。preferred-networks是指倾向于使用的IP地址,接收一个正则表达式数组,用于选择Spring Cloud应用使用的本机的IP地址。通过这两个配置,我们可以任意指定Spring Cloud应用使用的网卡和IP地址。
更多解释参考官方说明,spring-cloud-commons项目为Spring Cloud生态提供了顶层的抽象和基础设施的实现。 网络这个最基本的基础设施也是在这里有对应的实现:InetUtils、InetUtilsProperties和UtilAutoConfiguration提供了网络配置相关的功能。
参考:
http://blog.csdn.net/neosmith/article/details/53126924
https://www.jianshu.com/p/90ec946293ee
http://blog.csdn.net/xichenguan/article/details/76557065
http://blog.csdn.net/tony308001970/article/details/75061217