SpringCloud 解决虚拟机网卡导致的IP不可调用

当我们的电脑安装了虚拟机时,我们将服务注册到 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地址。

如果有更好的方式,希望大家可以多多指教

猜你喜欢

转载自blog.csdn.net/qq_36102271/article/details/85162231