zoukankan      html  css  js  c++  java
  • 关于Ocelot 网关结合Consul实现服务转发的坑爹问题

    下面是我的网关配置来验证下Ocelot的问题,如果只是做网关转发应该还ok,但是要是结合Consul来检查并健康的转发有效服务器还是有很多弊端

    关键在于通过设置 DeregisterCriticalServiceAfter来处理,那么这个值要够大,如果在这个值内服务器web站点更新正常了就没有问题,如果一直失败就会注销的掉这个服务不回去健康检查了

    下面用代码来说明下:

    {
      "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站点

     所以 Consul 拿来做服务器健康检查就行了 结合Ocelot实现LB还是有些牵强(至少第一次注册服务需要访问站点),如果能把注册服务单独出来不需要放在web站点中就行了

    当然访问之后就可以了

    这里三个服务都在了不同的地址

  • 相关阅读:
    Entity Framework 简介
    MongoDB 简述及安装
    js、sql和python版本的乘法口诀对比
    sql 判断输入的日期是否有重叠
    win10 不能调节屏幕亮度 win10 屏幕亮度调节快捷键不能用
    mysql主从配置常见错误处理
    Linux安装mysql总结
    linux安装mongodb总结
    centos安装redis总结
    ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
  • 原文地址:https://www.cnblogs.com/liyouming/p/9306774.html
Copyright © 2011-2022 走看看