在API超越应用的时代,企业应如何持续推进数字化扩展(下)

来源:F5科技
作者:宋志麒
时间:2024-11-01
2082
前面「数字化扩展阶段应用服务常见问题」部分,我们详细罗列了云基础架构建设、应用现代化、应用上云,以及多云环境下应用移植性能力建设过程中与应用服务相关的常见问题,这些问题也是对组织在过去多年实际生产运营中遇到问题的总结。

03

「一块区域、一个平台、一套规范」:优化数字化扩展阶段的应用服务

前面「数字化扩展阶段应用服务常见问题」部分,我们详细罗列了云基础架构建设、应用现代化、应用上云,以及多云环境下应用移植性能力建设过程中与应用服务相关的常见问题,这些问题也是对组织在过去多年实际生产运营中遇到问题的总结。本部分探讨组织应如何应对这些问题,并探讨在数字化扩展趋势下如何优化应用服务,即如何通过了解应用变化并落实统一规范治理,利用自动化、多租户自服务、流水线驱动等新场景技术,提升运维、生产和治理管理的水平,保证在数字化扩展阶段现代化的应用平滑上云。解决这些问题并优化数字化扩展阶段的应用服务的方法可以总结为一句话:「一块区域、一个平台和一套规范」。一块区域指的是在多云之前规划的多云前置网络区域;一个技术平台指的是在多云前置网络区域建设的多云统一API网关技术平台;一套规范指的是结合业界领先的理念,为新技术和新方法论的使用制定的规范模板,并基于规范模板将新技术应用于统一的多云API网关平台。接下来,我们将从这三个方面依次展开详细说明。

多云前置网络区域

如下图所示,多云前置网络区域的主要目的是部署多云统一API网关技术平台,该平台的作用是保证应用和工作负载在多云和传统数据中心之间的可移植性及迁移的平滑性。从负载均衡的角度,多云前置网络区域分为三层:第一层是传统硬件,可选择F5新一代R系列硬件。该层主要用于多云多区的调度,通常采用资源池分布式方式进行部署。业界常用两种方式:内网DNS和动态路由。动态路由的硬件负载需要与云底层SDN网络通道紧密互动,实现跨多云和多可用区的请求接入,跨可用区的多链路冗余访问,并具备Anycast能力,以在保证业务在多云多可用区冗余的基础上实现优化。

36CCFDE1-8196-4C8C-A1DA-6BA85CEFCBB7.png

第二层采用业界领先的软负载NGINX进行建设。NGINX是一个轻量级、事件驱动的七层负载均衡器,具有出色的性能和高并发处理能力,能够处理数千个并发连接,适用于高负载的网络环境。第二层主要作为七层负载均衡,承担云上基于域名和请求路径URL的现代应用负载调度职责。

第三层包括云上租户内的软负载,例如K8S容器平台的Ingress控制器。将云上租户内的软负载统一到多云前置区域,是为了进行统一的规划与治理,确保新技术和新方法论与组织已有的管理流程规范以及技术职能部门有力结合,使云上新技术和新场景能够真正提升组织的运营管理水平,提高云上业务的可靠性。

多云多区流量调度

下图展示了基于动态路由方式实现的多云多区工作负载调度示意。位于不同区域的F5新一代R系列负载均衡器具有相同的地址,例如1.1.1.1:80。在区域1访问该地址时,动态路由调度会将请求转发到区域1;在区域2访问该地址时,请求会被转发到区域2。当区域2的应用系统发生故障后,区域2的客户端访问该地址时,请求会被转发到区域1。

48110069-63DB-413E-B792-956E3D1F87AD.png

这种就近Anycast的实现是通过路由协议BGP和OSPF来通知路由器哪个节点是‘最近’的。每个节点向路由器宣告自己的IP地址,路由器维护一个路由表,并选择离客户端最近的节点。从负载均衡的角度,多云多区双平面调度的关键在于通过动态路由协议和云区域的数据中心网络建立通道。负载均衡的虚拟IP地址是路由器路由表中的一个条目,负载均衡器很好地支持动态路由,并可根据自身的健康检查进行路由条目的宣告与收敛。只有健康检查成功的虚拟服务才会被宣告到路由器,当健康检查失败时,路由条目会迅速收敛。路由器可以基于ECMP实现四层负载的水平扩展,保证云上按需扩展的能力。

