首页 > 其他分享 >Ocelot 结成 Consul 做配置以及服务发现出现的一些小问题

Ocelot 结成 Consul 做配置以及服务发现出现的一些小问题

时间:2023-04-09 23:44:56浏览次数:35  
标签:service url Consul 结成 ServiceName Ocelot Type

首先创建 web 项目

dotnet new web -n ApiGateway

然后安装对应的 nuget 包

dotnet add package Ocelot
dotnet add package Ocelot.Provider.Consul

Program 配置

using Ocelot.Middleware;
using Ocelot.DependencyInjection;
using Ocelot.Provider.Consul;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddOcelot().AddConsul().AddConfigStoredInConsul();

builder.Configuration.AddJsonFile("ocelot.json");

var app = builder.Build();

app.UseOcelot().Wait();

app.Run();

然后配置 ocelot.json

{
  "Routes": [
    {
      "DownstreamPathTemplate": "/api/{url}",
      "DownstreamScheme": "http",
      "UseServiceDiscovery": true,
      "UpstreamPathTemplate": "/media-service/{url}",
      "ServiceName": "MediaService",
      "LoadBalancerOptions": {
        "Type": "RoundRobin"
      }
    },
    {
      "DownstreamPathTemplate": "/api/{url}",
      "DownstreamScheme": "http",
      "UseServiceDiscovery": true,
      "UpstreamPathTemplate": "/dictionary-service/{url}",
      "ServiceName": "DictionaryService",
      "LoadBalancerOptions": {
        "Type": "RoundRobin"
      }
    },
    {
      "DownstreamPathTemplate": "/api/{url}",
      "DownstreamScheme": "http",
      "UseServiceDiscovery": true,
      "UpstreamPathTemplate": "/search-service/{url}",
      "ServiceName": "SearchService",
      "LoadBalancerOptions": {
        "Type": "RoundRobin"
      }
    },
    {
      "DownstreamPathTemplate": "/api/{url}",
      "DownstreamScheme": "http",
      "UseServiceDiscovery": true,
      "UpstreamPathTemplate": "/user-service/{url}",
      "ServiceName": "UserService",
      "LoadBalancerOptions": {
        "Type": "RoundRobin"
      }
    },
    {
      "DownstreamPathTemplate": "/{url}",
      "DownstreamScheme": "http",
      "UseServiceDiscovery": true,
      "UpstreamPathTemplate": "/content-service/{url}",
      "ServiceName": "ContentService",
      "LoadBalancerOptions": {
        "Type": "RoundRobin"
      },
      "RouteIsCaseSensitive": false
    }
  ],
  "GlobalConfiguration": {
    "ServiceDiscoveryProvider": {
      "Host": "localhost",
      "Port": 8500,
      "PollingInterval": 5000,
      "Type": "Consul",
      "ConfigurationKey": "API_Gateway"
    }
  }
}

没有找到注册的服务

因为是获取对应的服务实例时,请求的路径不对,例如我在 consul 中注册了 ContentService,在 ocelot.json 中也配置了 ServiceName 为 ContentService,LoadBalancer 会尝试获取所有可用的实例,
通过向 consul 的 /v1/health/service/content-service 路径,然而这个路径时错误的,所以并不能收到相关的信息

解决方法(Ocelot.Provider.Consul 已经是 归档状态了):服务名不要使用 PascalCase,使用中划线分割单词

服务地址无效

consul 注册的使用服务 Address 应该时 Host 名称,不能是 localhost,也不能带有协议名称 https:// 或者 https:// 等

标签:service,url,Consul,结成,ServiceName,Ocelot,Type
From: https://www.cnblogs.com/freesfu/p/17301474.html

相关文章

  • SpringCloud使用Consul作为配置中心
    Consul提供了一个key/value存储,用于存储配置和其他元数据。SpringCloudConsulConfig是ConfigServer和Client的替代方案。在特殊的“bootstrap”阶段,配置被加载到Spring环境中。默认情况下,配置存储在/config文件夹中。根据应用程序的名称和模拟SpringCloud配置顺序解析财产的......
  • Spring Cloud Consul简介
    SpringCloudConsul通过自动配置和绑定到SpringEnvironment和其他Spring编程模型习惯用法,为SpringBoot应用程序提供Consul集成。通过一些简单的注释,您可以快速启用和配置应用程序中的常见模式,并使用Hashicorp的Consul构建大型分布式系统。提供的模式包括服务发现、分布式配置和......
  • springCloud之Consul简介
    Consul是什么Consul是HashiCorp公司推出的开源工具。HashiCorpConsul是一种服务网络解决方案,使团队能够管理服务之间以及跨预处理和多云环境和运行时的安全网络连接。Consul为网络基础设施设备提供服务发现、服务网格、流量管理和自动更新。您可以单独使用这些功能,也可以在单个C......
  • .Net6注入Consul服务
    .Net6注入Consul服务直接上代码了(参考了一下其他博客进行总结一下),我这边项目工程是模拟微服务模式,新建类库把服务打包成了nuget方便调用现在先大致介绍一下,结尾放demo案例代码consul心跳心跳的地址要于下面配置文件的地址一样这里先定义一会配置文件也要相同///<summary>......
  • docker-compose 部署 consul v1.15.2
    server1配置文件{"node_name":"consul-server1","datacenter":"zhongtai","domain":"consul","server":true,"log_level":"INFO","ui_conf......
  • Linux 安装consul
    简介:Consul是HashiCorp公司推出的开源工具,Consul由Go语言开发,部署起来非常容易,只需要极少的可执行程序和配置文件,具有绿色、轻量级的特点。Consul是分布式的、高可用的、 ......
  • ocelot 配置swagger
    项目结构如下图所示:  admin和demo是两个api服务。gateway是一个ocelot网关服务。第一步在ocelot.json添加如下配置:  第二步:在ocelot项目修改以下几处: demo......
  • .NET+Consul+Ocelot实现微服务分布式部署
    一、ConSul和OcelotConsul:是一个服务网格解决方案,提供了一个功能齐全的控制平面,具有服务发现、配置和分段功能。这些功能中的每一项都可以根据需要单独使用,也可以一起使......
  • 使用Docker部署Consul集群并由Ocelot调用
    关于consul的介绍就不写了百度就行,我们直接开干。一、部署consul集群拉取consul的镜像dockerpullconsul然后部署consul容器dockerrun--nameconsul1-d-p85......
  • Ocelot的限流、熔断和负载均衡
     一、限流 想要在Ocelot中设置限流,需要在设置如下绿色所示:{"GlobalConfiguration":{"RateLimitOptions":{"DisableRateLimitHeaders":false,......