Flomesh 软负载 FLB GA 版本发布
Flomesh 软负载 (FLB) 是一款高效、稳定、易扩展的纯软件平台级应用负载均衡软件。它采用了“BGP+ECMP+eBPF+Pipy”的方案,提供了平台级的四层和七层负载均衡解决方案。可部署于物理机、虚拟机、云主机和容器平台等环境,提供弹性扩容和缩容,具备低延迟和高吞吐性能。通过定制化管理接口和基于 PipyJS 的二次开发能力,实现与 DevOps、云管平台的快速对接,支持多租户和自动化服务。
访问微信视频号 Flomesh,通过 Docker Desktop 一键安装 FLB 软负载快速体验。
产品架构概述
控制台
Flomesh 软负载的控制台基于 Strapi 开发,使用关系型数据库存储租户、配置和权限等信息。默认使用 PostgreSQL 或 MySQL 作为存储方式。
Pipy Repo
Flomesh 软负载使用 Pipy Proxy 作为七层代理,并使用多个分布式 Pipy 实例。Pipy Repo 作为注册中心和配置中心,当新的 Pipy 实例启动时,它会注册到 Pipy Repo 并获取相应的配置信息。因此,Pipy Repo 在 Flomesh 软负载中担任了注册中心和配置中心的角色。
4LB
当 Pipy 4LB 采用集中部署模式时,一个 Pipy 4LB 集群会通过 BGP 协议向外宣告相同的 IP,路由器根据宣告信息使用 ECMP 策略将路由包转发到 Pipy 4LB 集群的不同节点,Pipy 会将请求转发到上游服务器。
当 Pipy 4LB 采用边车模式部署时,Pipy 和业务进程会一同部署,Pipy 负责向上级路由器宣告 IP,业务进程监听指定 IP 的端口,流量直接到达业务进程,不会经过 Pipy。
DNS 负载均衡
Pipy 可以作为 DNS 服务器或代理,同时在客户端和服务端工作。它可以响应客户端的 DNS 请求,并从控制器组件获取和维护应用的 IP 地址。Pipy 支持不同的负载均衡策略,例如基于地理位置或健康状态,可以为不同的客户端返回不同的解析记录。
Ingress Egress
当 Flomesh 软负载在 Kubernetes 容器平台上部署提供 Ingress 和 Egress 功能时,可以选择部署 Ingress/Egress 控制器到 Kubernetes 指定命名空间。该控制器负责监听 Kubernetes 集群中的资源变化,生成 Pipy 配置和动态脚本,并将其推送到 Pipy Repo。Pipy Ingress 实例会获取这些配置和脚本,并进行动态加载和自动执行。此外,该控制器还支持 Gateway API。
边车控制器
边车控制器是 Flomesh 软负载的一个可选组件,用于提供客户端负载均衡功能。Pipy 进程和业务进程采用边车方式部署,Pipy 边车在应用程序启动时完成服务注册,当应用程序访问外部服务时,Flomesh 软负载会通过 iptables 或 eBPF 拦截请求并将其重定向到 Pipy 边车,Pipy 边车会完成服务发现并实现负载均衡,边车控制器还提供边车注入、边车启停、边车配置热加载等功能。
ELB 控制器
ELB 控制器是 Flomesh 软负载的一个可选组件,用于在容器平台上提供 ELB 服务。当部署在 Kubernetes 中时,ELB 控制器会监听类型为 LoadBalancer 的服务,并向 Kubernetes 集群外的 BGP 路由器注册 ExternalIP。
产品功能清单
多租户管理
Flomesh 软负载平台采用多租户管理,以组织为单位进行分组管理,支持树形隶属关系。在平台上,所有的资源都按照项目进行分组,资源之间的访问可以采用“宽松”或“严格”模式。平台提供用户、角色、日志和事件管理等功能,管理员可以对用户进行授权,并将“角色”和用户绑定,使用户可以访问资源。同时,平台也可以对接被管理的技术组件,接收事件,并在控制台进行集中展示和管理。
技术组件管理
Flomesh 软负载平台由多个组件组成,其中一些是由 Flomesh 团队自研的开源组件,有些是第三方组件用于满足特定的功能和管理需求。组件包括 4LB 集群、Tracing 类组件、指标类组件、数据库组件和 NoSQL 组件等,提供代理、路由、负载转发、BGP 宣告、指标监控等核心功能。这些组件可以通过 Flomesh 软负载平台安装部署或通过配置参数集成使用。
四层负载均衡
Flomesh 软负载平台提供多租户的四层负载均衡功能,包括 IP 高可用、TCP/UDP 包转发、负载均衡、代理、隧道等核心功能。在不同子网间的流量,采用 BGP+ECMP 的 IP 高可用和负载均衡方案;相同子网内的流量采用 eBFP 的 IP 高可用和负载均衡方案。Flomesh 软负载还提供四层代理和四层隧道技术,用于策略管理和穿透防火墙。在负载均衡的过程中,Flomesh 软负载还采用基于流量拦截技术进行策略管理,支持全局策略和链式策略,使流量经过 Pipy Proxy,在 Pipy Proxy 中执行具体的策略。
七层负载均衡
Flomesh 软负载七层负载均衡支持多协议,包括 HTTP/1.x、HTTP/2、DNS、Redis、MQTT、Dubbo、gRPC、Thrift、TCP 短报文等,提供了典型的负载均衡功能和安全扩展功能,同时支持服务发现、熔断降级、灰度发布等典型的服务治理功能。此外,Flomesh 软负载提供了在同一个 Pipy 中同时运行四层负载均衡和七层负载均衡的模式,并支持以插件方式实现模块化策略执行。Flomesh 还使用了 PipyJS 技术,支持使用 JavaScript 实现完全的插件功能,提高了服务的 QoS 和 SLA,同时降低了升级和管理 Pipy 可执行文件的复杂度。
客户端负载均衡
Flomesh 软负载提供了类似 Consul Agent 原理的客户端负载均衡能力,并且支持进程级的 failover 能力。对于多集群服务发现场景,Flomesh 软负载提供了两种方案,需要根据使用环境和场景进行选择,同时在采购 Flomesh 软负载产品的情况下,可以获得专家技术团队的远程专家服务。
DNS 负载均衡
DNS 负载均衡是一种流行的负载均衡方案,Flomesh 软负载的 Pipy 组件包含了 DNS 模块,可用于快速开发灵活的 DNS 解析方案。Pipy 的 DNS 查询和解析速度优于 Kubernetes 中的 ClusterIP 方案,且可以被用于面向互联网的 GTM DNS 服务、面向局域网的 LTM DNS 服务以及容器环境的 DNS 服务发现。此外,Flomesh 软负载还提供了专家服务,支持客户的定制化需求。
Kubernetes Ingress 和 Egress
Kubernetes Ingress 和 Egress 是容器平台中常用的负载均衡形态,其接口规范包括 Ingress、GatewayAPI 和 Egress/EgressGateway CRD。Flomesh 软负载提供了针对 Kubernetes 环境中负载均衡的各种控制器,其实现都在 Flomesh 的开源仓库中。这些控制器可以通过 Kubernetes 工具链进行快速部署和使用,并提供了图形化的配置和管理能力。
Kubernetes ELB
Kubernetes 中的类型为 LB 的服务默认并没有实现为其分配 ExternalIP,各种公有云平台都有自己的实现,同时开源社区也提供了典型的实现,如 MetalLB。Flomesh 软负载提供了自己的 ELB 实现,包括在扁平网络中通过 BGP 宣告 ExternalIP 和在容器平台之外有 Flomesh 四层负载均衡集群的自动注册。针对传统的非 BGP 网络,Flomesh 软负载提供了定制化的基于 ARP 的 ELB 服务,目前是一种可选的 Flomesh 专家定制服务。
API 负载均衡
Flomesh 软负载为 REST API 用户提供了完整的 API 级负载均衡能力。用户可以定义一个 API,对该 API 的流量进行负载均衡和策略管理。除了 API 负载均衡,Flomesh 软负载还支持多种层级的负载均衡,包括面向互联网入口、子网入口、主机和实例、容器平台、微服务。这些层级覆盖了 DNS 负载均衡、4 层负载均衡、7 层反向代理和负载均衡、Ingress、Egress、多集群服务管理(MCS)、DNS 服务发现和客户端负载均衡等。
图形化控制台
Flomesh 软负载提供了图形化用户控制台,支持多租户的软负载管理,包括大多数功能的可视化操作和灵活定制的各种 Dashboard。控制台默认运行在容器环境中,可以通过 Helm chart 进行部署,提供基本的 Kubernetes 管理能力和一个 web terminal。部分功能需要根据客户需求进行定制化部署和后台管理,可联系 Flomesh 软负载专家支持团队。
版权声明: 本文为 InfoQ 作者【Flomesh】的原创文章。
原文链接:【http://xie.infoq.cn/article/8bf0f9af4ff7076e01027aab2】。文章转载请联系作者。
评论