以多云多区调度的一个平面为切入点,架构也具备高可靠性与高可用性,在交换机层面,采用双机的架构,负载均衡资源池化在保证了弹性扩展的同时,也具备高可靠性,四层负载均衡负载7层软负载同样资源池化部署,具体弹性水平扩展、高可靠和高可用等特点。

现代应用负载调度

第二层软负载的主要作用是进行现代应用的负载调度。在数字化扩展阶段,应用现代化通常采用微服务架构。在微服务架构下,一个系统被拆分为成千上百个微服务。现代应用负载调度基于域名和请求URL进行智能请求路由。具体来说,现代应用负载调度分为以下几类:

C6E942B1-97B7-4D48-87A5-152BF237CEA9.png

F10643E7-B7A5-4036-BF0E-3DEE48B45488.png

上图所示的基于比率的灰度路由是现代应用负载调度的典型场景。通常,组织中的业务上云、应用现代化和微服务改造不是一蹴而就的,而是逐步完成的。以某个特定的应用为例,通常该应用最初是在数据中心的虚拟化平台上运行的。随着应用架构的改造和上云,应用系统的某个特定模板完成了改造并上云,这就需要在云前置进行基于比率的灰度流量调度。

云租户内负载控制

云租户内负载控制指的是运行在云内特定租户中的软负载,云内负载控制器指的是部署在云内的控制平面程序,该控制器主要负责将云内和云外网络打通,将云内应用变化或云内负载均衡的变化通过API的方式推送到云外。例如overlay网络下业务请求进入云内需要通过隧道技术,隧道技术下则需要将云内的应用IP地址等通过API的方式实时更新到云外负载均衡,一边更好的实现云内外的更好的联动,真正实现将云自动化自服务与组织的规范流程有力的结合起来。云内负载控制器可以很好的实现云内的负载的水平扩展,例如外部负载均衡负载云内负载均衡的架构下,外部负载均衡的Member就是云内负载均衡的虚拟服务地址,当云内负载均衡虚拟服务地址变化后则需要及时更新云外负载均衡的Member,如果业务请求流量大,云内负载均衡进行了水平扩容,则需要及时更新云外负载均衡虚拟服务,增加新的Member。

多云统一API网关平台

多云统一API网关平台位于多云之前,提供多云的统一入口,支持现代应用服务的智能调度与控制。作为组织的多云统一流量调度平台,它基于现代多云流量调度管理方法,实现多云流量的规范治理。这个平台是开放、可扩展且可重用的,支持不同部门之间的协作与创新。它基于流行的开源软件与商业负载均衡结合的方式,构建了一个自主可控的API技术平台。

D9DE4B08-866A-4E22-B519-8B1A91014380.png

如上图所示,多云统一API网关平台分为数据面和控制面。数据面负责转发和传输应用流量及数据流量,重点关注响应速度、安全可靠性、水平扩展能力,以及多云多区应用的多活高可用性。控制面则负责管理数据面流量转发的行为,执行标准的控制和访问策略,并提供流量的可观测性和洞察数据。

F5 R系列实现跨多云可用区应用负载转发

数据平台的三层架构核心思想是在云前置区域规划一个逻辑和物理上的网络区域,构建三层负载均衡。第一层是硬件资源池,负责多云多区的调度;第二层是软负载资源池,负责云上微服务应用的现代应用负载调度;第三层是租户内的负载均衡,作为云内应用的入口,负责确保租户内应用的高可靠性。

我们坚信,随着组织在数字化转型之旅中的不断前进,对应用交付和安全服务的需求和复杂性将急剧上升。这种复杂性挑战了IT管理应用流量、安全基础设施以及满足客户需求的能力。凭借F5 R系列这一下一代平台架构,性能提升高达100%,您可以使应用交付基础设施具备未来适应性,并提升服务速度以满足现代化要求。除了性能提升,F5 R系列还应对多云多区趋势,提供基于租户的设计逻辑。租户是云环境中的显著特点,F5 R系列的租户设计与云内租户理念类似,租户独享计算资源。在多云前置网络区域部署F5 R系列硬件,可在应用负载层面构建租户资源池,使应用负载层面的租户与云可用区内的应用租户一一对应,从而提升治理规范中的安全性和应用弹性扩展能力。

