在linux主机部署eureka高可用方案的时候,发现注册到服务中心的服务ip是随机的,由于主机的网卡是多个,随机的ip并不是自己想要的,上网查了一些资料,总结如下:
1 忽略网卡:spring.cloud.inetutils.ignored-interfaces
1
2
|
#忽略eth0, 支持正则表达式 spring.cloud.inetutils.ignored-interfaces[ 0 ]=eth0 |
2 指定ip:spring.cloud.inetutils.preferred-networks
1
2
|
#preferred-networks是指倾向于使用的ip地址,接收一个正则表达式数组,用于选择spring cloud应用使用的本机的ip地址。 spring.cloud.inetutils.preferrednetworks[ 0 ]=^ 192 \. 168 |
3 修改host文件
当网查遍历逻辑都没有找到合适ip时会走jdk的inetaddress.getlocalhost()。该方法会返回当前主机的hostname, 然后会根据hostname解析出对应的ip。因此第二种方案就是配置本机的hostname和/etc/hosts文件,直接将本机的主机名映射到有效ip地址。
4 指定实例ip
1
2
3
4
|
#指定此实例的ip eureka.instance.ip-address= #注册时使用ip而不是主机名 eureka.instance.prefer-ip-address= true |
5 通过jar命令参数
1
2
3
|
java -jar xxx.jar --spring.cloud.inetutils.preferred-networks= #需要设置的ip地址 或者 java -jar xxx.jar --spring.cloud.inetutils.ignored-interfaces= #需要过滤掉的网卡 |
以上新手折腾了一下午,大家有好方法一起交流一下,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://segmentfault.com/a/1190000014140524