当我们的电脑安装了虚拟机时,我们将服务注册到 Eureka 注册中心时,可能会发现注册的IP是虚拟机网卡的IP,此时其它服务器的请求无法请求到该IP地址
解决方法
1. 禁用虚拟网卡
控制面板 → 网络和共享中心 → 更改适配器设置
禁用掉所有虚拟机的网络
2.忽略掉指定网络
spring:
cloud:
inetutils:
# 可用正则表达式,表示禁用以VMware开头的网络
ignoredInterfaces: ['VMware.*']
# 可用ip地址段表示
preferred-networks: ['10.112']
use-only-site-local-interfaces: true
这种方式虽然能够让服务之间访问正确的 ip 地址,但是 ${spring.cloud.client.ip-address}
依旧为虚拟网卡的 ip ,因此如果我们以 ${spring.cloud.client.ip-address}:${server.port}
的格式注册到注册中心,显示的地址依旧可能是虚拟网卡的地址,只是不影响使用。
3.手动指定IP地址
如果不想禁用掉网卡,并且你有严重的强迫症,无法忍受第二种方式,那么可以尝试第三种方式
eureka:
instance:
# 配置主机名
hostname: registry
prefer-ip-address: true
instance-id: ${eureka.instance.ip-address}:${server.port}
ip-address: 10.112.11.108
这种方式可以让你免去方法2的困扰,缺点是需要硬编码,手动指定IP地址。
如果有更好的方式,希望大家可以多多指教