1. 程式人生 > >SpringCloud 解決虛擬機器網絡卡導致的IP不可呼叫

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地址。

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