首页 > 其他分享 >Consul+Ocelot配置微服务

Consul+Ocelot配置微服务

时间:2023-10-11 15:47:54浏览次数:40  
标签:服务 weight ip Consul 配置 port Ocelot consul

1、下载consul 地址 Install | Consul | HashiCorp Developer

解压之后

启动consul:终端运行  consul agent -dev -client 0.0.0.0 -ui

2、写一个扩展方法 

 1 public static void ConsulExtend(this IConfiguration configuration, string serviceName)
 2 {
 3     ConsulClient client = new(m =>
 4     {
 5         m.Address = new Uri("http://10.10.10.10:8500/");//对应服务器的地址:consul的端口
 6         m.Datacenter = "dc1";
 7     });
 8 
 9     //启动的时候在consul中注册实例服务
10     //在consul中注册的ip, port
11     string ip = configuration["ip"];
12     int port = int.Parse(configuration["port"]);
13     int weight = string.IsNullOrWhiteSpace(configuration["weight"]) ? 1 : int.Parse(configuration["weight"]);
14     client.Agent.ServiceRegister(new AgentServiceRegistration()
15     {
16         ID = "service" + Guid.NewGuid(),//唯一的
17         Name = serviceName,//组(服务)名称(动态)
18         Address = ip,
19         Port = port,//不同的端口=>不同的实例
20         Tags = new string[] { weight.ToString() },//标签
21         Check = new AgentServiceCheck()//服务健康检查
22         {
23             Interval = TimeSpan.FromSeconds(12),//间隔1s一次 检查
24             HTTP = $"http://{ip}:{port}/Api/Health/Check",
25             Timeout = TimeSpan.FromSeconds(5),//检测等待时间
26             DeregisterCriticalServiceAfter = TimeSpan.FromSeconds(20)//失败后多久移除
27         }
28     });
29     Console.WriteLine($"{ip}:{port}--weight:{weight}");
30 }

上面的方法带了一个参数,用来注册在consul中的服务

当服务启动的时候 把自身对应的服务名称传递过来

{ //*************************多实例负载均衡+Consul*****************************
  "Routes": [
    //OrderWrite
    {
      //GeteWay转发=>Downstream
      "DownstreamPathTemplate": "/api/{url}", //服务地址--url变量
      "DownstreamScheme": "http",
      //http://localhost:6299/T5/User/GetCustomerUser
      "UpstreamPathTemplate": "/OrderWrite/{url}", //网关地址--url变量 冲突的还可以加权重Priority
"UpstreamHttpMethod": [ "Get", "Post" ], "UseServiceDiscovery": true, //使用服务发现 "ServiceName": "OrderWrite", //Consul服务名称
"LoadBalancerOptions": { "Type": "RoundRobin" //轮询 //"LeastConnection":最少连接数服务器 "NoloadBalance":不负载均衡 "CookieStickySession":会话粘滞 } } ], "GlobalConfiguration": { //"BaseUrl": "http://127.0.0.1:6299", "ServiceDiscoveryProvider": { "Host": "10.10.10.10", //上文中consul的地址 "Port": 8500, "Type": "Consul" //由Consul提供服务发现,每次请求去Consul } //"ServiceDiscoveryProvider": { // "Host": "localhost", // "Port": 8500, // "Type": "PollConsul", //由Consul提供服务发现,每次请求去Consul // "PollingInterval": 1000//轮询Consul,评率毫秒--down是不知道的 //} } //*************************多实例负载均衡+Consul***************************** }

 

end...

标签:服务,weight,ip,Consul,配置,port,Ocelot,consul
From: https://www.cnblogs.com/ff2223/p/17757321.html

相关文章

  • Spring Cloud服务之Nacos作为注册中心与配置中心
    1、创建maven父工程管理jar包版本创建maven骨架,删除多余部分文件。只留pom文件,添加依赖<packaging>pom</packaging><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId>......
  • luffy前端配置,跨域问题,后端数据库迁移, 后台主页功能,后台管理
    1luffy前端配置......
  • 黑群晖配置缓存,为NAS加速
    不啰嗦直接上操作         ......
  • 安装windows11时卡在网络连接界面无法继续进行系统配置的处理方法
    1、问题描述:windows11安装后第一次开机,系统在联网界面出现如下图情况,无法继续下一步。 2.解决方法1、断电重启电脑2、按shift+F10弹出管理员命令行窗口3、输入oobe\bypassnro回车,电脑重启4、在到联网界面时,点击“我没有Internet连接选项”就可以继续进行系统设置5、进......
  • Docker 日志自动轮转和清理配置
    设置Docker日志大小和自动删除旧日志:通过配置Docker使用json-file日志驱动,同时使用logrotate工具,可以设置日志的最大大小(例如100MB),并在达到该大小时自动删除旧日志。这可帮助管理Docker日志文件大小和保持存储空间整洁。步骤1:配置Docker日志驱动在Docker的配置文......
  • scala配置log4j+slf4j
    scala配置log4j+slf4j环境信息jdk17scala2.11.0导入依赖<dependency><groupId>org.slf4j</groupId><artifactId>slf4j-reload4j</artifactId><version>2.0.9</version></dependency>添加配置文件resource目录下新建lo......
  • Bug实录——配置了Github SSHKey之后还需要输入密码
    问题:换了一台新机器,pull了源码进行了更新,然后配置了github的sshkey,但在push时还是提示要输入密码,但我已经在github上关闭了密码提交权限(出于安全和便捷考虑)。然后就提交失败了。分析:可能是我是先pull的代码,然后才去设置的sskkey,导致本地仓库并没有同步到这个sshKey配置信息解......
  • vue项目个人配置
    src/assets/base.css:root{--html-bg-color:#ffffff;}html.dark{--html-bg-color:#242424;}src/assets/reset.css/***EricMeyer'sResetCSSv2.0(http://meyerweb.com/eric/tools/css/reset/)*http://cssreset.com*/html,body,div,span,......
  • macOS Ventura配置ssh/key无效的问题记录
    内容转载自https://cloud.tencent.com/developer/article/2149714此处仅做个人记录问题描述工作电脑是macOSVentura,需要连接gitlab仓库,下载安装git并初始化配置后,按照操作生成SSHkey后,连接远程仓库仍然报错提示Permissiondenied(publickey)。定位问题经过查证,macOS......
  • Nginx配置文件中,如何配置启用SignalR
    以下内容包含为SignalR启用WebSocket、ServerSentEvents和LongPolling所需的最低设置:http{map$http_connection$connection_upgrade{"~*Upgrade"$http_connection;defaultkeep-alive;}server{listen80;server_nameexample.com*.......