關於Ocelot 網關結合Consul實現服務轉發的坑爹問題
阿新 • • 發佈:2018-07-13
但是 如果 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實現服務轉發的坑爹問題