
当下,web 3.0大火,各种炒币、非同质化代币NFT,元宇宙等应用模式纷纷粉墨登场。这些场景有一个共同的点就是——上”链”(这里所说都是指公链。我个人认为联盟链都是假的,巨头的跑马圈地,最多就是web 2.0重来一遍。只有公链才是真的,所有场景都值得重塑一遍)。上”链”有一点难度的,一是因为应用场景可能受政治因素影响,另外一个是技术也是影响场景落地的一个关键要素。
我认为技术关键点可能有三个,计算、存储和网络。这其中,又以网络因素影响最大。为什么呢?无限计算和存储的基础是通过网络连接构成一个”超级计算机”,使其拥有海量算力和存储。所以如何提高网络”力量”是根本,如何无”墙”连接?如何提速?如何合理流量调度?都是需要我们解决的问题。今天,咱们来一起聊下网络的小模块——流量调度。那就不得不提网络流量大闸——负载均衡。
主流的负载均衡器有很多,大致分为两类,商业和开源。商业负载均衡代表产品有F5和A10,它们的典型特征是运行稳定,功能齐全,但价格偏高,性能有限。例如F5中端产品 配置4core CPU-32G mem-1G net bandwidth的,应对如今的互联网的海量数据转发场景,根本无法应对。价格又偏高,低端BIG-IP I2000系列是25万+,中端BGP-IP i4000系列是45万+。性价比极低。
开源负载均衡又可以分为两类,一类是成熟的开源负载均衡,例如Nginx、Haproxy等。典型特征是功能基本满足,灵活,但缺少vip管理,热加载功能会造成业务抖动,配置数据基于文件存储,管理困难,对于企业级应用,不成熟。另一类是新兴开源负载均衡,例如iqiyi dpvs、openELB和metaLB等,特点是要么架构复杂,依赖特别多,dpvs是典型代表。或者,社区不活跃,维护比较困难,有问题基本靠自己解决,难上加难。
综述,我们是否能有一个负载均衡器?它是一种全新设计模式的,分布式的,性能强的,云原生的,它是为未来海量流量调度而生的。它能充分解决上述问题,设计简单,成本低又易用?——是的,是有的,那就是负载均衡器-合页(Parasaus)。
合页(Parasaus)按照数据面和控制面分离的架构而设计,数据面只负责数据转发,控制面负责watch条目的变化、管理员的增删改查及节点探活,架构简单清晰。
数据面的流量转发节点无状态,支持横向扩展,最多支持254个节点。
流量转发基于lvs实现,流量转发在内核态完成,性能优异,非常高效。
整个负载均衡维护一个ip地址池和端口池,容量有35000个地址。可以为每个服务都创建一个连接地址。
控制面比较轻量,功能简洁,circle-watch模块观察到条目变化,触发一个hook,在circle-healthcheck添加探活条目,用以及时监测到服务是否可用。circle-healthcheck探测到有不可用服务条目或服务恢复条目时,触发一个hook,在数据面对转发流量进行调整,使流量能全部转发到所有服务健康节点上。
服务健康检查方式支持三种,分别是L7 http、L4 tcp、mysql。
支持容器部署,产生的元数据存储到etcd中,易于管理,并保证高可用。
数据面的实现借鉴了Kubernetes Service的架构,支持多种负载均衡策略,例如RR、LC、WLC、WRR、Source Hash等。
配置的增删改均支持热加载,即使是业务高峰期,对业务也是零影响。
硬件均采用普通x86服务器,无需任何特殊配置(例如dpvs的dpdk驱动)或硬件,成本极低。自主可控,支持信创。
管理接口支持多种方式,例如接口、Yaml文件和Dashboard界面,简单易操作。
场景1:完全云原生,是Cloud-Native,更是Kubernetes-Native的,可大幅缩短通讯链路,有效降低延迟。举例:在传统场景中,K8S中pod应用对外部服务的访问必须流出容器集群虚拟网络而进入数据中心物理网络,每次进出其他子网和经过转发节点(例如DNS、负载均衡等),都会耗费时间,且增加故障域,如下:
在新场景中,借助合页((Parasaus)的强大功能,可实现流量转发操作全部在一个区域内完成。针对以上案例,负载均衡和探活功能由合页完成,且是在容器集群内全部完成,大大缩短链路和减少故障域。
场景2:在数据中心内进行流量调度,用作于基础设施底层的一环,将流量在南-北向和东-西向进行合理分配。
性能:
我们针对当前比较主流的负载均衡开源产品进行了比较和测试,相较于Nginx、Haproxy,合页(Parasaus)性能表现更好。
2. 稳定性:
因为合页((Parasaus)负载均衡是完全分布式的,网络流量是从交换机上通过等价路由完全均匀转发的。发生故障时,可以在10秒内完成故障转移,所以SLA是非常有保证的。
3. 成本:
在合页((Parasaus)作为云原生负载均衡的场景中,合页是作为一个应用运行在云中(1-3个pod),基本等同于免费。毋庸置疑,肯定比云上的任何一个负载均衡成本都低。hw负载均衡 >0.32元/小时,tencent 负载均衡 >0.788元/小时,ali 负载均衡 >0.1+0.02*GB 元/小时(计算价格像是双11的网购,需要有奥数的本领)。
另外一个场景,合页(Parasaus)作为一台标准负载均衡,只需要三台服务器,估计10w左右,便可获得拥有海量数据转发的能力。比任何一种商业负载均衡价格都低。
目前合页(Parasaus)负载均衡支持三种方式,分别是Dashboard 页面、Yaml文件和API接口方式,使用方便,对开发人员和运维人员都很友好。举例:
Dashboard 页面方式:
Yaml文件方式:
合页(Parasaus)是NextArch基金会孵化的首个面向企业级生产就绪的下一代云原生分布式负载均衡开源项目。旨在为企业级用户提供多元、复杂化的使用场景,如数据中心、边缘、虚拟化/容器等场景,具有高安全性和稳定性、易部署和易运维可扩展等优点。
最后,希望有兴趣的同学关注和使用合页(Parasaus)Github加入社区,共同成长。
Github地址:
https://github.com/Dinosaur-Park/heyelb
NextArch基金会(下一代架构基金会)成立于2021年11月,隶属于Linux Foundation,是非营利性组织。 NextArch基金会(下一代架构基金会)通过开放中立的治理模式,构建适合企业发展的下一代架构的开源生态,促进技术创新及商业增长,并利用项目协作、最佳实践、行业交流等方式来帮助企业数字化转型。点击下方名片进行关注NextArch基金会公众号。
点亮「在看」为开源传播助力 👇

