1. 程式人生 > >關於Ocelot 網關結合Consul實現服務轉發的坑爹問題

關於Ocelot 網關結合Consul實現服務轉發的坑爹問題

但是 如果 template streams 驗證 ports style conf 結合

下面是我的網關配置來驗證下Ocelot的問題,如果只是做網關轉發應該還ok,但是要是結合Consul來檢查並健康的轉發有效服務器還是有很多弊端

下面用代碼來說明下:

{
  "ReRoutes": [
    {
      "DownstreamPathTemplate": "/api/Check/ocelot",
      "DownstreamScheme": "http",
      "DownstreamHostAndPorts": [
        {
          "Host": "192.168.0.233",
          "Port"
: 20011 }, { "Host": "192.168.0.233", "Port": 20012 }, { "Host": "192.168.0.233", "Port": 30011 } ], "UpstreamPathTemplate": "/testocelot", "UpstreamHttpMethod": [ "Get" ], "LoadBalancer": "LeastConnection
", "ServiceName": "userservices", "UseServiceDiscovery": true } ], "GlobalConfiguration": { "BaseUrl": "http://192.168.0.233:20010", "ServiceDiscoveryProvider": { "Host": "192.168.0.233", "Port": 8500 } } }

網關都是結合consul服務的狀態,那麽服務器web網站的consul服務沒有註冊,何來的健康轉發呢?

.NetCore 在 Configure中配置了 consul 服務註冊,但是 web網站都沒有運行起來 consul 服務就不存在 更不存在健康證狀態

那麽 利用 ServiceDiscoveryProvider 服務發現的方式來轉發 根本就會失敗

所以感覺還是坑~~~~

當web站點沒有訪問過的時候 Consul服務

技術分享圖片

訪問web站點

技術分享圖片

關於Ocelot 網關結合Consul實現服務轉發的坑爹問題