在多ip地址环境下,Spring Cloud 服务的ip地址不固定
- 忽略网卡:
spring.cloud.inetutils.ignored-interfaces
#忽略eth0, 支持正则表达式
spring.cloud.inetutils.ignored-interfaces[0]=eth0
spring:
cloud:
inetutils:
ignored-interfaces:
- eth0
- 指定IP:
spring.cloud.inetutils.preferred-networks
#preferred-networks是指倾向于使用的IP地址,接收一个正则表达式数组,用于选择Spring Cloud应用使用的本机的IP地址。
spring.cloud.inetutils.preferredNetworks[0]=^192\.168.*
spring:
cloud:
inetutils:
preferred-networks:
- ^192\.168.*
- 修改Host文件
当网查遍历逻辑都没有找到合适ip时会走JDK的InetAddress.getLocalHost()。该方法会返回当前主机的hostname, 然后会根据hostname解析出对应的ip。因此第二种方案就是配置本机的hostname和/etc/hosts文件,直接将本机的主机名映射到有效IP地址。
- 指定实例IP
#指定此实例的ip
eureka.instance.ip-address=
#注册时使用ip而不是主机名
eureka.instance.prefer-ip-address=true
- 通过jar命令参数
java -jar xxx.jar --spring.cloud.inetutils.preferred-networks= #需要设置的IP地址
java -jar xxx.jar --spring.cloud.inetutils.ignored-interfaces= #需要过滤掉的网卡
# 总结
inetutils的配置不仅适用于eureka,nacos也适用