最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringCloud 服務(wù)注冊IP錯誤的解決

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

SpringCloud 服務(wù)注冊IP錯誤

1、錯誤原因

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

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

2、處理

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

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

2.2、配置

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

在要注冊的服務(wù)中配置一下內(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服務(wù)注冊IP選擇

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

分析:

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

為什么注冊的IP和真實IP不符合呢?原因是Nacos客戶端在注冊服務(wù)時會從機器網(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)絡(luò)(127.0.0.0-127.255.255.255),并且匹配是否是首選網(wǎng)絡(luò)(如果配置了preferredNetworks)。

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

相關(guān)文章

  • Java中的轉(zhuǎn)換流InputStreamReader解讀

    Java中的轉(zhuǎn)換流InputStreamReader解讀

    InputStreamReader是Java.io包中的一個類,用于將字節(jié)輸入流轉(zhuǎn)換為字符輸入流,它繼承自java.io.Reader類,提供了兩種構(gòu)造方法,可以使用默認或指定字符集創(chuàng)建實例,常用方法包括讀取字符、判斷是否準備好讀取數(shù)據(jù)和關(guān)閉流
    2024-09-09
  • 基于SpringBoot + Redis實現(xiàn)密碼暴力破解防護

    基于SpringBoot + Redis實現(xiàn)密碼暴力破解防護

    在現(xiàn)代應用程序中,保護用戶密碼的安全性是至關(guān)重要的,密碼暴力破解是指通過嘗試多個密碼組合來非法獲取用戶賬戶的密碼,為了保護用戶密碼不被暴力破解,我們可以使用Spring Boot和Redis來實現(xiàn)一些防護措施,本文將介紹如何利用這些技術(shù)來防止密碼暴力破解攻擊
    2023-06-06
  • Spring Boot線程池使用的一些實用心得

    Spring Boot線程池使用的一些實用心得

    理論上線程越多程序可能更快,但在實際使用中我們需要考慮到線程本身的創(chuàng)建以及銷毀的資源消耗,以及保護操作系統(tǒng)本身的目的我們通常需要將線程限制在一定的范圍之類,這篇文章主要給大家介紹了關(guān)于Spring Boot線程池使用的一些實用心得,需要的朋友可以參考下
    2021-09-09
  • Java常用的八種排序算法與代碼實現(xiàn)

    Java常用的八種排序算法與代碼實現(xiàn)

    這篇文章主要給給大家分享Java常用的八種排序算法與代碼實現(xiàn),下面文章將詳細介紹整個實現(xiàn)過程,感興趣的小伙伙伴可以跟著小編一起來學習,希望對你有所幫助
    2021-10-10
  • Java中關(guān)鍵字synchronized的使用方法詳解

    Java中關(guān)鍵字synchronized的使用方法詳解

    synchronized關(guān)鍵字可以作為函數(shù)的修飾符,也可作為函數(shù)內(nèi)的語句,也就是平時說的同步方法和同步語句塊,下面這篇文章主要給大家介紹了關(guān)于Java中synchronized使用的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • 全排列算法-遞歸與字典序的實現(xiàn)方法(Java)

    全排列算法-遞歸與字典序的實現(xiàn)方法(Java)

    下面小編就為大家?guī)硪黄帕兴惴?遞歸與字典序的實現(xiàn)方法(Java) 。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • 解決springmvc+mybatis+mysql中文亂碼問題

    解決springmvc+mybatis+mysql中文亂碼問題

    這篇文章主要介紹了解決java中springmvc+mybatis+mysql中文亂碼問題的相關(guān)資料,需要的朋友可以參考下
    2015-09-09
  • Java SpringBoot 集成 Redis詳解

    Java SpringBoot 集成 Redis詳解

    Redis 是一個由 Salvatore Sanfilippo 寫的 key-value 存儲系統(tǒng),是跨平臺的非關(guān)系型數(shù)據(jù)庫。Redis 是一個開源的使用 ANSI C 語言編寫、遵守 BSD 協(xié)議、支持網(wǎng)絡(luò)、可基于內(nèi)存、分布式、可選持久性的鍵值對(Key-Value)存儲數(shù)據(jù)庫,并提供多種語言的 API
    2021-10-10
  • Java微信二次開發(fā)(三) Java微信各類型消息封裝

    Java微信二次開發(fā)(三) Java微信各類型消息封裝

    這篇文章主要為大家詳細介紹了Java微信二次開發(fā)第三篇,Java微信各類型消息封裝,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • 基于java配置nginx獲取真實IP代碼實例

    基于java配置nginx獲取真實IP代碼實例

    這篇文章主要介紹了基于java配置nginx獲取真實IP代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09

最新評論

武山县| 梁河县| 从江县| 五台县| 瑞安市| 建昌县| 山阴县| 府谷县| 梁河县| 平顶山市| 中山市| 鄄城县| 庆城县| 江川县| 若尔盖县| 阆中市| 义乌市| 青阳县| 城市| 桑日县| 舞阳县| 南和县| 卫辉市| 辽阳市| 吉木萨尔县| 乾安县| 罗平县| 赣榆县| 扶风县| 合江县| 孟州市| 新竹市| 诏安县| 札达县| 伊金霍洛旗| 普兰县| 永年县| 海安县| 钟祥市| 吴忠市| 涟水县|