CA02F384-E0C6-4349-A215-FAE58C741BAF.png

F5 R系列租户提供严格的资源隔离机制,确保不同租户的数据、配置和流量互不干扰。每个租户可以独立配置其网络、安全策略和应用服务,同时支持按需扩展资源,以满足不同租户的需求增长。通过集中化的管理控制台和现代API,管理员可以统一配置和监控所有租户的服务,从而简化操作并提高效率。下表列出了F5 R系列不同型号所支持的最大租户数:

F036B27F-70AD-4273-BF71-17F9DB39A4E4.png

NGINX作为流量最繁重的Web服务器和反向代理已被广泛知晓。随着企业和组织在数字化扩展、应用现代化以及多云多区流量调度方面的需求不断增加,NGINX,特别是在被F5收购之后,已经发展成为一个针对多云现代应用的体系化产品平台。如果您的应用部署在全球多个公共云数据中心以及传统数据中心,并希望通过一个控制台监控基础设施、解决安全漏洞并评估NGINX集群的健康状况,您可以选择NGINX ONE。

如果您是开源NGINX的用户并希望使用一些增强功能,可以选择NGINX Plus,其主要增加了主动健康检查、API能力、可观测健康指标等功能,使其成为构建统一API网关的关键组件。NGINX管理套件提供了一系列企业级扩展、安全、可观测和治理工具,您可以依赖此套件进行API网关构建。基于NGINX,NGINX应用防护提供轻量级、高性能的七层应用和API安全攻击防护能力,有效保护并缓解针对应用程序和API的第七层拒绝服务攻击。对于Kubernetes上的业务流量管理,您可以选择NGINX Ingress Controller和NGINX Gateway Fabric。

NGINX API路由能力

API路由是API网关的核心能力之一,主要指根据HOST和URL请求进行转发。在数字化扩展阶段,同一个应用可能会有多个版本同时存在,此时灰度路由(灰度发布)用于在不同版本之间转发请求,并基于生产流量验证新版本的性能。灰度路由采用逐步放量的策略,而非一次性将新版本或功能全量推送给所有用户,而是首先选择一小部分用户作为试点。

API路由还可以基于HTTP协议的多种属性进行转发,例如特定的HTTP头属性、Cookie、源地址、和HTTP URL参数等。NGINX API路由的能力如下表所示:

79A0C735-3156-4554-8DB4-DDA519E4E178.png

在数字化扩展阶段,组织的主要任务包括应用的现代化和构建跨云与数据中心的应用及工作负载的可移植性。根据F5《应用策略现状报告》,从2023年开始,超过一半的组织已通过现代化应用替代传统应用。传统应用通常按功能模块拆分,不同的功能模块由不同的项目组开发,并通过多个微服务实现。不同模块的微服务通过URL进行区分,因此API网关的多路径路由变得尤为重要。下图展示了多路径路由的示意。

EBA15CF3-A822-49B9-9471-A34CA21AD72B.png

多路径路由可以结合HOST,通过HOST进一步细化API请求的路由。NGINX不仅支持基于HOST的转发,还支持HTTPS请求。同时,NGINX在根据HOST和URL转发时,也具备跨租户能力。

灰度路由主要应用于数字化扩展阶段中,实现跨云可用区和传统数据中心之间应用负载的可移植性。作为API网关的核心功能之一,灰度路由允许在不同环境中逐步引入新版本的应用,确保负载迁移过程的平稳性和可靠性。它在应用负载在云可用区和传统数据中心之间的迁移中扮演着关键角色,与现代应用的SRE(Site Reliability Engineering)理论密切相关。

这种迁移能力或工作负载转移的实现,往往涉及到不同的方法和策略。SRE理论强调通过持续监控和优化操作,确保服务的高可用性和可靠性,灰度路由则是支持这一目标的有效工具之一。通过逐步放量和验证新版本,灰度路由帮助确保在进行应用迁移和负载调整时,能够平衡风险,优化用户体验。

802E4C8F-5FD7-433A-B19A-152449E3B541.png

上图展示了灰度路由在实际业务场景中的典型应用。例如,在信创改造过程中,迁移并非一蹴而就,而是逐步完成的。灰度路由允许模块逐步迁移,一次只切换一部分流量。信创服务和非信创服务可以同时运行,通过灰度路由实现平稳过渡。

在这个场景中,您可以利用HTTP请求头参数来控制流量路由。例如,您可以通过检查请求头中的X_XC属性来决定流量的去向。如果请求头中X_XC的值为true,则将请求转发到信创区域;否则,流量继续在传统区域中处理。这种方式使得在迁移过程中,可以有效地管理和控制新旧版本的并行运行,确保改造过程中的平稳过渡和服务的持续可用性。

NGINX API限流能力

API限流也是API网关的主要功能,限流用于拒绝过多的API流量,NGINX支持两种API限流方式,即防止流量激增的影响和允许一段时间内发送特定数量的请求。NGINX的limit_req和limit_req_zone指令用于限流,首先通过limit_req_zone定义请求限速的共享内存区域。用于限制对某些资源的请求速,limit_req定义请求限速规则,关联共享内存区域,为保证业务连续性,NGINX API网关限流对突发请求数采取柔和态度,NGINX可定义特定窗口时间内,可以允许最多的请求超过速率限制,应用现代微服务应用readness Probe等初始化操作,NGINX提供慢启动能力,提升整体用户体验。

API限流是API网关的核心功能之一,用于控制和管理流量,以防止系统过载。NGINX提供了两种主要的API限流方式:

-防止流量激增的影响:通过限制请求的速率,防止突发流量对系统的影响。

-允许在特定时间内发送特定数量的请求:设定一个时间窗口,允许在该时间内处理一定数量的请求。

NGINX的limit_req和limit_req_zone指令用于限流,首先通过limit_req_zone定义请求限速的共享内存区域。用于限制对某些资源的请求速,limit_req定义请求限速规则,关联共享内存区域。NGINX限流特点是:

-柔和限流:NGINX对突发请求数采取柔和态度,可以在短时间内允许请求数量超过常规速率限制。

-慢启动能力:为应用现代微服务提供初始化操作,如readiness Probe等,以提升整体用户体验。NGINX能够在应用启动时逐渐增加流量,避免对新服务的过大冲击。

通过这些功能,NGINX确保了API的高可用性和稳定性,同时能够在面对突发流量时维持服务质量。

NGINX API限流也可基于特定源地址、特定HTTP头属性、HTTP Cookie、HTTP URL参数等,下表为NGINX根据源地址限流的示例,我们定义的限流速率为每秒请求10次,当请求特定源地址的客户端每秒钟请求数超过10次后会触发限流。

FD50E26B-05BB-4856-BD3D-57E07211896E.png

NGINX API安全防护

根据过去几年F5《应用策略现状报告》调研,租户越来越多地关注API安全,过去一年有超过80%的组织部署了一种或多种API安全服务。在多云统一API网关上,基于F5 NGINX App Protect,您可以使用软件安全解决方案保护您的应用程序和API。该解决方案作为轻量级Web应用程序防火墙(WAF)、第7层拒绝服务(DoS)保护、机器人保护、API安全和威胁情报服务无缝集成到DevOps环境中。F5 NGINX App Protect在分布式架构和混合环境中提供一致的保护。NGINX架构为模块化设计,这种架构可以方便扩展,NGINX App Protect是通过扩展NGINX实现的。NGINX App Protect是非常轻量级的,且不会影响NGINX整体请求的处理速率。与传统的安全方案相比,NGINX App Protect轻量且基于单个应用或单个API的防护,将安全能力与应用开发集成,DevOps和DevSecOps可方便地调整和掌控安全行为和能力。下表汇总了F5 NGINX App Protect构建API安全防护的基本能力。

8772A48A-4F55-426E-9E45-52812D200E87.png

NGINX App Protect默认策略可以防护常见的OWASP排名前10的攻击,例如跨站脚本攻击(XSS)、SQL注入攻击、访问路径越权攻击等。事实上,API安全攻击中常见的攻击类型占据了很大比例。启用默认策略可以有效地减缓这些常见攻击。

NGINX APP Protect基本功能包括安全情报告警、策略执行模式、IP黑白名单、HTTP合规性验证、定义允许访问的HTTP方法、数据保护欲脱敏、请求文件限制、自定义拦截页面、安全策略集中管理等。安全情报告警指的是NGINX可以将攻击情报实施发送给现代可观察可视化技术栈,并提供对应的模块快速展示攻击者信息。自定义允许的访问方法指定义允许HTTP的访问方法,例如某微服务提供了GET方法,那么可以在防护策略中定义只允许GET方法被访问,当攻击者尝试发送POST等方法是,NGINX直接会拦截攻击请求。为方便管理,以及满足安全攻击应对的及时性需要自定义拦截页面,NGINX安全防护拦截页面可定义拦截的原因,相关管理人员的联系方式等,下图为NGINX安全防护自定义拦截页面的示意。

0D6505D3-1892-4590-B3D4-A8CC26B64D02.png

微服务应用防护针对数字化扩展阶段微服务容器化部署的特点,可以在K8S入口控制器中定义基于应用的防护策略。微服务之间通过API进行通信,传输的数据通常为JSON。基于这些特点,NGINX应用级API防护支持以下防护能力:根据内容过滤、非法请求方法、非法目录访问、特殊的SQL注入、弱类型密码、弱类型Token等。

此外,NGINX App Protect还支持通过OpenAPI文档进行安全防护。通过导入OpenAPI文档,可以生成白名单策略,白名单策略是防护策略中最为有效的一种。下图展示了一个OpenAPI文档,该文档定义了微服务支持的所有API以及API请求中的URL参数类型。例如,文档中定义了API GET参数ID的类型为整数型。如果攻击者传递的参数不是整数型,NGINX将拦截该攻击请求。

635EA3F0-11A2-42E5-809A-46691858B26D.png

gRPC远程调用可以提升微服务通信的效率和数据传输的吞吐量。针对这种类型的通信,NGINX也提供了相关防护功能。具体而言,NGINX可以实现以下防护:

-gRPC二进制流过滤:对gRPC二进制流进行内容过滤,以确保数据的安全性。

-gRPC HTTP/2应用保护:提供对gRPC基于HTTP/2的应用的保护,防止各种攻击和恶意请求。

控制平面作模块说明

由于负载类技术栈在组织中通常被网络部门建设管理,控制平面最主要的工作是落实多云统一API网关的建设,提升自动化能力,灵活部署能力,云原生应用支持能力,在应用上云及CICD建设中增加负载网关服务能力,以确保应用负载在多云可用区和数据中心间的可移植性。控制平面能力建设主要是将云上应用交付所需要的三层负载统一管理,将应用发布的过程建立业务视角的菜单栏,以及统一北向的API,通过API可以操作云上三层负载均衡中的任意一层,控制平面基于菜单栏的能力可以作为组织统一云管理平台的一个子模块。

控制平面按照功能侧重可分为如下几个方面:平台自动化、部署自动化以及网络自动化。平台自动化是指多云统一网关平台具备自动化自服务能力,数据平面硬件负载均衡和软件负载均衡可以自动化地部署和创建。部署自动化主要是指云上业务应用的发布自动化,在部署上线业务应用的同时,能够自动化实现业务应用的负载配置,也就是说,控制平面生成的相关配置可以有效地推送到相关的负载实例上。网络自动化则是将网络部门日常通过人员手动操作的工作,如防火墙规则和负载均衡规则,通过自动化来实现。

控制平面还具备服务发现与服务注册的能力,可以基于DNS技术实现服务注册与服务发现。当创建服务时,会相应地创建DNS记录。在服务发布过程中,服务发布描述文件中的域名通过注册中心进行指定,控制平面在服务发布过程中进行服务发现,将域名对应的IP地址添加为负载均衡的Member。

控制平面还具备可观测能力。可观测性指的是在计算系统和应用程序中能够有效地监控、测量和理解其状态、行为和性能的能力。它是确保系统正常运行和进行故障排除的关键能力,尤其在大规模、分布式和复杂的多云应用交付环境中尤为重要。

多云可用区场景治理规范

多云场景治理规范的主要目的是在云技术的大背景下,高效且高质量地应用新技术和方法论,并与组织已有的管理流程和质量保证规范整合,以确保业务运营的质量。具体来说,这包括现代应用下模板化的治理规范。模板化规范基于统一的API网关平台,在该平台上通过模板实现多云可用区的场景治理规范。

针对多云可用区架构下的软负载,我们制定了不同的业务发布模板。这些模板基于云原生的YAML格式,可以通过API或界面快速生成。当前平台支持的业务发布模板包括:

-HTTP反向代理模板

-HTTP负载均衡模板

-gRPC HTTP2请求路由模板

-WebSocket请求路由模板

-TCP反向代理模板

-TCP负载均衡模板

-现代应用负载调度模版

-限流接入控制模板

如下图所示,以现代应用负载调度模板为例,为满足信创化建设的需要,user服务需要同时支持多个版本。通过HTTP请求头属性X-TM-Header来控制流量的转发行为。当请求中X-TM-Header的值为特定值时,流量将被转发到信创2.0版本。

在此需求下,流量调度模板如下图右侧所示。模板的YAML定义了VirtualServer类,VirtualServer通过在注册中心注册的服务名称(域名)来管理两个服务,并在路由转发策略部分定义了基于HTTP头属性的判断逻辑。

1A16DD0C-12D4-4274-8EDC-FE337D5BD95D.png

04

多云统一API网关平台收益总结

根据过去几年F5《应用策略现状报告》,我们发现随着数字化转型的深入,以及人工智能对业务的推动,组织对应用服务和安全服务的需求越来越多。我们将数字化转型分为三个阶段:任务自动化、数字化扩展和人工智能辅助业务。本文主要从组织数字化转型的第二阶段切入,说明在数字化扩展阶段组织重点工作——应用现代化以及构建应用多云可用区和数据中心工作负载迁移能力的过程中的问题,并详细阐述了如何通过「一块区域、一个平台、一套规范」—即以多云统一API网关平台来解决数字化扩展过程中常见的问题。多云统一API网关是以F5 R系列硬件及F5 NGINX为核心构建的,通过结合治理规范,可有效优化数字化扩展阶段的应用服务。

根据2024年F5《应用策略现状报告》,在应用现代化方面,95%的组织部署了API网关,以构建跨云和数据中心的应用负载可移植性。应用程序及工作负载能够在多个环境或多云环境中运行,使组织能够在多个环境下操作,从而提升其数字化成熟度。在数字化扩展阶段,应用架构要求系统能够在面对故障、错误或灾难时,维持正常运作并快速恢复,这种能力被定义为应用的弹性。67%的调查者表示,多云可用区及跨云和数据中心的可移植性确实提供了这种弹性。我们都知道,停机是不可避免的,它们会发生在每个组织中。即使是最优秀、最著名的品牌也会经历停机。无论是由于配置更改、人员错误,还是自然灾害,你都希望拥有这种弹性,以便将应用程序迁移到最合适的位置,从而确保业务能够继续运行。

多云统一API网关的核心价值在于为组织提供跨云可用区和数据中心的可移植能力。这种能力能够协助组织实现应用现代化改造、进行灰度上云、分发应用负载在多云可用区和数据中心之间,甚至支持应用从云端回迁。多云统一API网关为组织带来的主要收益包括:

-首先,解决了数字化扩展阶段在应用现代化及跨云和数据中心负载迁移中的实际问题。通过统一规范和平台,避免了各项目组各自为政的现象,解决了多云架构下现代应用负载调度的可靠性差、流量管理混乱及潜在运营风险等问题。

-其次,引领了技术体系的变革,保障了组织核心业务从传统主机到分布式架构的迁移,并确保核心业务在云端的高效可靠运行。这一过程中采用了现代应用新方法论,如DevOps和SRE。

第三,构建了敏捷的产研体系,通过推动IT敏捷交付和敏捷研发能力,促进了组织的敏捷转型,支持了端到端的敏-捷业务能力。

-第四,推动了平台化能力建设。构建的多云统一网关平台是支持热点业务、新型应用、AI和ChatGPT等技术的驱动平台。

-最后,促进了组织的数字化转型。通过提升用户的数字化体验,构建数字化金融生态,落地开放组织战略、数字经济战略及数智化战略,实现了组织的全面数字化转型。

原文链接:点击前往 >
版权说明:本文内容来自于F5科技,本站不拥有所有权,不承担相关法律责任。文章内容系作者个人观点,不代表快出海对观点赞同或支持。如有侵权,请联系管理员(zzx@kchuhai.com)删除!
个人VIP
小程序
快出海小程序
公众号
快出海公众号
商务合作
商务合作
投稿采访
投稿采访
出海管家
出海管家