Ocelot+Consul配置(.net6,win10系统)

​参考
https://blog.51cto.com/u_10006690/2728170
https://www.consul.io/docs
https://ocelot.readthedocs.io/en/latest/introduction/bigpicture.html

步骤
1 创建一个web服务sys1
2 安装配置Consul(服务发现)
3 创建ocelot项目(网关)

1 创建一个web服务sys1

1.1 为了简单,直接用iis创建一个站点sys1,端口10041,根目录建文件夹,放个json文件,用于模拟接口,如下

Ocelot+Consul配置(.net6,win10系统)_第1张图片Ocelot+Consul配置(.net6,win10系统)_第2张图片

1.2 用浏览器打开http://localhost:10040/api/test/do.json,测试一下是否配置成功

Ocelot+Consul配置(.net6,win10系统)_第3张图片

2 安装配置Consul(服务发现)

2.1 在Consul官网(https://www.consul.io/docs)下载window,64位的,把里边的consul.exe解压到文件夹D:\Server\consul

Ocelot+Consul配置(.net6,win10系统)_第4张图片

2.2 在consul建文件夹sys,即D:\Server\consul\sys,在sys下建web.json文件,配置如下

Ocelot+Consul配置(.net6,win10系统)_第5张图片

{
    "services": [
    {
        "id": "sys",
        "name": "sys",
        "address": "localhost",
        "port": 10040
    }]
}
2.3 执行命令(注意这个会占用8500等好几个端口,如果端口被其他占用了,会失败)
.\consul.exe agent -dev -config-dir=D:\Server\consul\sys -enable-script-checks
2.4 成功后,在浏览器打开http://localhost:8500,即consul ui界面,可以看到web.json配置

Ocelot+Consul配置(.net6,win10系统)_第6张图片Ocelot+Consul配置(.net6,win10系统)_第7张图片

3 创建ocelot项目(网关)

3.1 创建.net6.0控制台应用程序
3.2 使用nuget包管理安装Ocelot,Ocelot.Provider.Consul,

Ocelot+Consul配置(.net6,win10系统)_第8张图片

3.3 改Program.cs代码如下
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Ocelot.DependencyInjection;
using Ocelot.Middleware;
using Ocelot.Provider.Consul;

new WebHostBuilder()
    .UseKestrel()
    .UseContentRoot(Directory.GetCurrentDirectory())
    .ConfigureAppConfiguration((hostingContext, config) =>
    {
        config
            .SetBasePath(hostingContext.HostingEnvironment.ContentRootPath)
            .AddJsonFile("ocelot.json")
            .AddEnvironmentVariables();
    })
    .ConfigureServices(s => {
        s.AddOcelot()
         .AddConsul()
         .AddConfigStoredInConsul()
        ;
    })
    .ConfigureLogging((hostingContext, logging) =>
    {
        //add your logging
    })
    .UseIISIntegration()
    .Configure(app =>
    {
        app.UseOcelot().Wait();
    })
    .Build()
    .Run();
3.4 在项目下,新增加配置文件ocelot.json,内容如下(文件在vs的属性记得改为始终复制,生成操作改内容)
{
  "Routes": [
    {
      "UpstreamPathTemplate": "/sys/{everything}",
      "UpstreamHttpMethod": [ "Get", "Post" ],
      "DownstreamPathTemplate": "/{everything}",
      "DownstreamScheme": "http",
      "ServiceName": "sys"
    }
  ],
  "GlobalConfiguration": {
    "BaseUrl": "http://localhost:5000",
    "ServiceDiscoveryProvider": {
      "Scheme": "http",
      "Host": "localhost",
      "Port": 8500,
      "Type": "Consul"
    }
  }
}
3.5 配置文件简单说明Ocelot+Consul配置(.net6,win10系统)_第9张图片
3.6 运行项目

4 测试验证

4.1 在浏览器,输入地址http://localhost:5000/sys/api/test/do.json,看到iis sys1站点do.json的内容,表示成功

Ocelot+Consul配置(.net6,win10系统)_第10张图片

你可能感兴趣的:(consul,服务发现,微服务)