下面是我的网关配置来验证下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实现服务转发的坑爹问题
原文:https://www.cnblogs.com/liyouming/p/9306774.html