初识负载均衡
负载均衡,英文名称为Load Balance,其含义就是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行,例如FTP服务器、Web服务器、企业核心应用服务器和其它主要任务服务器等,从而协同完成工作任务。负载均衡构建在原有网络结构之上,它提供了一种透明且廉价有效的方法扩展服务器和网络设备的带宽、加强网络数据处理能力、增加吞吐量、提高网络的可用性和灵活性。
负载均衡的前世今生
一项技术的兴起,就是要看它的应用发展空间是多大的。那么网络负载均衡技术也是随着网络发展而兴起的。现在让我们回首,看看它的发展历史,同时,也是对网络的发展有一个侧面的认识。首先我们要弄清楚负载均衡从何而来,在什么基础上才被研发出来的。
网络负载均衡的诞生
1996年,由美国华盛顿大学的几个学生创立了F5公司,一个新的网络负载均衡企业诞生了。F5为何会选择网络负载均衡作为创业点呢?根据JohnMcAdam介绍,Internet的规模每一百天就会增长一倍,网络应用流量也越来越大。网络的各个核心部分随着业务量的提高、访问量和数据流量的快速增长,其处理能力和计算强度也相应增大,使得单一设备根本无法承担。在此情况下,如果扔掉现有设备去做大量的硬件升级,这样将造成现有资源的浪费,而且如果再面临下一次业务量的提升,这又将导致再一次硬件升级的高额成本投入,甚至性能再卓越的设备也不能满足当前业务量的需求。于是,网络负载均衡机制应运而生,这是一个巨大的市场机会。
互联网泡沫带来的挑战和机遇
网络负载均衡的机会在于网络应用的扩张,网络流量的增大,所以,它非常依赖于网络的发展。然而,在2000年里,当互联网的泡沫破裂时,所有的网络负载均衡厂商都面临了生存的考验。因此各大厂商将业务重心从互联网转移到大企业方面,专门针对电信、银行,以及联邦政府等大企业做网络负载均衡。此时的负载均衡聚焦于四层网络负载均衡技术。2003年非典爆发,这是一个灾难,然而,却是互联网的发展机会。网上看新闻、网上定餐、电话问候等等,网络应用快速发展起来。在全球市场上,众多的企业也从互联网的泡沫经济中走出来,开始走向理性化的发展方向。在前面一轮的基础设施建设的基础上,开始更加重视增值业务/数据业务的建设工作。此外,互联网泡沫时代所引导的客户经济,也在这个时间开始体现出了真正的经济效益,各种增值业务如网上银行、电信运营商的短信增值业务,也在这个时期开始蓬勃发展,并产生出了巨大的经济效益,接踵而至的就是各种各样的网络应用流量瓶颈问题开始凸显,网络游戏这个典型的互联网经济在这个时候也开始进入爆发式增长阶段。此外,加上国内的电信、网通南北分拆,导致南北互通问题,这导致不少企业的网络流量瓶颈问题更显突出。这种种问题,并不是单纯升级传统的路由、交换设备而能解决的。而网络负载均衡设备正好能解决这些问题。在这个时期,包括F5、Netscaler在内的网络负载均衡设备厂商,都得到了快速的发展,提供了针对网络访问、数据中心同步访问、远程办公、应用防火墙等多种为了提升关键业务访问效率的解决方案。
互联网快速发展,负载均衡面向应用交付
从2006年开始,国内股市开始火爆起来,随着上交所、深交所的股票交易量不断创新高,证券交易的"堵单"现象越来越严重。此外,企业电子商务的网络应用越来越多,而彩信应用的推广,对网络带宽也有了新的要求;此时,国内视频网站开始纷纷出现,流媒体形成的巨大访问量,需要提供更高的网络流量处理能力,对于四层负载均衡交换机的压力会更大。在这种情况下,普通的负载均衡设备已经难以满足网络应用流量增长的需求。此时,以应用为导向的方案越来越明显了,综合多种技术手段的需求越来越强。我们可以这样形象地理解:基于网络二层、三层的是路由交换,而基于网络七层的则是"应用交换",应用交付是完全基于网络应用的系统解决方案,它将关键应用与基础网络设备关联起来。网络负载均衡"L4-7LoadBalance"和应用交付"AdvancedADC"是两个独立的设备市场。其中,网络负载均衡"L4-7LoadBalance"指具有传统的网络负载均衡机制的设备;而"AdvancedADC"则是传统的网络负载均衡的升级、扩展,它是一种综合的交付平台设备,其综合了负载平衡、TCP优化管理、链接管理、SSLVPN、压缩优化、智能网络地址转换、高级路由、智能端口镜像等各种技术手段的综合平台。事实证明,综合了多种交付手段的应用交付设备(包括有L4-7LoadBalance功能)俨然成为了主流的技术,更符合企业级用户多样化的流量业务需求。
流量为王时代,负载均衡拥抱云原生
随着云原生发展如火如荼,拥抱云原生成为业界共识,为了更好地支持云原生场景,ALB与ACK/ASK等云原生服务深度集成,阿里云推出了ALB Ingress——云原生Ingress网关。
ALB Ingress 技术原理
我们知道Kubernetes集群通过Ingress可以把集群外部的流量,路由到集群内部的Service,以此实现七层负载均衡功能。Ingress工作在7层,为Service做业务选路。
阿里云ACK/ASK等Kubernetes产品,可以借助云原生的应用型负载均衡产品ALB,把集群外部流量路由到集群内部的Service,实现七层负载均衡功能。此时K8S集群中部署了ALB Ingress Controller,负责监听API Server中AlbConfig/Ingress/Service等资源的变化,动态地转换为ALB所需的配置。
ALB基于洛神云网络平台,具备超大规模、超强性能和开放可编程等特点。通过多级负载和多级调度,单实例支持100w QPS;通过软硬件一体化和硬件加密卡,具备超强转发性能;通过自动弹性让运维更简单,SLA高达99.995%;通过自定义转发平台,提供丰富的高级路由特性。
ALB Ingress 使用简介
ALB Ingress与云原生服务做了深度集成,在具备丰富功能的同时也保证了易用性,在ACK/ASK中只需以下操作即可使用ALB Ingress网关(详细可见官网文档):
ALB Ingress在兼容K8S原生功能的基础上,通过AlbConfig CRD和Ingress注解项,还提供了丰富的高级特性(详细见官网文档)。用户通过AlbConfig CRD,可以方便地在K8S中配置ALB的实例和监听;通过Ingress注解项,可以方便地在K8S中配置ALB的转发规则和服务器组。ALB和K8S中资源的映射如下:
ALB Ingress 优势
阿里云ACK/ASK等Kubernetes产品中,支持使用Nginx Ingress和ALB Ingress。Nginx Ingress需要用户自行运维,一般用于用户对网关定制有强烈需求的场景。ALB Ingress为全托管模式,具备超大容量、自动弹性、高可靠和免运维等特性,提供更强大的Ingress流量管理能力。我们从以下几个维度来看看它们之间的差异:
在用户实际使用过程中,我们发现在一些场景下,ALB Ingress相比Nginx Ingress具有明显的优势。
长连接场景:长连接适用于交互频繁的业务场景,如物联网IOT、互联网金融和在线游戏等。当用户进行配置变更时,Nginx Ingress由于需要Reload Nginx进程,会导致长连接闪断,这对有些应用来说是不可接受的。以下是Nginx Ingress和ALB Ingress在长连接场景下的对比测试,可以看到Nginx存在读写失败,ALB无异常。
高QPS场景:互联网业务往往具有高QPS的特点,比如预期内的大促活动和突发的热点事件。以下是我们打满单台Nginx和ALB单个VIP时的测试数据。可以看到一方面ALB的处理延迟要比Nginx的低。另一方面Nginx在处理HTTPS短连接时由于没有使用硬件加速卡,单机性能较低,高QPS下需要较多机器;虽然ALB单个VIP的QPS限制为5万左右,但是ALB支持自动弹性,高QPS时会自动弹出更多VIP,通过一个ALB实例即可支持百万QPS。
高并发连接场景:物联网业务由于终端设备数量大,往往具有高并发连接的特点。ALB Ingress基于洛神云网络平台,支持对用户session进行收敛,单个ALB实例支持千万级连接数;Nginx Ingress需要用户自行运维,单台设备支持的session数有限,即使使用网络增强型虚拟机,依然存在容量风险,需要维护大量设备。
业务存在峰谷的场景:费用方面ALB也存在优势,特别是对于有波峰波谷的业务,比如电商和游戏。因为ALB按量计费,波谷期间消耗的LCU少,且支持自动弹性,用户无需关注和应对自身业务流量模型。而Nginx在波谷期间往往有闲置成本,用户需要根据业务流量调整机器到合适的数量和规格。另外考虑到容灾需要,Nginx通常还需要有资源buffer,这些都会产生额外的成本。
ALB Ingress 应用场景
ALB Ingress是阿里云官方提供的云原生Ingress网关,适用于以下K8S环境:
· 阿里云容器服务ACK(包括专有版和托管版)
· 阿里云Serverless容器集群ASK
· 阿里云上自建K8S集群(ALB Ingress Controller已集 成到开源版CCM)
ALB Ingress由于具备超大容量、自动弹性、功能丰富、高可靠、免运维等特性,加上前文介绍的优势,自发布以来吸引了多个行业的客户,覆盖多种业务场景,以下是几个常见的应用场景:
结束语
最后我们来做个小结。ALB Ingress是阿里云官方推出的云原生Ingress网关,基于洛神云网络平台,具备超大容量、自动弹性、功能丰富、免运维、高可靠等特点,在特定场景下相比Nginx Ingress有明显优势,适用于阿里云ACK/ASK和自建K8S环境,覆盖多种业务场景。