【云驻共创】华为云大咖带你走进华为云应用服务网格ASM
华为云ASM是什么?
- 应用服务网格(Application Service Mesh 简称ASM) 是华为云,基于开源技术istio推出的服务网格平台。他深度,无缝对接了华为云的企业级集群服务kubernetes云容器引擎CCE在易用性,可靠性,可视化等方面进行了一系列增强,可为客户提供开箱即用的上手体验。
- ASM提供非入侵式的微服务治理解决方案,支持完整的生命周期管理和流量治理,兼容kubernetes和istio生态。功能包括负载均衡,熔断,限流等多种治理能力,并内置金丝雀,蓝绿灰度发布流程,提供一站式自动化的发布管理,ASM基于无入侵的监控数据采集,提供实时流量托福调用链等服务性能监控和运行诊断,构建全景的服务运行视图。
下面这张图就是ASM的整体架构。
可以看到最顶层是图形化控制台,它集成了当前主流的REST,gRPC通信协议,springboot开放框架等。
中间则是使用了istio作为中间运维管理的主要组成部分。包括服务发现,流量管理,身份管理,配置验证分发等功能。从这里也可以看到服务治理,灰度发布,流量监控等核心功能,都是基于开源的istio来实现的。
最底层则是实际运行服务的平台,这里其实可以分为三种,分别是CCE的容器集群,虚拟机集群,金属裸机集群。(这里的金属裸机属于一种服务器的专用术语:bare-metal )。
容器技术的魅力就在于无论底层运行平台是容器集群还是虚拟机,都可以很好的支持你项目的运行,真正的做到了业务项目和运行平台去耦合。
上图则是ASM和其他华为云服务的关系。
- 流量从弹性负载均衡ELB进来。
- 部署和运行放在CCE中。
- 容器的监控使用洞察引擎CIE
- 应用的管理运维使用AOM服务。
- 应用的性能管理,全链路追踪使用API。
功能特性
灰度发布
灰度发布功能提供了丰富的发布规则。
- 基于内容的灰度规则,发布支持基于请求内容,灰度规则可以配置header cookie等多种请求信息。
- 基于比例的灰度规则,发布支持基于流量比例灰度规则,根据权重比例分配流量。
- 金丝雀灰度流程:提供向导方式引导用户完成金丝雀灰度流程,包括灰度版本上线观察,灰度版本,运行配置灰度规则,观测访问情况切分流量等。
- 蓝绿灰度流程:提供向导方式引导用户完成蓝绿灰度流程,包括灰度版本上线观察,灰度版本运行,观测访问情况版本切换等。
- 无人值守灰度发布:配置灰度版本,灰度规则和触发条件,自动完成灰度发布流程。
流量治理
支持基于应用拓扑对服务配置负载均衡,服务路由故障注入熔断容错等治理规则。并结合一站式治理系统提供实时可视化的微服务流量管理,无侵入智能流量治理应用,无需任何改造,即可进行动态的智能路由和弹性流量的管理。
- 权重内容TCP/IP路由规则,实现应用灵活灰度发布。
- HTTP会话保持,满足业务处理持续性诉求。
- 限流熔断,实现服务间链路稳定可靠。
- 网络长链接管理,降低性能,资源损耗,提升网络吞吐量。
- 服务安全认证,认证,鉴权,审计等提供服务安全的保障基石。
可观察性
随着微服务架构的深入,服务链路的变长带来的是问题查询困难程度的增加:如何定位一条漫长的调用链到底什么地方出现问题?如何判断平台内部流量的情况?
这些问题最好的方式是用可视化的方式,让流量和链路一目了然。
安全
多服务的出现意味着多服务身份的出现,在服务之间的身份验证鉴权则是安全方面最需要解决的问题。ASM带给我们的主要有两大特性:
- 透明双向认证支持界面,基于拓扑配置服务间的双向认证。
- 颗粒度访问授权支持页面,基于拓扑配置服务间的访问授权。
多集群服务治理
ASM扁平网络支持多集群扁平网络数据面场景治理,用户不需要担心多集群会严重增加自己的管理压力。
网格数据面服务框架
ASM同步也提供了网格数据面的服务框架,包括了Spring cloud支持和Duboo支持。
兼容性和扩展
ASM也兼容自定义扩展和社区的各种插件:
- 社区版本兼容API完全兼容ISTIO
- 社区插件支持:tracing , prometheus , Kiali , Grafana
使用场景
场景1 服务灰度发布场景
这里就是一个实际中经常使用到的场景。
假定某个不可中断的服务需要升级版本V2,这个时候提前预制好可用实例,当灰度的版本上线之后,通过我们定制灰度规则用cookie的方式来匹配我们测试的流量进入我们灰度版本。
这个时候观察我们那些灰度版本的服务状态。如果灰度版本运行正常,那么则旧版本下线,如果灰度版本不正常,则灰度版本下线。在这个过程中能保证整个服务不受中断。
这个功能在电商金融等项目的更新上非常有价值。
场景2 服务流量管理价值
流量治理是一个非常广泛的话题,比如动态修改服务间的访问负载均衡策略;比如让一个服务的两个版本同时在线;比如说对服务进行保护,并发数、的限制和请求数的限制。
在实现这些功能的时候,是不需要修改任何应用代码的。
因此这样的实现方式也被叫做非侵入式的流量治理。
场景3 端到端的透明安全
将传统的单体服务拆分为微服务,虽然可以带来并发负载等性能的提升,但同时也会带来更多的安全性问题:中间人攻击,访问控制,审计等。而ASM则提供了默认的安全性:无需修改,即可保证应用程序和架构的安全。
- 纵深防御:与现有的安全系统结合并提供多层防御。
- 零信任网络:在不受信任的网络上构建安全解决方案。
场景4 服务运行监控
把运行的基础设施升级为容器化之后,新的运维挑战也增加了。更多的容器意味着更多的管理节点,我们需要对这些节点进行评估,及时识别出基础设施中有害出问题的部分。同时这些行为又不能带来我们服务上的延迟。
而华为应用服务网格为网格内的所有服务生成详细的遥测数据。这种遥测技术提供了服务间行为的可观察性,允许运营商对应用程序进行故障排除维护和优化。而这样的功能对于开发人员来说是透明的。不会给开发人员造成任何额外负担。
遗留的微服务框架的快速迁移方案。
华为应用服务网格也提供了传统的微服务架构如何快速迁移到现在容器架构的方案。通过剥离原有的注册中心,并且逐步将服务治理的功能转移到envoy上。这样SDK作为开发框架就只提供业务开发框架和业务协议方面的功能。
实际操作和演示
下面让我们实际上使用ASM。
首先必须要有华为CCE容器的集群。
搜索关键字asm则可以进入到应用服务网格页面。
购买完成后,可以看到上面的标识变成蓝色。
这里从工作负载可以看到我们相关的ISTIO负载(也就是ASM的服务负载),已经安装完成了。
为了让我们测试的demo可以提供访问,所以我们需要先创建负载均衡。
点击购买选择自己合适的配置即可。如图已经完成了。
这个时候我们点击一键体验,创建我们体验用工作负载。
最后点击屏幕中的访问地址。就可以访问注入了sidecar的容器项目了。
小贴士:当istio功能开启之后,同步的链路追踪功能流量监控等功能也会同步生效。但是这个时候需要稍等一会,等待系统采集完毕目标项目的性能指标才会显示。这里是有一定的时间间隔的。
体验灰度发布功能
点击创建。
在灰度发布服务那一栏,选择我们已经部署好的reviews服务。
进一步选择实例数目和镜像版本等。完成之后如下图。
接下去回到发布任务的细节,可以根据我们的要求选择匹配的模式。
这里我们先选择基于流量比例,但是如果想选择请求内容的话,可以点右边那个按钮。完成之后如下图。
经过一段时间观测之后,觉得新版本可以运行,可以勾选页面上的接受所有流量按钮。完成这一次灰度发布。这也就完成了从旧版本到新版本的不间断服务升级过程。
体验流量治理
点开具体想治理的服务之后,看右侧栏有治理细节都比较简单。
也包括熔断配置,故障注入等功能。
总结
经过我们对华为ASM的初步使用,已经可以看到了华为应用服务网格这项服务的强大功能和便利性。
以往需要项目中耦合大量服务治理代码的熔断,限流这些高级功能,现在只需要在控制台配置一下,输入几个参数,就可以实现。有一种“旧时王谢堂前燕,飞入寻常百姓家”的感觉。使用华为云技术的开发人员和运维的人员的工作压力已经肉眼可见的降低了,这让我们更加期待华为云下一个产品。
ASM是一个好的起点,但一定远远不是终点。
【原视频地址】https://bbs.huaweicloud.cn/live/edu_live/202203251900.html
本文整理自华为云社区【内容共创】活动第15期。
https://bbs.huaweicloud.cn/blogs/345822
任务5:华为云大咖带你走进华为云应用服务网格ASM
- 点赞
- 收藏
- 关注作者
评论(0)