九大云原生产品之华为云ASM应用服务网格
课程目标
学完本课程后,您将能够:
了解服务网格技术与发展趋势
了解华为云ASM产品功能
前言
从前序课程,我们了解了lstio服务网格的基础架构和用法和相关实践。包括网格控制面架构、数据面架构、网格的流量和监控、网格和传统微服务框架融合解决方案等内容。
在本节我们将介绍网格技术的业界发展,并重点介绍华为云应用服务网格ASM服务,并演示其能力。
华为云云原生基础设施产品解决方案全景图
华为云应用服务网格(Application ServiceMesh,简称ASM)是一种高性能、高可靠性和易用性的全托管的服务网格,支持虚拟机、容器等多种基础设施,支持多云混合云多集群服务的统一治理。以基础设施的方式为用户提供应用层的服务管理,包括服务流量管理、服务运行监控、服务访问安全以及服务发布能力。ASM控制面和数据面均和开源lstio完全兼容,无缝对接华为云的企业级Kubernetes集群服务云容器引擎(Cloud Container Engine,简称CCE),可为客户提供开箱即用的上手体验。
适用场景
通常产品优化迭代的方式,是直接将某版本上线发布给全部用户,一旦遇到线上事故(或BUG),对用户的影响极大,解决问题周期较长,甚至有时不得不回滚到前一版本,严重影响了用户体验。
灰度发布是版本升级平滑过渡的一种方式,当版本升级时,使部分用户使用高版本,其他用户继续使用低版本,待高版本稳定后,逐步扩大范围把所有用户流量都迁移到高版本上面来。
价值
应用服务网格为应用治理提供多种灰度发布功能,在初始灰度的时候可以发现、调整问题,以保证其影响度和整体系统的稳定,稳定高效地推动企业应用的迭代升级。
优势
- 内置灰度流程:基于细粒度的分流规则,在ASM中内置了多种典型的灰度发布流程,提供一个灰度发布的向导,方便用户便捷的进行灰度发布实践。在一个服务版本正常工作,正常处理流量的同时,用户可以创建一个新的灰度版本。当灰度版本启动成功后,引导用户配置灰度规则来切分流量。
- 灵活的灰度策略:灰度规则可以是基于权重的按比例切分流量,也可以根据服务访问的内容来将特定内容的请求发往灰度版本,对于常用的HTTP协议,如请求中的OS、浏览器、Cookie和Header信息等,在配置了灰度规则后,可以实时的观察到多个线上版本的运行和访问信息,从而在向导中一键式完成版本选择,将所有流量都切换到最终选定的版本上。
- 自动化灰度:用户也可以将以上灰度发布流程进行自动化配置,从而实现无人值守的灰度发布。即只要灰度版本运行成功就会自动触发预制的灰度策略给灰度版本分配流量,在流量运行特定的时间后,根据预制规则自动的切换流量完成灰度发布。
- 应用灰度:除了服务粒度的灰度发布外,用户也可以对多个服务组成的应用,在入口服务处配置灰度规则,对一组服务使用同样的分流策略,进行灰度发布。
- 多集群上灰度:在多集群场景下,基于ASM灵活的分流能力,用户可以选择将灰度版本和生产版本部署在不同的集群,渐进的切分流量。这样不只是把开发和生产环境的流量打通,可以通过流水线配合将开发和生产的流程打通。
目录
1.服务网格技术现状与发展趋势
2.华为云ASM应用服务网格产品介绍与演示
第一代:服务治理能力内嵌在业务代码中强型技术:SOA、ESB
优势:简单使用依赖少
劣势:代码耦合;代码重复高;运维复杂;解耦差,开发要求高
第二代:服务治理能力抽象到统一SDK实现典型技术:Spring Cloud、Dubbo
优势:代码重复少;治理逻辑代码和业务代码分开
劣势:SDK语言绑定、代码侵入;基于SDK开发学习门槛高;在用系统改造代价大;治理能力升级影响用户业务
第三代:服务治理能力归一到服务网格
优势:独立进程,用户业务非侵入、语言无关;治理逻辑升级业务无感知;可以渐进的微服务化
劣势:代理的性能和资源开销
从服务治理与业务逻辑解耦,服务治理能力下沉到基础设施层到服务网格以基础设施的方式提供无侵入的连接控制、安全、可监测性、灰度发布等治理能力
Istio提供了一个完整的解决方案,通过为整个服务网格提供行为洞察和操作控制来满足微服务应用程序的多样化需求。
Kubernetes提供了部署、升级和有限的运行流量管理能力,但并不具备熔断、限流降级、调用链治理等能力。Istio是基于Kubernetes构建的开放平台,它很好的补齐了Kubernetes在微服务治理上的诸多能力。
想要让服务支持Istio,只需要在您的环境中部署一个特殊的Sidecar代理,使用Istio控制平面功能配置和管理代理,拦截微服务之间的所有网络通信:
- 实现HTTP、gRPC、WebSocket和TCP流量的自动负载均衡。
- 通过丰富的路由规则、重试、故障转移和故障注入,可以对流量行为进行细粒度控制。
- 可插入的策略层和配置API,支持访问控制、速率限制和配额。
- 对出入集群入口和出口中所有流量自动度量指标、日志记录和追踪。
- 通过强大的基于身份的验证和授权,在集群中实现安全的服务间通信。
Istio旨在实现可扩展性,满足各种部署需求。
lstio整体设计理念与核心特性:非侵入式治理、标准化接口、与K8s天然融合
核心理念:
1.非侵入式Sidecar注入技术,将数据面组件注入到应用所在的容器,通过劫持应用流量来进行功能实现,应用无感知。
2.北向API基于K8s CRD实现,完全声明式,标准化。
3.数据面与控制面通过xDS gRPC标准化协议通信,支持订阅模式。
核心特性:
1.服务&流量治理:熔断,故障注入,丰富的负载均衡算法,限流,健康检查,灰度发布,蓝绿部署等
2.流量与访问可视化:提供应用级别的监控,分布式调用链,访问日志等
3.安全连接:通过mTLS、认证、鉴权等安全措施帮助企业在零信任的网络中运行应用
在Google、IBM、RedHat等开源巨头成熟的项目运作与社区治理机制下快速发展:
lstio作为第二代Service Mesh技术,通过基于K8s标准扩展的控制面带来了前所未有的灵活性及扩展能力,影响力远超更早出现的Linkerd
lstio背负巨大的使命,Google希望在继Kubernetes成为容器编排的事实标准之后,打造另一杀手锏级别的技术,成为服务网格的事实标准
Google与IBM大厂的加持,在资源及影响力层面远非Buoyant可比拟的
华为云等众多厂商参与lstio社区,共同推进繁荣
从企业级可用的1.1版本之后,社区每隔3个月发布一个大版本
成立Steering Committee,社区的运作、治理更加透明
已贡献多个大颗粒特性:
1.增量EDS,单控制面多集群
2.基于位置的负载均衡
3. Sidecar服务隔离
4.虚拟路由级联
5. Headless服务支持
6.催熟VM服务治理
7.增强负载均衡策略
lstio社区路标与技术趋势:围绕多云、高性能、高安全加速构筑企业级能力
场景及用户生态:
多云混合云:满足用户异地容灾,高可用需求
混合部署:持续催熟VM支持,构建Kubernetes集群与VM应用混合服务网格,提供传统用户渐进式迁移能力
内核层:
多协议扩展:QUIC等UDP协议在某些低延迟场景应用广泛,扩展社区生态
大规模:降低控制面、数据面内存、CPU开销,提高xDS推送效率
安全性:支持私有CA,授权服务的集成
多租:提供天然的租户隔离能力,降低服务干扰,提高安全性
数据面:
高性能:打造数据面高性能、低延迟
覆盖全应用形态,支持容器、虚机、边缘、传统微服务、第三方服务等多种应用平滑接入、统一治理。支持多云、混合云复杂场景多种网络条件下服务跨集群流量混合管理;大规模网格,支持XX个网格数据面;提供智能运维、智能扩缩容,帮助用户自动透明的管理应用访问。
高性能、低损耗、轻量、多形态网格数据面,支持每POD、每Node.卸载形态,加快Sidecar转发效率,Sidecar每跳延时不大于XX。灵活拓扑学习进行配置优化,优化网格控制面资源。
1、流量
扩展社区流量规则VirtualService的定义,支持复杂入口流量定义,解决流量规则在复杂场景下规则耦合、冗余导致灰度发布等不能按照微服务粒度进行配置等问题
2、可靠性、可维护性
控制面支持跨AZ部署
提供托管控制面,减少用户运维负担
3、协议扩展
扩展对Dubbo协议的服务治理能力;提供和SpringCloud等微服务SDK的结合方案
4、混合部署
虚拟机应用和容器应用混合部署的统一治理
5、可观察性
华为专业云服务开箱即用,提供端到端智能全局的监控、日志、拓扑、调用链
6、灰度发布
内置多种灰度发布流程,金丝雀/蓝绿,提供了一站式灰度发布平台。支持流量比例、请求内容(Cookie、OS、浏览器等)、源IP。
7、跨集群治理
多云混合云场景全局统一服务治理,支持多种基础设施(多容器集群/容器-虚机/虚机-物理机)的统一服务治理,跨集群的灰度、拓扑、调用链。
8、大规模
高密度,大规模服务实例统一治理
9、数据面
社区的每Pod Sidecar部署外,支持每节点Sidecar部署;网格数据面性能优化;规划支持数据面卸载,数据面对用户不可见
10、网格升级
控制面数据、数据面一键升级,数据面随业务滚动和独立升级。
11、网格运维
多种网格自身运维能力,如动态短路Proxy等数据面运维能力,帮助故障场景定界定位和生产环境数据面运维
12、社区和开源
lstio社区贡献全球排名第三,快速解决社区版本问题和需求。大客户需求快速落版本,并提及社区主干,和社区兼容。
13、专家服务
基于ASM服务网格完整的云原生微服务解决方案和专家服务支持。
灰度发布全流程自动化管理:
灰度版本一键部署,流量切换一键生效
配置式灰度策略,支持流量比例、请求内容(Cookie、OS、浏览器等)、源IP
一站式健康、性能、流量监控,实现灰度发布过程量化、智能化、可视化
多策略、多粒度、多流程、多模式、多环境
统一控制治理策略,实时监控应用流量
全面统一运维视图:入口和内部服统一运维视图;多集群统一运维;数据库、消息等中间件统一运维;容器、VM等多种基础设施统┐
全流程智能运维:基于SLA的智能弹性扩缩容;0侵入调用链埋点;服务运行告警;服务健康画像
有效故障分析手段:拓扑服务下钻到版本;拓扑下钻到服务实例;关联服务的访问指标;关联服务调用链;关联调用链对应的日志信息
全场景实时治理:实时监控数据生成;安全配置实时可见;熔断、灰度等治理效果实时可见。
业务高密度场景特征
- 集群高密度
应对容灾/多活,跨云、多云多集群部署,密度大幅增加
- 服务高密度
单体服务拆分解耦,服务数量骤增,维护成本显著提高
- 实例高密度
高服务密度和高实例密度带来的调用量指数级增长,量级大、流量观测和问题定位分析难度大
高密度、大规模场景解决方案
>自动访问拓扑识别,动态分发需要的配置信息
>优化合并冗余配置信息,降低内存耗用
>自动配置细粒度隔离:命名空间隔离、服务调用隔离
>单网格XX实例统一治理
微服务SDK框架和网格结合,无需修改业务代码,修改配置逐步剥离原SDK包到Envoy
控制面:使用ASM统一的控制面做服务发现和治理规则管理。SDK不需要独立的注册中心和配置中心。
数据面:服务发现、负载均衡、和各种治理都在ASM数据面Envoy上执行,SDK作为开发框架,提供业务开发框架和业务协议。
网络数据面性能优化:
1.透明代理资源占用大
2.CPU资源未被充分发挥
3.缺少结合硬件优化能力
4.存在mesh调用连接不均衡问题
5.大规模集群下与控制面长连接较多,配置变更可能不一致
6.监控上报分散信息冗余
7.运维安全性无法保证
ASM优化:
- 端到端tp90时延降低XX%,qps提升XX%
- 数据面代理硬件卸载,保证数据及运维安全
- 内存占用降低XX%
- 硬件加速,提升代理效率
- 保障高优先级业务代理效率
结合实际产品主要功能介绍,包括网格服务管理、灰度发布、流量治理、流量监控等。
演示跨集群的灰度发布功能,包括灰度过程,灰度后拓扑、调用链等功能。
价值
应用服务网格为应用治理提供多种灰度发布功能,在初始灰度的时候可以发现、调整问题,以保证其影响度和整体系统的稳定,稳定高效地推动企业应用的迭代升级。
优势
- 内置灰度流程:基于细粒度的分流规则,在ASM中内置了多种典型的灰度发布流程,提供一个灰度发布的向导,方便用户便捷的进行灰度发布实践。在一个服务版本正常工作,正常处理流量的同时,用户可以创建一个新的灰度版本。当灰度版本启动成功后,引导用户配置灰度规则来切分流量。
- 灵活的灰度策略:灰度规则可以是基于权重的按比例切分流量,也可以根据服务访问的内容来将特定内容的请求发往灰度版本,对于常用的HTTP协议,如请求中的OS、浏览器、Cookie和Header信息等,在配置了灰度规则后,可以实时的观察到多个线上版本的运行和访问信息,从而在向导中一键式完成版本选择,将所有流量都切换到最终选定的版本上。
- 自动化灰度:用户也可以将以上灰度发布流程进行自动化配置,从而实现无人值守的灰度发布。即只要灰度版本运行成功就会自动触发预制的灰度策略给灰度版本分配流量,在流量运行特定的时间后,根据预制规则自动的切换流量完成灰度发布。
- 应用灰度:除了服务粒度的灰度发布外,用户也可以对多个服务组成的应用,在入口服务处配置灰度规则,对一组服务使用同样的分流策略,进行灰度发布。
- 多集群上灰度:在多集群场景下,基于ASM灵活的分流能力,用户可以选择将灰度版本和生产版本部署在不同的集群,渐进的切分流量。这样不只是把开发和生产环境的流量打通,可以通过流水线配合将开发和生产的流程打通。
总结
本课程介绍了网格的发展历程、趋势和当前现状,网格的标准实现lstio的原理和项目进展。并通过功能演示,详细介绍了华为云应用服务网格的功能、架构和重要特性。ASM是基于lstio的企业级云服务,是一种高性能、高可靠性和易用性的全托管的服务网格,支持容器、虚拟机等多种基础设施支持跨区域多云多集群服务的统一治理。以基础设施的方式为用户提供服务流量管理、服务运行监控、服务访问安全以及服务发布能力。
参考链接
流量治理: https://support.huaweicloud.com/usermanual-asm/asm_01_0011.html
流量监控: https://support.huaweicloud.com/usermanual-asm/asm_01_0012.html
lstio官方网站: https://istio.io/
ASM应用服务网格官方首页:https://support.huaweicloud.com/asm/
- 点赞
- 收藏
- 关注作者
评论(0)