用nacos做負載,nacos部署在服務器A,應用程序部署在服務器B,gateway調(diào)用服務器B中的微服務應用是報timeout錯誤,多半是由于你配置的nacos地址的問題,踩坑后解決方案為以下:
1、配置
# 如果選擇固定Ip注冊可以配置 (我主要是用這種配置解決的)
spring.cloud.nacos.discovery.ip = 39.60.xx.xx #外網(wǎng)地址
spring.cloud.nacos.discovery.port = 9090 #端口號
# 如果選擇固定網(wǎng)卡配置項
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 # 忽略網(wǎng)卡,eth0
spring.cloud.inetutils.ignored-interfaces=eth.* # 忽略網(wǎng)卡,eth.*,正則表達式
spring.cloud.inetutils.preferred-networks=10.34.12 # 選擇符合前綴的IP作為服務注冊IP
spring.cloud.inetutils.timeout-seconds
spring.cloud.inetutils.use-only-site-local-interfaces
2、更多配置
pring.cloud.nacos.discovery.server-addr #Nacos Server 啟動監(jiān)聽的ip地址和端口
spring.cloud.nacos.discovery.service #給當前的服務命名
spring.cloud.nacos.discovery.weight #取值范圍 1 到 100,數(shù)值越大,權重越大
spring.cloud.nacos.discovery.network-interface #當IP未配置時,注冊的IP為此網(wǎng)卡所對應的IP地址,如果此項也未配置,則默認取第一塊網(wǎng)卡的地址
spring.cloud.nacos.discovery.ip # 優(yōu)先級最高
spring.cloud.nacos.discovery.port # 默認情況下不用配置,會自動探測
spring.cloud.nacos.discovery.namespace # 常用場景之一是不同環(huán)境的注冊的區(qū)分隔離,例如開發(fā)測試環(huán)境和生產(chǎn)環(huán)境的資源(如配置、服務)隔離等。
spring.cloud.nacos.discovery.access-key # 當要上阿里云時,阿里云上面的一個云賬號名
spring.cloud.nacos.discovery.secret-key # 當要上阿里云時,阿里云上面的一個云賬號密碼
spring.cloud.nacos.discovery.metadata #使用Map格式配置,用戶可以根據(jù)自己的需要自定義一些和服務相關的元數(shù)據(jù)信息
spring.cloud.nacos.discovery.log-name # 日志文件名
spring.cloud.nacos.discovery.enpoint # 地域的某個服務的入口域名,通過此域名可以動態(tài)地拿到服務端地址
ribbon.nacos.enabled # 是否集成Ribbon 默認為true