环境:
- window10 x64
- vs2022 企业版 17.0.0
- .NET 6.0
- Ocelot 17.0.0
- Ocelot.Provider.Consul 17.0.0
第一步:引入Ocelot.Provider.Consul
第二步:添加Ocelot.json的Consul配置
{
"Routes": [
{
//GeteWay转发=>Downstream
"DownstreamPathTemplate": "/{url}", //服务地址--url变量
"DownstreamScheme": "http",
"UpstreamPathTemplate": "/test/{url}", //网关地址--url变量 冲突的还可以加权重Priority
"UpstreamHttpMethod": [ "Get", "Post" ],
"UseServiceDiscovery": true, //使用服务发现
"ServiceName": "test01", //Consul服务名称
"LoadBalancerOptions": {
"Type": "RoundRobin" //轮询 //"LeastConnection":最少连接数服务器 "NoloadBalance":不负载均衡 "CookieStickySession":会话粘滞
},
"AuthenticationOptions": { //ids4鉴权
"AuthenticationProviderKey": "TestKey",
"AllowScopes": []
}
}
],
"GlobalConfiguration": {
"ServiceDiscoveryProvider": {
"Host": "192.168.200.105",
"Port": 8500,
"Type": "Consul" //由Consul提供服务发现,每次请求去Consul
}
}
}
由Consul提供服务发现,每次请求去Consul
第三部:在ConfigureServices里添加Consul
builder.Services.AddOcelot(new ConfigurationBuilder()
.AddJsonFile("ocelot.json",true,true)
.Build()).AddConsul();
第四部:访问Api
请求成功!
如果返回结果是502,则将Consul启动参数node设置成能访问到的ip地址