Rainbond网络治理插件ServiceMesh官方文档说明

 更新时间:2022年04月20日 16:39:05   作者:官方文档  
这篇文章主要为大家介绍了Rainbond网络治理插件ServiceMesh官方文档说明,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

ServiceMesh网络治理插件

5.1.5版本后,Rainbond默认提供了综合网络治理插件(同时处理入站和出站网络)和出站网络治理插件两个插件可用。 网络治理插件工作在与业务容器同一个网络空间之中,可以监听一个分配端口,拦截入站的业务流量进行限流、断路等处理再将流量负载到业务服务的实际监听端口之上。

同时也可以工作在出站方向,业务服务需要访问上游服务时,通过访问本地出站治理插件监听的端口,进行流量路由、断路、安全验证等处理,再将流量负载到尚有服务的主机之上。 

对于插件的开发者来说需要关注如下两点:

  • 入站治理插件需要根据系统分配的端口转发规则进行流量转发,比如UI服务本身是监听的8080端口,这是不能改变的,但是我们可以改变从边缘网关访问UI服务时的访问端口,因此Rainbond应用运行时为动态为入站网络治理插件生成监听端口对,比如下述配置:
"base_ports":[
      {
          "service_alias":"gre484d9",
          "service_id":"9703228e9b42cde3e3a72f4826e484d9",
          "port":8080,
          "listen_port":65301,
          "protocol":"http",
          "options":{
              "LIMIT_DOMAIN":"limit.common",
              "OPEN_LIMIT":"NO"
          }
      }
  ]

插件运行时会自动注入DISCOVER_URL变量,通过此变量值的地址可以动态获取到如上的配置信息,入站网络治理插件必须通过以上配置来监听65301端口,将流量负载到127.0.0.1:8080端口。

  • 出站治理插件不存在端口映射的问题,出站治理插件根据下属的动态配置信息生成本地监听负载到远程地址。
"base_services":[
        {
            "service_alias":"gre484d9",
            "service_id":"9703228e9b42cde3e3a72f4826e484d9",
            "depend_service_alias":"grcff92d",
            "depend_service_id":"c81923991ff2428082a5d9d478cff92d",
            "port":5000,
            "protocol":"http",
            "options":{
                "BaseEjectionTimeMS":"30000",
                "ConsecutiveErrors":"5",
                "Domains":"todos",
                "Headers":"",
                "IntervalMS":"10",
                "MaxActiveRetries":"5",
                "MaxConnections":"10",
                "MaxEjectionPercent":"20",
                "MaxPendingRequests":"1024",
                "MaxRequests":"1024",
                "MaxRequestsPerConnection":"",
                "PROXY":"YES",
                "Prefix":"/",
                "Weight":"80"
            }
        }
]        

使用上述原生配置发现和服务发现来让自定义插件工作,插件层面需要做较多的数据适配工作。Rainbond同时提供了基于envoy XDS(grpc)规范的动态配置发现服务,在插件中通过XDS_HOST_IP XDS_HOST_PORT两个变量来获取XDS服务的地址。

对用用户来说插件层的网络治理对于业务层是完全透明的,所有有依赖关系的分布式服务类似于运行同一台主机一样。

插件实践

综合网络治理插件

默认提供的综合网络治理插件基于envoy 1.9.0实现,综合网络插件同时实现了入站方向的治理和出站方向的治理,提供以下配置参数:

入站方向

全局限流:

  • OPEN_LIMIT 开启全局限流功能,全局限流功能依赖于第三方的限流服务,比如 ratelimit , 当前服务需要依赖ratelimit服务,并设置RATE_LIMIT_SERVER_HOST和RATE_LIMIT_SERVER_PORT环境变量。
  • LIMIT_DOMAIN 限流链路的domain key,与全局限流服务的配置对应

断路:

  • MaxConnections 最大连接数,Http协议时仅适用于http1.1,TCP协议时设置最大TCP连接数。
  • MaxRequests 并发请求数,适用于HTTP协议
  • MaxPendingRequests 最大等待请求数,适用于HTTP协议
  • MaxActiveRetries 最大重试次数,适用于HTTP协议
  • MaxRequestsPerConnection 单连接最大请求数,适用于HTTP协议,支持http1.1 和http2

出站方向

动态路由(HTTP协议):

Domains

请求域名,对于http协议的上游服务,支持基于域名路由并复用80端口。

Prefix

请求Path路径的前缀,基于前缀来路由不同的上游服务。

Headers

请求头,基于请求头的路由不同的上游服务。

Weight

权重,基于不同的权重来将流量分发到不同的上游服务。

