SpringCloud 解決虛擬機器網絡卡導致的IP不可呼叫
阿新 • • 發佈:2018-12-22
當我們的電腦安裝了虛擬機器時,我們將服務註冊到 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地址。
如果有更好的方式,希望大家可以多多指教