如圖所示,運營人員反饋線上偶發性出現異常,然後我們獲取一筆單來看,發現閘道器超時。
系統用的是springcloud閘道器gateway作為服務**。出現超時的ip和專案部署伺服器的ip並不是同乙個ip,假設上面異常 10.10.10.11,而專案部署伺服器的ip 10.20.10.11,明顯不一致導致,和預想的部署方案不一樣。同時還是偶發性的報錯。然後我登入到zookeeper檢視,具體操作:
①登入zookeeper
②執行get命令檢視服務註冊的情況
get /services/****/e1b6b0b7-d724-4418-8aea-3d85ea01ee50
如圖,看到address,其實就上述超時時異常的ip的字段,對於系統而言,預設是主機名。
知道原因後,這邊馬上去修改服務的配置,新增以下配置,問題就解決了。新增配置後,可以執行2的操作,就可以看到註冊的address是大家想要的了。
spring.cloud.inetutils.preferrednetworks[0]=10.10.30.* //springcloud注入註冊中心選擇的網絡卡
spring.cloud.zookeeper.discovery.prefer-ip-address=true //使用ip作為註冊中心address而不是主機名(預設是主機名稱);
最後關於上述問題,是因為springcloud閘道器gateway選擇網絡卡的時候,如果配置沒有指定ip,是會在選出來眾多的網絡卡中選擇第乙個網絡卡作為zookeeper的address註冊網絡卡,然後可以結合上面兩配置涉及的springcloud閘道器gateway原始碼分析進行思考,可以看下這篇文章: SpringCloud閘道器配置
用了springcloud一段時間了 今天想動手搭建,結果忘了 註冊中心和服務都建好了 天真的以為可以通過註冊中心的位址加上服務名就可以訪問服務了 結果忘了閘道器這一茬 看來還是對springcloud元件的功能了解非常不足 先貼這塊了 package com import org.springfr...
SpringCloud 服務閘道器
上篇部落格 springcloud eureka服務註冊和發現 中介紹了註冊中心eureka 服務提供者和服務消費者。這篇部落格我們將介紹服務閘道器。圖 1 未使用服務閘道器的做法 圖 2 服務閘道器的做法 服務閘道器,英文service gateway,他是微服務框架中唯一的入口。有些類似外觀模式...
SpringCloud 服務閘道器
上篇部落格 springcloud eureka服務註冊和發現 中介紹了註冊中心eureka 服務提供者和服務消費者。這篇部落格我們將介紹服務閘道器。圖 1 未使用服務閘道器的做法 圖 2 服務閘道器的做法 服務閘道器,英文service gateway,他是微服務框架中唯一的入口。有些類似外觀模式...