当前位置:网站首页>【翻译】具有集中控制平面的现代应用负载平衡
【翻译】具有集中控制平面的现代应用负载平衡
2022-07-03 02:23:00 【programmer_ada】
原文为Armand Sultantono在Snapt博客上发表的客座文章

应用交付的集中控制平面允许你使用一个单一的平台来满足你所有的应用交付需求。它将参与应用程序生命周期的团队联合起来,这些团队通常分散在许多系统和平台上,中间还有改进。
应用开发团队被授权自行部署应用,采用自助服务方式。平台运营(NetOps、SecOps、Site Reliability等)可以设置高速公路而不是路障,确保符合企业安全标准,而不会扼杀开发和部署的速度。
什么是 "平面",什么是数据平面和控制平面?
让我们首先讨论一下基础知识。
这些天,"平面"、"数据平面 "和 "控制平面 "这些词被频繁使用。在不同的技术领域,这些术语可能有不同的内涵,但它们都坚持相同的基本模式。
- 一个平面是对某些操作发生的地方的抽象表示。
- 数据平面(有时被称为转发平面)是一个系统的 "工作者 "所在的地方。在网络中,数据平面负责通信的实际处理,直至将数据包从一个接口转发到另一个接口。
- 控制平面是管理数据平面的管理层,为数据平面的 "工作者 "设置规则,并向用户提供一个管理界面。在一个解耦模型中(我们接下来会讨论这个问题),控制平面管理着系统的结构,即分布式数据平面。在网络中,控制平面控制和配置数据平面工作者的队伍,以适当地管理流量。
为什么要把控制平面和数据平面解耦?
将数据平面和控制平面解耦,允许网络被编程的想法是一个有趣的概念,它是软件定义一切(SDE)和基础设施即代码(DevOps)的基础。这与软件系统的现代化是一致的,都是为了将应用程序与它们所运行的基础设施解耦。
一般来说,数据和控制平面的解耦有以下好处。
- 操作效率--能够抽象出特定组件的复杂性,并以一种比管理独立和孤立的系统更有效的方式管理整个复杂的系统。
- 灵活性- 更有效地分配和重新分配资源的灵活性:自动缩放基础设施和混合最佳平台。
- 成本优化- 通过利用作为商品硬件和随时可提供服务的无处不在的连接,实现效率和成本节约。
现代应用的传统集成ADC的问题
在应用交付中,像负载均衡器和网络应用防火墙(WAF)这样的组件传统上有一个集成的控制平面和数据平面--其中用户界面和逻辑与数据包处理和转发驻留在同一个应用中。
背景
数据中心边缘的负载均衡器的传统ADC模式可以追溯到负载均衡器(和大多数网络功能)是专用硬件设备的时候。
传统的负载均衡器是在高可用性配置中的单体部署,通常是主动/被动对(其中一个是空闲的),可以处理一个组织的全部或大部分应用组合。传统上,负载均衡器是相当静态的,其基本设置很少需要修改。他们在所有运行在他们后面的应用程序中工作,提供安全性、可靠性和性能。
今天,负载均衡器是一个全面的应用交付平台,因此它们也被称为"应用交付控制器 "或ADC。ADC负责更广泛和更深入的以应用为中心的功能,这远比低级网络功能更动态和特定应用。这包括TLS/SSL卸载、应用级DDoS攻击和僵尸缓解、网络应用和API保护、访问管理和网络内容优化- 仅举几例。
问题
在有成百上千个应用程序的环境中,传统的ADC模型成为一个工作负荷的 "瓶颈",并有可能产生一个大的 "爆炸半径",从而危及你的业务。
此外,传统的ADC方法是对允许快速引入新功能的敏捷开发方法的一种限制。在应用程序以微服务方式部署的情况下尤其如此,因为微服务应用程序不是像以前那样需要维护和更新的较少的单体应用程序,而是由较小的服务组成,这些服务都需要特定的应用程序交付需求,并由不同的应用程序开发团队以更高的速度进行更新。随着应用程序代码的每次新发布,往往需要对ADC进行各种修改,如修改路由规则、安全策略等。
支持现代应用的传统ADC模型会导致持续的策略变化,这可能会严重影响ADC,破坏你的应用交付和安全的稳定性。这也给被迫在指定的维护窗口进行服务更新的平台运营团队带来了压力,因为他们要管理许多服务的交付,负担很重。
分散的每个应用ADC的问题
传统的ADC正在扼杀开发,并将工作负载集中在一个单一的瓶颈上。有什么办法可以解决这个问题呢?有没有可能通过利用每个应用的ADC或每个租户的ADC来解决这个问题?
是的,构建一个按应用或按租户(客户)单独管理的ADC的模式是完全可行的,因为我们不再受制于昂贵的专门的硬件设备。所有现代的ADC都提供了虚拟的甚至是容器化的形式,在一个小的空间(低计算和存储需求)内包装了高性能和丰富的功能。
优点
这种分散的ADC模型减少了瓶颈和爆炸半径。它允许为每个应用"合理调整 "ADC的规模,以及授权应用团队以自己的速度迭代和发布新的代码。
例如,应用A的ADC集群可能包含更多的ADC实例,运行在比应用B更强大的虚拟机规格上,因为它需要更大的系统要求来支持更重的工作负载。此外,应用B的应用开发团队可以每天推送新功能和修改他们的ADC策略,而不必担心影响应用A的服务,因为它们是独立的集群。
问题
当你采用这种方法来授权应用团队时,如果你已经建立了一个由许多团队控制的ADC实例舰队,事情很容易变得可怕的失控。面对分布式部署,要保证合规性、治理和一致性并不简单。
例如,应用程序A可能使用供应商X的ADC,而应用程序B(不符合任何安全标准)可能使用相同的ADC,但以前的代码版本是不安全的,或者可能使用供应商Y的完全不同的ADC,而且突然之间你也加入了工具蔓延的情况。
集中式控制平面如何结合集成式和分散式ADC模型的好处
企业的解决方案是一个用于应用交付的集中式控制平面。集中式控制平面提供了一个平台,它提供了一个 "单一的玻璃窗",保持所有ADC部署的库存,并允许你在一个地方部署、配置和操作你的整个应用交付基础设施。
在这种模式下,数据平面中的ADC实例与中央控制平面中的逻辑和管理UI是解耦的。
ADC的部署可以以合理的方式进行逻辑组织--如果需要的话,可以按应用和按租户。通过这种安排,我们可以获得 "两全其美 "的效果。平台运营团队可以预先提供ADC实例并设置 "护栏 "或全局策略,并使应用开发者能够管理他们自己的每个应用的ADC策略。
当然,如果控制平面支持基于角色的访问控制(RBAC),让不同的角色为他们的特定目的使用控制平面,这是有可能的。因此,在这个模型中,我们把参与应用生命周期的所有小组聚集在一起。网络、安全、应用开发人员、网站可靠性工程师等等。一个单一的平台,也简化了异质工具的蔓延,并将与操作负担和风险暴露相关的风险和成本降到最低。
什么时候可以使用集中式控制平面进行应用交付?
当你管理的应用程序是大规模可扩展和分布式的,并且有许多团队参与到应用程序的生命周期中时,集中控制平面是一个必备的平台。
有几个关键场景,你可能想使用集中式控制平面。
- 你有一个混合和微服务架构,需要一个简单的方法来管理你在这两种环境中的应用交付。
- 你有一个多云战略,并希望获得成本优化的好处,但希望统一跨平台的工具和观察能力。
- 您有分布在边缘计算上的应用,并需要一个简单的方法来以一致的方式管理大量的边缘结点。
- 你想加快应用的部署,在不影响安全性的前提下赋予应用开发者权力。
- 你已经积累了很多工具,也许还有几个控制平面解决方案来管理工具的子集。
- 你希望有一个企业内部或SaaS解决方案的灵活性,以帮助解决上述情况。
集中式控制平面对应用交付有什么好处?
解耦和集中控制平面是实现应用交付现代化的先决条件。 一个集中的控制平面平台可以让你。
- 集中管理混合和微服务架构的应用交付,无论是在企业内部还是在云中。
- 通过负载平衡和应用交付控制(ADC)、API管理、网络应用和API保护(WAAP)、威胁情报和其他关键功能的统一平台,整合应用交付的工具散布。
- 以更简单、更灵活的方式管理您的部署,从现代基于Web的GUI到允许集中数据输出和输入并集成到第三方工具的开放API--无论是用于自动扩展的云平台API还是用于持续集成和持续部署(CI/CD)的API驱动控制。
- 提高整个应用交付基础设施的可见性和分析能力,能够提取汇总的见解和细化的指标。
- 提供自助服务功能,允许将控制权下放给应用团队。一旦其他团队(例如SecOps和NetOps)设置了护栏,应用开发人员可以快速、独立地配置和定制他们自己的端到端应用交付基础设施,在大多数情况下采用基础设施即代码(IaC)方法。
现代应用服务的下一代智能控制平面
如果你的应用基础设施的设计、监控和管理被控制平面所简化,那么下一代控制平面将智能添加到该方程式中。
它还通过机器学习(ML)实现的自适应和自动网络控制推动了你的数据平面的可编程性--比人类专家团队执行得更快、更精确。
下一代控制平面还为边缘计算和云原生架构的新兴应用做好准备。
对下一代控制平面的期望。
- API优先的控制平面,可以 "无头 "运行,并连接到其他专门管理平面的结构,而不是作为终端控制平面。
- 先进的ML能力,以消除人为干预和错误--通过自适应流量规则和自我修复、自我扩展的基础设施对动态流量模式、异常情况和威胁作出反应。
- 社区驱动的威胁情报,利用从历史和预测流量以及内部和外部(公共和私人)来源收集的实时数据,提前防范未来攻击。
- 基于意图的政策允许用户以最基本的术语描述他们的要求,以定义结果和高层次的操作目标,而不需要列举条件和行动,甚至成为每个离散技术功能的专家。如果应用程序开发人员希望以 "跟随太阳 "的模式动态部署应用程序,控制平面将在多个云平台上实例化和配置所需数量的实例,以满足特定地域的流量需求,而无需用户干预。
- 控制平面和数据平面之间的高度优化的通信协议,能够实时和平行地远程控制数以百万计的设备,具有接近零的延迟和极高的规模和弹性。
结论
用于应用交付的集中控制平面将有助于加速应用部署和简化生命周期管理。
这是管理工具蔓延、孤岛式操作的解决方案,并通过解决混合和多云部署的挑战,将参与应用程序生命周期的每个人带到一个屋檐下。
请看Snapt Nova,这是一个具有集中控制平面的下一代应用交付平台。Nova可以部署在企业内部或交钥匙SaaS。Nova是一个任意云、多地点、集中化的平台,用于部署、控制和监控你的应用程序的大规模交付。Nova的内置ML自动化和简单的基于意图的模板和配置文件大规模地简化了敏捷的应用交付。
边栏推荐
- Use go language to realize try{}catch{}finally
- GBase 8c 函数/存储过程定义
- Gbase 8C system table PG_ amop
- GBase 8c系统表-pg_amproc
- What are the key points often asked in the redis interview
- Summary of ES6 filter() array filtering methods
- Restcloud ETL cross database data aggregation operation
- Gbase 8C create user / role example 2
- GBase 8c系统表pg_database
- MySQL learning 03
猜你喜欢
Servlet中数据传到JSP页面使用el表达式${}无法显示问题
通达OA v12流程中心
SPI mechanism
【ROS进阶篇】第六讲 ROS中的录制与回放(rosbag)
Oauth2.0 authentication, login and access "/oauth/token", how to get the value of request header authorization (basictoken)???
Return a tree structure data
elastic stack
The use of Flink CDC mongodb and the implementation of Flink SQL parsing complex nested JSON data in monggo
Recommendation letter of "listing situation" -- courage is the most valuable
Y54. Chapter III kubernetes from introduction to mastery -- ingress (27)
随机推荐
返回一个树形结构数据
require.context
oauth2.0鉴权,登录访问 “/oauth/token”,请求头Authorization(basicToken)如何取值???
GBase 8c系统表-pg_amop
How to deal with cache hot key in redis
GBase 8c触发器(三)
GBase 8c系统表-pg_conversion
GBase 8c 函数/存储过程参数(一)
Iptables layer 4 forwarding
PyTorch 卷积网络正则化 DropBlock
Unrecognized SSL message, plaintext connection?
Producer consumer model based on thread pool (including blocking queue)
How to find summer technical internship in junior year? Are you looking for a large company or a small company for technical internship?
GBase 8c系统表-pg_aggregate
My creation anniversary
Gbase 8C trigger (III)
Swift development learning
The Sandbox阐释对元宇宙平台的愿景
The use of Flink CDC mongodb and the implementation of Flink SQL parsing complex nested JSON data in monggo
[Flutter] dart: class; abstract class; factory; Class, abstract class, factory constructor