断路(面向连接):

  • MaxConnections 最大连接数,Http协议时仅适用于http1.1,TCP协议时设置最大TCP连接数。
  • MaxRequests 并发请求数,适用于HTTP协议
  • MaxPendingRequests 最大等待请求数,适用于HTTP协议
  • MaxActiveRetries 最大重试次数,适用于HTTP协议
  • MaxRequestsPerConnection 单连接最大请求数,适用于HTTP协议,支持http1.1 和http2

断路(面向上游主机):

  • ConsecutiveErrors 上游服务主机发生500错误的被逐出的次数。
  • BaseEjectionTimeMS 主机被逐出的基础时间,及第一次被逐出的时间,如果被逐出n次,时间则为n*BaseEjectionTimeMS
  • MaxEjectionPercent 被逐出主机的最大比例,如果设置为100则允许全量逐出。
  • IntervalMS 分析主机是否应该被逐出的时间间隔
  • HealthyPanicThreshold 进入恐慌模式的比例,默认是50

出站网络治理插件

当服务无需使用入站方向的治理功能时,可只使用出站治理插件,配置参数与综合治理插件的出站方向一致。

以上就是Rainbond网络治理插件ServiceMesh官方文档说明的详细内容,更多关于Rainbond网络治理插件ServiceMesh官方文档的资料请关注脚本之家其它相关文章!

相关文章

  • kubernetes(k8s)安装metrics-server实现资源使用情况监控方式详解

    kubernetes(k8s)安装metrics-server实现资源使用情况监控方式详解

    这篇文章主要介绍了kubernetes(k8s)安装metrics-server实现资源使用情况监控,包括Metrics Server下载方式, k8s集群安装部署metrics的问题,本文给大家介绍的非常详细,需要的朋友可以参考下
    2022-04-04
  • CentOS 8.2 k8s 基础环境配置

    CentOS 8.2 k8s 基础环境配置

    这篇文章主要介绍了CentOS 8.2 k8s 基础环境配置,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-10-10
  • Rainbond云原生快捷部署生产可用的Gitlab步骤详解

    Rainbond云原生快捷部署生产可用的Gitlab步骤详解

    这篇文章主要为大家介绍了Rainbond云原生快捷部署生产可用的Gitlab步骤详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-04-04
  • 关于CentOS7日志文件及journalctl日志查看方法

    关于CentOS7日志文件及journalctl日志查看方法

    这篇文章主要介绍了关于CentOS7日志文件及journalctl日志查看方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • k8s控制deamonset中pod数量的方法

    k8s控制deamonset中pod数量的方法

    DaemonSet是Kubernetes中用于确保每个节点运行一个Pod副本的控制器,常用于运行集群守护进程,通过节点选择器、节点亲和性、容忍度和更新策略,可以精确控制Pod的数量和调度,本文介绍k8s控制deamonset中pod数量的方法,感兴趣的朋友一起看看吧
    2025-01-01
  • K8s实战教程之容器和 Pods资源分配问题

    K8s实战教程之容器和 Pods资源分配问题

    这篇文章主要介绍了K8s实战教程之容器和 Pods资源分配,本篇文章通过配置集群中运行的容器的 CPU 请求和限制,你可以有效利用集群上可用的 CPU 资源,通过将 Pod CPU 请求保持在较低水平,可以使 Pod 更有机会被调度,需要的朋友可以参考下
    2022-07-07
  • k8s中pod不停重启问题定位原因与解决方法

    k8s中pod不停重启问题定位原因与解决方法

    这篇文章主要给大家介绍了关于k8s中pod不停重启问题定位原因与解决方法的相关资料,Kubernetes是一款高度可扩展、可靠的容器编排和管理系统,它简化了容器的部署、管理和自动化操作,需要的朋友可以参考下
    2023-08-08
  • kubectl 命令详解

    kubectl 命令详解

    这篇文章主要介绍了kubectl 命令的相关资料,包括常用命令,基本命令和使用说明,本文给大家介绍的非常详细,感兴趣的朋友一起看看吧
    2025-04-04
  • Kubernetes 安装flannel组件的过程(本地 kube-flannel.yml 文件)

    Kubernetes 安装flannel组件的过程(本地 kube-flannel.yml 文件)

    文章介绍了如何在无法直接访问raw.githubusercontent.com的情况下,通过科学上网或下载kube-flannel.yml文件源码来部署Flannel网络插件的方法,感兴趣的朋友一起看看吧
    2025-03-03
  • k8s实现身份认证策略及过程解析

    k8s实现身份认证策略及过程解析

    这篇文章主要为大家介绍了k8s实现身份认证策略及过程解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02

最新评论