欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringCloud 服務注冊IP錯誤的解決

 更新時間:2021年07月05日 16:55:40   作者:小渣筆記  
這篇文章主要介紹了SpringCloud 服務注冊IP錯誤的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

SpringCloud 服務注冊IP錯誤

1、錯誤原因

在服務注冊的時候,是使用 spring.cloud.client.ipAddress 這個變量,如果本機有多個網(wǎng)卡,那么可能會把不是本機以太網(wǎng)的網(wǎng)卡地址注冊上去。

使用 ipconfig 可以看到,本機上有多個以太網(wǎng)適配器,而每個以太網(wǎng)適配器,都有一個 IPv4 地址,這時注冊上去的 IP,就是其中一個,卻不一定是正確的那個。

2、處理

2.1、禁用其他網(wǎng)卡

到電腦的 更改適配器 設置中,將不是本機以太網(wǎng)的其他網(wǎng)卡禁用

2.2、配置

到電腦的設備管理器 --> 網(wǎng)絡適配器 中,可以看到所有的網(wǎng)卡名

在要注冊的服務中配置一下內(nèi)容:

//忽略指定正則匹配的網(wǎng)卡的配置,我這里配置了VM虛擬機和Docker的
spring.cloud.inetutils.ignoredInterfaces=['VMware.*','Hyper-V.*']
//指定默認IP,可以使IP段
spring.cloud.inetutils.preferredNetworks=['192.168']
spring.cloud.inetutils.use-only-site-local-interfaces=true

SpringCloud以及Nacos服務注冊IP選擇

微服務部署后,需要相互調(diào)用,其中服務A調(diào)用服務B時發(fā)現(xiàn)無法調(diào)用。其中服務注冊和發(fā)現(xiàn)以及配置中心使用Nacos

分析:

檢查了多遍代碼后,沒有發(fā)現(xiàn)調(diào)用方式有問題,所以只能是網(wǎng)絡問題。通過postman直接調(diào)用服務B,發(fā)現(xiàn)可以調(diào)通,但是使用服務A不行,于是檢查服務A在注冊中心注冊的IP,發(fā)現(xiàn)和并不是服務B啟動機器的IP。這就是問題所在了。

為什么注冊的IP和真實IP不符合呢?原因是Nacos客戶端在注冊服務時會從機器網(wǎng)卡中選擇一個IP來注冊,當機器存在多個網(wǎng)卡(例如存在虛擬網(wǎng)卡)時,所選則的IP可能不是真是的物理機的IP,所以,當注冊了的是非真實IP后,另一臺機器調(diào)用時是不可能調(diào)通的。

解決:

知道問題后,就要解決,查了一下SpringCloud的官方文檔,發(fā)現(xiàn)有一項配置如下:

Sometimes, it is useful to ignore certain named network interfaces so that they can be excluded from Service Discovery registration (for example, when running in a Docker container).

A list of regular expressions can be set to cause the desired network interfaces to be ignored.

You can also force the use of only specified network addresses by using a list of regular expressions.

spring:
  cloud:
 inetutils:
   preferredNetworks:
  - 192.168
  - 10.0

該項配置用于指定首選IP,當有多個網(wǎng)卡時,指定該IP地址后(支持正則),客戶端在選擇IP時就會選擇符合preferredNetworks配置的IP地址進行注冊。

同樣的,Nacos也可以配置自己的首選IP以及網(wǎng)卡選擇:

spring.cloud.nacos.discovery.ip:
spring.cloud.nacos.discovery.networkInterface

我們選擇其中一個配置就可以,都能達到相同的效果。

擴展:

雖然問題解決了,但是還是要更深入的了解一下這個IP選擇的邏輯。翻了一通源碼發(fā)現(xiàn),其大致邏輯如下:

Nacos首先檢查有沒有ip及networkInterface配置,如果有則使用配置的IP,否則檢查networkInterface,并獲取IP,如果兩者都為空,則使用inetUtils.findFirstNonLoopbackHostInfo().getIpAddress()來獲取IP:

而findFirstNonLoopbackHostInfo()的部分邏輯如下:

它最終會返回一個匹配的IPV4地址,并且排除本機回環(huán)網(wǎng)絡(127.0.0.0-127.255.255.255),并且匹配是否是首選網(wǎng)絡(如果配置了preferredNetworks)。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 基于線程池的工作原理與源碼解讀

    基于線程池的工作原理與源碼解讀

    下面小編就為大家分享一篇基于線程池的工作原理與源碼解讀,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • java中l(wèi)ong(Long)與int(Integer)之間的轉(zhuǎn)換方式

    java中l(wèi)ong(Long)與int(Integer)之間的轉(zhuǎn)換方式

    這篇文章主要介紹了java中l(wèi)ong(Long)與int(Integer)之間的轉(zhuǎn)換方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • 如何解決springboot數(shù)據(jù)庫查詢時出現(xiàn)的時區(qū)差異問題

    如何解決springboot數(shù)據(jù)庫查詢時出現(xiàn)的時區(qū)差異問題

    這篇文章主要介紹了如何解決springboot數(shù)據(jù)庫查詢時出現(xiàn)的時區(qū)差異問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Java日期相關(guān)API的基本操作總結(jié)

    Java日期相關(guān)API的基本操作總結(jié)

    大概總結(jié)一下日期相關(guān)API操作原因是對于日期的操作我們開發(fā)中還是很常見的,包括在數(shù)據(jù)庫中保存日期,以及之前String類中對字符串的一些處理開發(fā)中都很常見,希望對大家有所幫助
    2022-11-11
  • Java連接Oracle數(shù)據(jù)庫實例解析

    Java連接Oracle數(shù)據(jù)庫實例解析

    數(shù)據(jù)庫的操作是當前系統(tǒng)開發(fā)必不可少的開發(fā)部分之一。接下來通過本文給大家介紹Java連接Oracle數(shù)據(jù)庫實例解析,非常不錯具有參考借鑒價值,感興趣的朋友一起學習吧
    2016-06-06
  • Java實現(xiàn)高效隨機數(shù)算法的示例代碼

    Java實現(xiàn)高效隨機數(shù)算法的示例代碼

    這篇文章主要介紹了Java實現(xiàn)高效隨機數(shù)算法的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-02-02
  • Java 知識難點之異常的認知與使用詳解

    Java 知識難點之異常的認知與使用詳解

    所謂異常是指程序在運行時出現(xiàn)錯誤時提示調(diào)用者的機制,異常的種類有很多,不同種類的異常有不同的含義,也有不同的處理方式,通讀本篇對大家的學習或工作具有一定的價值,需要的朋友可以參考下
    2021-09-09
  • Spring Boot如何集成模板引擎FreeMarker

    Spring Boot如何集成模板引擎FreeMarker

    這篇文章主要介紹了Spring Boot如何集成模板引擎FreeMarker,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-10-10
  • java基于odbc連接oracle的實現(xiàn)方法

    java基于odbc連接oracle的實現(xiàn)方法

    這篇文章主要介紹了java基于odbc連接oracle的實現(xiàn)方法,結(jié)合實例形式分析了連接操作的具體步驟與相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2016-09-09
  • 通過實例解析Socket套接字通信原理

    通過實例解析Socket套接字通信原理

    這篇文章主要介紹了通過實例解析Socket套接字通信原理,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-12-12

最新評論