Nacos-服務注冊地址為內網IP的解決辦法


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

查找原因

  仔細一查才發現,網關去訪問了一個莫名其妙的IP地址,
  去Nacos服務詳情去看,果然,我的微服務注冊到Nacos的IP地址上也是這個地址,
  然后我去我電腦查找這個IP地址,還真有這么一個地址,那么問題來了,Nacos為什么會隨意找個本機IP地址然后注冊上去?

Nacos服務注冊的IP

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

  各個服務通過Nacos客戶端將服務信息注冊到Nacos上
  當Nacos服務注冊的IP默認選擇出問題時,可以通過查閱對應的客戶端文檔,來選擇配置不同的網卡或者IP
參考org.springframework.cloud.alibaba.nacos.NacosDiscoveryProperties的配置

解決辦法

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

基本配置

# 如果選擇固定Ip注冊可以配置 spring.cloud.nacos.discovery.ip = 10.2.11.11 spring.cloud.nacos.discovery.port = 9090 # 如果選擇固定網卡配置項 spring.cloud.nacos.discovery.networkInterface = eth0 # 如果想更豐富的選擇,可以使用spring cloud 的工具 InetUtils進行配置 # 具體說明可以自行檢索: 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 # 忽略網卡,eth0 spring.cloud.inetutils.ignored-interfaces=eth.* # 忽略網卡,eth.*,正則表達式 spring.cloud.inetutils.preferred-networks=10.34.12 # 選擇符合前綴的IP作為服務注冊IP spring.cloud.inetutils.timeout-seconds spring.cloud.inetutils.use-only-site-local-interfaces 

更多配置

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM