应用服务网格:分布式云原生面向应用的网络基础设施——华为云UCS服务网格上线
作者:华为云云原生团队
背景
作为业界首个分布式云原生产品,UCS(Ubiquitous Cloud Native Service)为企业构建云原生业务部署、管理、应用生态的全域一致性体验。使得客户在使用云原生应用时,感受不到跨地域、跨云的限制,让云原生的能力进入企业的每一个业务场景,加速千行百业拥抱云原生。
在分布式云原生的复杂场景下,随着管理规模增大,运行的业务更加复杂,负载运行环境更加多样。特别是运行在多云混合云的不同环境下的运行的服务之间访问时,对服务的韧性、流量、安全和可观测性等方面提出了更高更新的要求。UCS于2023年7月上线应用网格,统一管理UCS分布式环境下的全域流量。应用服务网格以非侵入的方式提供面向应用的韧性、安全、动态路由、调用链、拓扑等应用管理和运维能力。这些能力由人员在UCS中通过配置即可,无须改动用户的代码,也无须使用基于特定语言的开发框架。
UCS服务网格能力
服务网格为分布式云提供了基础设施形态透明的全域流量管理能力。多云、混合云、跨Region的分布式应用基于UCS统一部署、配置的同时,通过服务网格的能力,对这些应用进行统一的流量管理,提供全局负载均衡、访问亲和性、跨地域故障倒换、熔断、限流、动态流量切分等分布式应用韧性和全域流量管理能力,并基于统一认证和细粒度授权的零信任应用网络,解决分布式环境下复杂的应用安全问题,同时基于分布式调用链、应用拓扑、访问日志洞察分布式环境下的服务健康、依赖,进而进行故障诊断等 。
1. 全局负载均衡
服务网格根据配置的轮训、随机、最小链接等多种负载均衡策略在跨地域的服务实例上进行全局负载均衡。对于在分布式云原生平台上全局部署的服务,服务访问者只需要访问唯一的服务域名,服务网格将访问流量分发到舰队管理的多云混合云的所有服务后端实例上,实现全局访问。同时动态自适应服务实例在多云混合云间的动态移动、实例扩缩容。
全局负载均衡简化了分布式云原生场景下的服务访问方式,增加服务的弹性和自适应性。
2. 服务访问亲和性
分布式云原生场景下,在全局负载均衡的基础上,服务网格根据服务实例上的地域信息,优先将流量分发到同地的服务实例上,实现亲和性访问。在跨Region的场景下,可以控制服务源服务访问目标服务时优先访问本Region、本Zone内的目标服务实例;在多云场景下,控制流量优先在本地云内流转;在混合云场景下,当源服务来自云上或者云下时,优先访问本地目标服务的后端实例。
网格提供的访问亲和性降低了分布式云原生场景下服务间的网络延时、减少带宽消耗,提高了服务访问效率。
3. 跨地域故障倒换
在分布式云原生场景下,通常通过区域、可用域、节点的反亲和方式部署服务实例。使用服务网格管理跨地域的访问流量,在一个地域的后端实例发生故障时,将部分流量转移到其他地域的健康实例上去。可以根据服务实例上的位置标签对服务实例分组进行优先级排序,标签匹配得越多,说明和源实例越亲和,优先级也相应越高,在故障转移过程中获取的流量就越多。
在跨Region场景下,流量优先发送给相同Zone的其他服务实例;当本Zone的实例不健康时,发送给本Region的其他Zone的实例;当本Region的实例都不健康时,再根据分布式云原生平台的规划转移到指定Region的实例。同样的机制可以应用到多云和混合云场景。
跨地域故障倒换向分布式云原生场景的服务提供了自适应的故障处理能力,在服务多活部署的基础上,进一步提高了服务总体的可用性。
跨地域故障倒换
4. 跨地域流量切分
在分布式云原生场景下,基于全局负载均衡,和服务网格配置的分流策略,在访问目标服务时可以动态控制将不同的特征的流量,或者不同比例的流量分发到不同位置的后端实例上。
基于这种动态流量切分能力,可以实现分布式云原生场景下线下开发测试、线上运行的全域灰度;也可以根据客户的业务特征,将不同来源的流量或者不同业务特征的流量分发到多云的不同后端,实现客户业务在多云上的流量分担。这些流量切分可以在全域动态控制,根据需要一键将所有流量都切分到多云的一个云上,灵活地实现流量迁移。
跨地域流量切分
5. 分布式环境的故障隔离与恢复
在分布式云原生场景下,服务部署环境复杂,服务总体可用性保证困难。服务网格提供的非侵入重试、超时、限流、熔断等能力能保证服务的韧性,提高总体对外的服务质量。
通过服务网格配置适当的重试可以方便并且有效地提高系统的总体服务质量,特别是对分布式云环境下网络暂时故障、环境问题、资源问题导致的服务不可用进行重试,可以提高服务总体的访问成功率。网格的连接池管理机制控制客户端对目标服务的连接和访问,在超过阈值时快速拒绝。 异常点检查机制可以被快速动态地隔离和恢复分布式云原生的场景复杂的网络环境下不健康的实例,保证服务的总体访问成功率,保证了服务总体可用性。服务网格提供的限流能力保证对分布式云原生场景下关键的服务,在出现流量高峰且超过规划的限流阈值时拒绝服务请求,防止系统过载。
分布式环境的熔断
6.分布环境的零信任网络
分布式云原生环境下,不同地域的负载网络状况、自身安全状况不同,服务安全管理总体挑战较大。服务网格为分布式云原生环境构建全局的应用安全基础设施,在零信任的安全假设下,透明地保护服务间的访问。为来自不同地域的服务应用统一身份标识,自动签发维护证书,进行透明的服务间双向认证和通道加密,进而基于细粒度的服务访问授权策略,控制特定身份的服务通过某种特征的流量,对目标服务、目标服务的特地接口或特点端口的访问,保证分布式云原生环境的应用安全。
应用安全基础设施提供透明安全
服务网格为分布式云原生提供的基础设施形态的全域的应用安全能力,部署在分布式云原生平台上的应用代码不感知也无需做任何安全相关的修改。
7. 分布式云原生应用运维
服务网格拦截流量,代理业务生成各种可观测性数据请求的访问日志、调用链、访问指标等。通过对接分布式云原生平台的监控后端,运维人员通过服务访问的响应时间、流量、错误率等指标能全面地描述服务在分布式环境下总体的运行情况、健康状态等。基于服务间的访问指标生成微服务的应用访问拓扑,直观地观察分布式环境下的服务间的依赖,了解服务间的吞吐、延时等信息,观察服务跨集群访问、版本粒度、实例粒度的流量情况。服务网格的非侵入调用链埋点,代替业务自动生成调用链信息,可以观察分布式云原生场景下复杂调用链路上每个阶段的调用关系,以及每个阶段的耗时和调用的详细情况,帮助运维人员定位定界应用问题。
UCS服务网格架构
UCS服务网格基于托管控制面,提供统一的服务模型和配置模型,使用标准数据面API管理各种透明的网格数据面。采用更解耦的架构设计,方便业务扩展、组件间调用和自身运维。解耦了对Kubernetes的依赖,不再局限于Kubernetes容器服务,使用统一的服务模型管理容器、VM和其他的服务形态;网格控制面和用户集群解耦,简化了总体控制面和数据面的网络要求,方便对混合云、跨Region的集群管理。同时以更透明的方式向用户提供服务,简化了控制面和数据面的升级,最终简化了用户的运维工作。
在该架构下,根据用户不断增长的应用层管理要求,应用服务网格在UCS产品中和网络服务、安全服务、应用性能管理服务配合,向用户提供全面立体的应用管理。通过各种不同数据面形态配合,在简化用户开发的前提下,提供透明、高性能的应用管理能力,和UCS分布式资源和应用管理一起,帮助用户打造“以应用为中心”的云原生基础设施。
统一的控制面
网格控制面通过统一的配置和统一的数据面协议管理各种不同的数据面,在数据面上执行统一的动作。包括:
• 统一的服务模型和服务发现机制。基于统一的服务注册中心管理网格内的服务,CCE Turbo、CCE Autopilot、UCS(On-Premises)、UCS(Multi-cloud)等容器环境、Proxyless以及虚拟机环境都采用统一的服务和服务实例定义。
• 统一的流量配置模型和标准的配置API。基于标准的流量策略、路由API管理网格内的流量。提供灵活的灰度分流、超时、重试、限流、熔断等;动态地对服务访问进行重写、重定向、头域修改、故障注入。API配置和数据面代理形态无关,API和和社区完全兼容。
• 统一的应用安全能力和标准的身份体系。基于SPIFFE框架对各种不同类型的负载提供统一的身份标识,提供与平台无关的身份,帮助跨异构环境和组织边界的服务互相身份识别。并自动进行服务身份认证、通道加密和细粒度授权管理。实现完整的面向应用的零信任安全。
• 统一的数据面能力和标准的数据面配置协议。基于中立、通用的标准xDS构建服务网格数据面API。网格控制面实现了API可以对标准的数据面下发策略。多种不同形态的数据面均支持xDS协议,支持基于xDS的统一管理。同一个流量策略在不同的数据面上呈现一致的行为。
• 统一的应用运维视图和标准的运维采集。对多种不同的数据面形态,提供统一的机制自动收集应用访问的指标、访问日志、调用链等可观测性数据,并提供统一运维视图,提供面向应用的智能运维,包括服务SLO定义、应用健康管理 、服务健康诊断 、应用拓扑、调用链等,进行故障定界、定位和洞察。
透明的数据面
基于生产中不同的用户场景和使用方式,ASM提供了多种形态的数据面。从作用位置看,数据面作用于网格入口、网格出口和网格内部服务间;从数据面形态看,支持代理模式,也支持无代理模式。从数据面工作模式看,ASM数据面支持Istio通用的Sidecar模式,也支持华为云独有的节点模式数据面。
• Pod级Sidecar:和Istio社区的形态完全兼容,在CCE Turbo、CCE Autopilot、UCS(On-Premises)、UCS(Multi-cloud)的Pod创建时自动注入。拦截Pod的入流量和出流量,执行管理面配置的各种流量策略。
• 节点级Sidecar: 网格数据面部署在每个节点上,代理节点上所有Pod的流量,相较每个应用独享一个代理的模型,可以大大减少代理的数量,进而减少总的代理资源开销。
• Proxyless:支持管理Proxyless形态的数据面,即业务直接对接网格控制面,执行控制面配置的流量规则。相比于Sidecar的形态,Proxyless在数据传输上有更好的性能,作为Proxy模式的一种有益补充,也正在获得越来越多的关注。
• 入口网关:和网格结合管理入口流量,当从外部访问网格管理的服务时,入口网关执行对目标服务的流量策略。同时入口网关支持多种入口特征的能力,包括持TLS终止、入口请求认证、范围授权等能力。
• 出口网关:和网格结合管理出口流量,通过配置将外部访问的出流量都转发到这个对外网关上,经由网关再访问外部服务。可以在这个网关处对出流量进行统一的管理。网格内部的普通负载部署的节点都不具有连通外部网络的能力,只开放出口网关的外部网络访问,可达到对外访问统一管控的目的。
结语
在本次大特性上线之际,我们惊喜地获悉到Istio本月(2023年7月)从CNCF毕业。华为云云原生团队从2018年开始积极参与Istio社区的活动,参与Istio社区的版本特性设计与开发,基于用户的共性需求开发了大量大颗粒特性。团队成员入选了每届Istio社区指导委员会,当前华为云云原生团队有2名指导委员会成员(全球仅8家公司13人),参与Istio社区的重大技术决策,持续引领了Istio项目和服务网格技术的发展。另外Maintainer 2名,Member 10+名,Pull Request 位于全球TOP 3,中国第一,Contributions TOP 3(2.3w+)。
在2月前(2023年5月),由华为云云原生团队和2位Istio社区指导委员会成员联合打造的权威、系统、详实的Istio书籍《Istio权威指南》重磅上市。书籍内容凝聚华为云云原生团队在Istio社区及产品领域耕耘多年的长期实践和宝贵经验。华为云CTO、CNCF CTO联合作序,Istio技术委员会(TOC)资深成员强力推荐,上市以来获得了技术圈的一致好评,帮助云原生和服务网格的从业者们了解Istio的原理、实践、架构和源码,推动Istio在生产环境的进一步大规模使用。
应用服务网格ASM(Application Service Mesh)作为华为云在2018年率先发布的全球首个Istio商用服务,一个高性能、高可靠性和易用性的全托管服务网格,服务了互联网、汽车、制造、物流、政府等多个行业的近千家客户,满足不同行业客户的业务诉求。当前作为UCS分布式云场景中面向应用的网络基础,为多云、混合云环境下的容器、虚拟机、Serverless、传统微服务、Proxyless服务提供统一的应用管理视图、零信任安全体系、全域一致的流量行为、多层次的服务韧性管理、智能的应用故障诊断和健康管理等能力。我们将继续将我们在服务网格和云原生方面的大量的社区技术积累、服务客户的产品解决方案的经验积累应用到我们的产品中。在分布式云原生场景下,我们基于服务网格提供的透明的应用层能力构建全域的应用流量管理,践行UCS的分布式应用管理理念,通过一致的云原生体验和使用方式将包括流量、韧性、安全等能力发放到用户需要的任何地方,进而加速用户业务上云和应用现代化改造,构建分布式云全域应用流量治理能力,支持企业的数字化转型和业务创新。
更多华为云应用服务网格ASM信息
关注容器魔方公众号
- 点赞
- 收藏
- 关注作者
评论(0)