国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

SpringCloud以及Nacos服務(wù)注冊IP選擇問題

這篇具有很好參考價值的文章主要介紹了SpringCloud以及Nacos服務(wù)注冊IP選擇問題。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、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啟動機(jī)器的IP。這就是問題所在了。

為什么注冊的IP和真實IP不符合呢?原因是Nacos客戶端在注冊服務(wù)時會從機(jī)器網(wǎng)卡中選擇一個IP來注冊,當(dāng)機(jī)器存在多個網(wǎng)卡(例如存在虛擬網(wǎng)卡)時,所選則的IP可能不是真是的物理機(jī)的IP,所以,當(dāng)注冊了的是非真實IP后,另一臺機(jī)器調(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,當(dāng)有多個網(wǎng)卡時,指定該IP地址后(支持正則),客戶端在選擇IP時就會選擇符合preferredNetworks配置的IP地址進(jìn)行注冊。

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

spring.cloud.nacos.discovery.ip:

spring.cloud.nacos.discovery.networkInterface

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

擴(kuò)展:

雖然問題解決了,但是還是要更深入的了解一下這個IP選擇的邏輯。翻了一通源碼發(fā)現(xiàn),其大致邏輯如下:
nacos 注冊的ip,spring cloud
Nacos首先檢查有沒有ip及networkInterface配置,如果有則使用配置的IP,否則檢查networkInterface,并獲取IP,如果兩者都為空,則使用inetUtils.findFirstNonLoopbackHostInfo().getIpAddress()來獲取IP:

nacos 注冊的ip,spring cloud

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

nacos 注冊的ip,spring cloud

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

二、注冊為指定IP和端口

如果選擇固定Ip注冊可以配置

spring.cloud.nacos.discovery.ip = 192.168.0.118
spring.cloud.nacos.discovery.port = 9000

如果選擇固定網(wǎng)卡配置項

spring.cloud.nacos.discovery.networkInterface = eth0

如果想更豐富的選擇,可以使用spring cloud 的工具 InetUtils進(jìn)行配置

  • 具體說明可以自行檢索: https://github.com/spring-cloud/spring-cloud-commons/blob/master/docs/src/main/asciidoc/spring-cloud-commons.adoc

    spring.cloud.inetutils.default-hostname
    spring.cloud.inetutils.default-ip-address
    spring.cloud.inetutils.ignored-interfaces[0]=eth0 # 忽略網(wǎng)卡,eth0
    spring.cloud.inetutils.ignored-interfaces=eth.* # 忽略網(wǎng)卡,eth.*,正則表達(dá)式
    spring.cloud.inetutils.preferred-networks=10.34.12 # 選擇符合前綴的IP作為服務(wù)注冊IP
    spring.cloud.inetutils.timeout-seconds
    spring.cloud.inetutils.use-only-site-local-interfaces

更多配置

spring.cloud.nacos.discovery.server-addr #Nacos Server 啟動監(jiān)聽的ip地址和端口
spring.cloud.nacos.discovery.service #給當(dāng)前的服務(wù)命名
spring.cloud.nacos.discovery.weight #取值范圍 1 到 100,數(shù)值越大,權(quán)重越大
spring.cloud.nacos.discovery.network-interface #當(dāng)IP未配置時,注冊的IP為此網(wǎng)卡所對應(yīng)的IP地址,如果此項也未配置,則默認(rèn)取第一塊網(wǎng)卡的地址
spring.cloud.nacos.discovery.ip # 優(yōu)先級最高
spring.cloud.nacos.discovery.port # 默認(rèn)情況下不用配置,會自動探測
spring.cloud.nacos.discovery.namespace # 常用場景之一是不同環(huán)境的注冊的區(qū)分隔離,例如開發(fā)測試環(huán)境和生產(chǎn)環(huán)境的資源(如配置、服務(wù))隔離等。 spring.cloud.nacos.discovery.access-key # 當(dāng)要上阿里云時,阿里云上面的一個云賬號名
spring.cloud.nacos.discovery.secret-key # 當(dāng)要上阿里云時,阿里云上面的一個云賬號密碼
spring.cloud.nacos.discovery.metadata #使用Map格式配置,用戶可以根據(jù)自己的需要自定義一些和服務(wù)相關(guān)的元數(shù)據(jù)信息
spring.cloud.nacos.discovery.log-name # 日志文件名
spring.cloud.nacos.discovery.enpoint # 地域的某個服務(wù)的入口域名,通過此域名可以動態(tài)地拿到服務(wù)端地址
ribbon.nacos.enabled # 是否集成Ribbon 默認(rèn)為true

三、通過內(nèi)網(wǎng)ip注冊為指定外網(wǎng)ip

Nacos注冊中心是: https://github.com/alibaba/nacos

各個服務(wù)通過Nacos客戶端將服務(wù)信息注冊到Nacos上,當(dāng)Nacos服務(wù)注冊的IP默認(rèn)選擇出問題時,可以通過查閱對應(yīng)的客戶端文檔,來選擇配置不同的IP。

大多公司服務(wù)器環(huán)境會有兩套ip,一套是對內(nèi)網(wǎng),一套是對外網(wǎng)。即同一臺服務(wù)器,有對應(yīng)兩個ip(例:10.0.0.1,100.0.0.1)。

在使用nacos做為注冊中心,由于內(nèi)網(wǎng)環(huán)境的因素,A服務(wù)注冊上去的ip可能是100.0.0.1,B服務(wù)注冊上去的ip可能是10.0.0.2,經(jīng)驗證10之間調(diào)用互通,100之間也互通。但10調(diào)用100不同,或者反之也不行。

解決方案:
配置文件加如下配置:

nacos-ip-100.0.0.1 = 10.0.0.1
spring.cloud.nacos.discovery.ip = ${nacos-ip-${spring.cloud.client.ip-address}}

四、Nacos服務(wù)注冊地址為內(nèi)網(wǎng)IP的解決辦法

問題

最近在使用Spring Cloud Alibaba這一套微服務(wù)解決方案,但是在服務(wù)注冊的時候,網(wǎng)關(guān)死活找不到微服務(wù)地址,自己的微服務(wù)通過網(wǎng)關(guān)怎么也訪問不到。

查找原因

仔細(xì)一查才發(fā)現(xiàn),網(wǎng)關(guān)去訪問了一個莫名其妙的IP地址,
去Nacos服務(wù)詳情去看,果然,我的微服務(wù)注冊到Nacos的IP地址上也是這個地址,
然后我去我電腦查找這個IP地址,還真有這么一個地址,那么問題來了,Nacos為什么會隨意找個本機(jī)IP地址然后注冊上去?

Nacos服務(wù)注冊的IP

Nacos注冊中心是: https://github.com/alibaba/nacos
各個服務(wù)通過Nacos客戶端將服務(wù)信息注冊到Nacos上
當(dāng)Nacos服務(wù)注冊的IP默認(rèn)選擇出問題時,可以通過查閱對應(yīng)的客戶端文檔,來選擇配置不同的網(wǎng)卡或者IP
參考o(jì)rg.springframework.cloud.alibaba.nacos.NacosDiscoveryProperties的配置

解決辦法

例如,使用了Spring cloud alibaba(官方文檔)作為Nacos客戶端,
服務(wù)默認(rèn)獲取了內(nèi)網(wǎng)IP 192.168.1.21,
可以通過配置spring.cloud.inetutils.preferred-networks=10.34.12,使服務(wù)獲取內(nèi)網(wǎng)中前綴為10.34.12的IP

如何配置

# 如果選擇固定Ip注冊可以配置
spring.cloud.nacos.discovery.ip = 10.2.11.11
spring.cloud.nacos.discovery.port = 9090

# 如果選擇固定網(wǎng)卡配置項
spring.cloud.nacos.discovery.networkInterface = eth0

# 如果想更豐富的選擇,可以使用spring cloud 的工具 InetUtils進(jìn)行配置
# 具體說明可以自行檢索: https://github.com/spring-cloud/spring-cloud-commons/blob/master/docs/src/main/asciidoc/spring-cloud-commons.adoc
spring.cloud.inetutils.default-hostname
spring.cloud.inetutils.default-ip-address
spring.cloud.inetutils.ignored-interfaces[0]=eth0   # 忽略網(wǎng)卡,eth0
spring.cloud.inetutils.ignored-interfaces=eth.*     # 忽略網(wǎng)卡,eth.*,正則表達(dá)式
spring.cloud.inetutils.preferred-networks=10.34.12  # 選擇符合前綴的IP作為服務(wù)注冊IP
spring.cloud.inetutils.timeout-seconds
spring.cloud.inetutils.use-only-site-local-interfaces

更多配置

spring.cloud.nacos.discovery.server-addr  #Nacos Server 啟動監(jiān)聽的ip地址和端口
spring.cloud.nacos.discovery.service  #給當(dāng)前的服務(wù)命名
spring.cloud.nacos.discovery.weight  #取值范圍 1 到 100,數(shù)值越大,權(quán)重越大
spring.cloud.nacos.discovery.network-interface #當(dāng)IP未配置時,注冊的IP為此網(wǎng)卡所對應(yīng)的IP地址,如果此項也未配置,則默認(rèn)取第一塊網(wǎng)卡的地址
spring.cloud.nacos.discovery.ip  # 優(yōu)先級最高
spring.cloud.nacos.discovery.port  # 默認(rèn)情況下不用配置,會自動探測
spring.cloud.nacos.discovery.namespace # 常用場景之一是不同環(huán)境的注冊的區(qū)分隔離,例如開發(fā)測試環(huán)境和生產(chǎn)環(huán)境的資源(如配置、服務(wù))隔離等。

spring.cloud.nacos.discovery.access-key  # 當(dāng)要上阿里云時,阿里云上面的一個云賬號名
spring.cloud.nacos.discovery.secret-key # 當(dāng)要上阿里云時,阿里云上面的一個云賬號密碼
spring.cloud.nacos.discovery.metadata    #使用Map格式配置,用戶可以根據(jù)自己的需要自定義一些和服務(wù)相關(guān)的元數(shù)據(jù)信息
spring.cloud.nacos.discovery.log-name   # 日志文件名
spring.cloud.nacos.discovery.enpoint   # 地域的某個服務(wù)的入口域名,通過此域名可以動態(tài)地拿到服務(wù)端地址
ribbon.nacos.enabled  # 是否集成Ribbon 默認(rèn)為true

五、較合理的實現(xiàn)方式

  1. 使用docker進(jìn)行部署

    • 項目打包的時候指定映射后的注冊IP和端口或者ip前綴

    • 打包進(jìn)鏡像之后運(yùn)行容器,設(shè)置上方指定的端口映射

    • 這樣也能指定局域網(wǎng)的IP也可以通過docker將相關(guān)端口進(jìn)行映射出來

      • 問題,假如需要映射到公網(wǎng)IP?
  2. 也可以通過網(wǎng)關(guān)進(jìn)行整改,所有服務(wù)都走網(wǎng)關(guān),

    • 只需要將網(wǎng)關(guān)部署到連接內(nèi)網(wǎng)服務(wù)的網(wǎng)卡上面,將網(wǎng)關(guān)的端口進(jìn)行映射出去供外部調(diào)用
      • 問題,服務(wù)間的調(diào)用需要保證注冊網(wǎng)絡(luò)是統(tǒng)一網(wǎng)絡(luò)
  3. 通過自定義主機(jī)域名,或者本地dns服務(wù),文章來源地址http://www.zghlxwxcb.cn/news/detail-740975.html

    • 給每個服務(wù)指定域名
    • 服務(wù)注冊時候需要將域名進(jìn)行者注冊上去,
      • 問題:可能會更麻煩但是對于網(wǎng)絡(luò)較為復(fù)雜的情況會改善一點勞動量

到了這里,關(guān)于SpringCloud以及Nacos服務(wù)注冊IP選擇問題的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • springcloud/springboot集成NACOS 做注冊和配置中心以及nacos源碼分析

    springcloud/springboot集成NACOS 做注冊和配置中心以及nacos源碼分析

    Spring Cloud 是一系列框架的有序集合如服務(wù)發(fā)現(xiàn)注冊、配置中心、消息總線、負(fù)載均衡、熔斷器、數(shù)據(jù)監(jiān)控等。 SpringCloud 將多個服務(wù)框架組合起來,通過Spring Boot進(jìn)行再封裝,屏蔽掉了復(fù)雜的配置和實現(xiàn)原理,最終給開發(fā)者提供了一套簡單易懂、易部署和易維護(hù)的分布式系統(tǒng)開

    2024年02月08日
    瀏覽(97)
  • springcloud多網(wǎng)卡注冊nacos時IP控制方法

    本地研發(fā)團(tuán)隊沒有本地開發(fā)測試用服務(wù)器,使用了遠(yuǎn)端云服務(wù)搭建了nacos等中間件。 本地開發(fā)雖然在不同子網(wǎng),但是都能保證互通。 所以理論上雖然注冊的服務(wù)可能是192.168.1.222和192.168.4.111這樣,但是其實也是可以互相訪問,不影響研發(fā)的。 問題研發(fā)本地很多人安裝過vmwar

    2024年02月22日
    瀏覽(20)
  • 使用Nacos將單體服務(wù)注冊成微服務(wù)的步驟以及相關(guān)問題解決

    使用Nacos將單體服務(wù)注冊成微服務(wù)的步驟以及相關(guān)問題解決

    目錄 1.改造單體服務(wù)的配置文件。? 2.添加Nacosw相關(guān)的pom依賴 3.在nacos的配置列表中創(chuàng)建配置列表 4.相關(guān)問題的解決 1.改造單體服務(wù)的配置文件。? ?? 創(chuàng)建一個bootstrap.yml的配置文件 該文件通常放置在src/main/resources目錄中 ,并且優(yōu)先于application.yml或application.properties文件加載

    2024年02月16日
    瀏覽(15)
  • 【Java項目】SpringCloud項目注冊到Nacos中心時顯示的是內(nèi)網(wǎng)IP導(dǎo)致不同服務(wù)器之間無法互相調(diào)用接口的解決并發(fā)

    【Java項目】SpringCloud項目注冊到Nacos中心時顯示的是內(nèi)網(wǎng)IP導(dǎo)致不同服務(wù)器之間無法互相調(diào)用接口的解決并發(fā)

    微服務(wù)項目地址—動動你發(fā)財?shù)男∈贮c一個stars吧 出現(xiàn)這個問題是之前我也就遇到過的,這個問題的情況就是: 我們知道微服務(wù)項目是可以把不同的項目部署在不同的服務(wù)器上從而減少某一臺服務(wù)器的壓力,我們只需要為每一個服務(wù)配置一個注冊中心即可,然后一個服務(wù)需要

    2024年02月16日
    瀏覽(30)
  • 微服務(wù)學(xué)習(xí)-SpringCloud -Nacos (服務(wù)注冊源碼學(xué)習(xí))

    微服務(wù)學(xué)習(xí)-SpringCloud -Nacos (服務(wù)注冊源碼學(xué)習(xí))

    此次源碼版本為1.4.1,2.x版本在服務(wù)請求時使用了grpc的方式,所以先以1.4.1版本學(xué)習(xí),后續(xù)再看2.x版本。 源碼下載地址:: link 打開頁面后,下拉到最下面,下載nacos-1.4.1.zip,解壓導(dǎo)入idea即可。 此圖主要是對核心注冊流程進(jìn)行了大概梳理,可以在后續(xù)詳細(xì)看源碼時配合互補(bǔ)。

    2023年04月09日
    瀏覽(33)
  • SpringCloud微服務(wù)注冊中心:Nacos介紹,微服務(wù)注冊,Ribbon通信,Ribbon負(fù)載均衡,Nacos配置管理詳細(xì)介紹

    SpringCloud微服務(wù)注冊中心:Nacos介紹,微服務(wù)注冊,Ribbon通信,Ribbon負(fù)載均衡,Nacos配置管理詳細(xì)介紹

    注冊中心可以說是微服務(wù)架構(gòu)中的”通訊錄“,它記錄了服務(wù)和服務(wù)地址的映射關(guān)系。在分布式架構(gòu)中,服務(wù)會注冊到這里,當(dāng)服務(wù)需要調(diào)用其它服務(wù)時,就這里找到服務(wù)的地址,進(jìn)行調(diào)用。 服務(wù)注冊中心(簡稱注冊中心)是微服務(wù)框架的一個重要組件,在微服務(wù)架構(gòu)里主要

    2024年02月22日
    瀏覽(98)
  • 【微服務(wù)】SpringCloud-Nacos注冊中心

    【微服務(wù)】SpringCloud-Nacos注冊中心

    ?? 博客主頁: ??@不會壓彎的小飛俠 ? 歡迎關(guān)注: ?? 點贊 ?? 收藏 ? 留言 ? ? 系列專欄: ??SpringCloud專欄 ? 知足上進(jìn),不負(fù)野心。 ?? 歡迎大佬指正,一起學(xué)習(xí)!一起加油! Nacos是SpringCloudAlibaba的組件,而SpringCloudAlibaba也遵循SpringCloud中定義的服務(wù)注冊、服務(wù)發(fā)現(xiàn)

    2024年02月02日
    瀏覽(28)
  • 【SpringCloud】三、Nacos服務(wù)注冊+配置管理+集群搭建

    【SpringCloud】三、Nacos服務(wù)注冊+配置管理+集群搭建

    官網(wǎng):https://nacos.io/zh-cn/ 下載 解壓 啟動 啟動成功 登錄 在cloud-demo 父工程中添加 spring-cloud-alilbaba的管理依賴: 子模塊下添加nacos的客戶端依賴(此時user、order中的eureka可以注釋掉了) 在order和user模塊的application.yml文件中,注釋eureka地址,添加nacos的地址 重啟order服務(wù),查看

    2024年02月06日
    瀏覽(24)
  • SpringCloud源碼學(xué)習(xí)筆記3——Nacos服務(wù)注冊源碼分析

    SpringCloud源碼學(xué)習(xí)筆記3——Nacos服務(wù)注冊源碼分析

    系列文章目錄和關(guān)于我 實現(xiàn)服務(wù)治理、服務(wù)動態(tài)擴(kuò)容,以及調(diào)用時能有負(fù)載均衡的效果。 如果我們將服務(wù)提供方的ip地址配置在服務(wù)消費(fèi)方的配置文件中,當(dāng)服務(wù)提供方實例上線下線,消費(fèi)方都需要重啟服務(wù),導(dǎo)致二者耦合度過高。注冊中心就是在二者之間加一層,實現(xiàn)解耦

    2023年04月08日
    瀏覽(28)
  • 【SpringCloud入門】-- Nacos快速入門之搭建服務(wù)與注冊中心

    【SpringCloud入門】-- Nacos快速入門之搭建服務(wù)與注冊中心

    目錄 前言: ?1.Nacos的下載與安裝 2. 去MySQL建立一個名為nacos的數(shù)據(jù)庫 3.介紹配置文件,conf目錄下的 application.properties 4.nacos啟動 5. nacos作為注冊中心的作用 6.建立一個項目,實現(xiàn)向命名空間注冊 前言: 上文我們已經(jīng)簡單介紹了一下Nacos,現(xiàn)在我們一起來動手搭建一個Nacos的注

    2024年02月09日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包