开发者学堂课程【微服务应用如何实现无损上下线:微服务应用如何实现无损上下线】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/974/detail/14895
微服务应用如何实现无损上下线
(6) Mse 无损上线的产品化的能力:
正常发布上线的实例的流量,随时间缓慢增加,用到了就绪检查关联服务预热,在服务预热之后,可通过。
通过修改服务的预热模型,预热时间两个图是一样,大约两分钟,但是此图,刚开始应用启动时候流量增加的更缓慢,下图高阶的预热模型更适合复杂的场景。
Mse 实现应用无损上下线的最佳时间 demo 进行演示
前提条件:
开启MSE微服务治理
(1).已创建Kubernetes集群,请参见创建Kubernetes托管版集群。
(2).已开通MSE微服务治理专业版,请参见开通MSE微服务治理。
准备工作:
本实践所使用的 Agent 目前还在灰度中,需要对应用 Agent进行灰度升级,升级文档:
https://help.aliyun.com/document_detail/392373.html
应用部署在不同的 Region (暂时仅支持国内 region )请使用对应的Agent 下载地址:
http://arms-apm-cnbeijing.oss-cn-[regionid].aliyuncs.com/2.7.1.3-mse-beta/,注意替换地址中的 [regionld] ,regionld 是阿里云 regionld,
例如Region北京Agent地址为:
http://arms-apm-cn-beijing.oss-cn-beijing.aliyuncs.com/2.7.1.3-mse-beta/
演示:
1. 需要mse 专业版的ack 集群。
2. 灰度升级 ack 集群应用 Agent
(1) 登录容器服务控制台,在左侧导航栏单击集群。
(2)在集群列表页面单击目标集群名称。
(3)由于当前ack 集群没有pllot 实例,所以应对ack 集群进行 pllot Agent的灰度升级;
左侧导航栏选择工作负载>无状态,然后选择命名空间,然后选择 mse-pllot
假如是最新的用户去创建 ack 集群开通 mse ,可能命名空间名字是 ack-onepllot。
步骤:在集群详情页面,左侧导航栏选择工作负载>无状态,命名空间选择ack-onepilot,
(4)选择命名空间后,可以看到界面有pllot实例(ack-onepllo-tack-onepllot),点击编辑
(5) mse 的配置 Agent 的灰度(pllot 增加新下载的 Agent 环境变量) 然后单击右上方的更新。
变量名称:ARMS_INIT_ARMS_AGENT_DOMNLOAD_URL
变量值:edas-public.oss-cn-hangzhou.aliyun.com/xxxxxx/
下载地址:
应用部署在不同的 Region (暂时仅支持国内 region )请使用对应的Agent 下载地址:
http://arms-apm-cnbeijing.oss-cn-[regionid].aliyuncs.com/2.7.1.3-mse-beta/,注意替换地址中的 [regionld] ,regionld 是阿里云 regionld,
例如Region杭州Agent地址为:
http://arms-apm-cn-Zhangjiakou.oss-cn-Zhangjiakou.aliyuncs.com/2.7.1.3-mse-beta/
(6)灰度升级 ack 集群应用 Agent完成:
2.部署应用实例
(1)拷贝文件内容
(2)使用 yaml 直接创建
(3)创建成功
(4)介绍应用架构:
由 Zuul网关以及后端的微服务应用实例(Spring cCloud)微服务调用链路构成。
网关会分别向A应用的正常版本或灰度版本定时发送流量 ,灰度版本流量从SC_A 到 SC_B 到 SC_C ;正常版本流量从 SC_A 到 SC_B 到SC_C;
在正常版本里,demo 会从未达标的版本 SC_B 的无损上线关掉,在进行定时扩缩容时,可以在 SC_A 的可观测的页面看到有流量的损耗,然后 SC_ C 也做了定时扩缩容,为了演示应用上线过程中的服务预热相关功能。
3.Demo的实际效果:
针对其中的 SC_B 应用和 SC_C 应用,都开了相应的定时扩缩容,模拟应用的上下线过程
(1)演示Demo的ploot在阿里云服务ack 中创建好后
在mse 控制台观察应用是否都正常接入mse,查看应用 mse 中应用接入的情况可通过 mse 的微服务治理中心->应用列表
(2)接入到 mse 当中的应用情况,从列表里面看到有五类应用
第一个是 Spring-Cloud-zuwl,是一个实例;符合我们预期。
第二个和第三个,是应用 Spring-Cloud-A 和Spring-Cloud-B ,都部署了两个不同的版本,每个版本有两 pllot ,一共4个,也符合预期。
Spring-Cloud-C 只有一个版本,两个实例,也符合预期。
Nacos_server
应用能正常接入 mse 微服务应用治理中心
(3)无损下线的相关功能:
对Spring-Cloud-B的未达标版本关闭了无损下线的功能,所以理想的情况是在 Spring-Cloud-A 应用的 qps 中看,可以看到请求下游的过程中会出现流量的损失。
在 mse 控制台看是否符合预期。
因为 Spring-Cloud-B 的应用不停的定时扩缩容模拟无损下线的效果,在 Spring-Cloud-A 调用Spring-Cloud-B 未达标的版本的过程中,会出现请求报错,但是灰度版本开启了无损下线的功能,所以上游的 Spring-Cloud-A 调用下游 Spring-Cloud-B 的过程中没有流量的损耗,验证无损下线功能生效。
对比来看,因为 Spring-Cloud-C 开启了无损下线功能,可以看 Spring-Cloud-B调用 Spring-Cloud-C 的过程中是否会出现流量有损。通过应用的观测页面可以看到,因为 Spring-Cloud-C 开通了无损下线的功能,所以上游调用下游的过程中没有流量损耗。
无损下线功能演示结束,无损下线在 mse 里面就是只要接入 mse 的应用,是给应用默认开启了无损下线功能。
(4)mse无损上线的功能:
通过微服务治理中心的无损上下线的菜单栏,进入界面。
界面的左侧,是接入mse应用的列表。
在选择具体的应以后,右上角是应用的无损上线的配置栏。
点击配置的按钮,可以做配置,配置是无损上线的小流量预热的预热时长,预曲线,延迟注册时间的参数设置,服务注册关联k8s的就绪检查以及服务预热关联k8s就绪检查等等的配置。
在进入之后有提供默认的配置,默认的配置通过开关开启之后,默认的配置会生效,如果开关接入,默认关闭,尽管这些默认配置有值,但是无损上线的功能没有开启。
当前应用的哪些事件完成统计的可观测图,因为应用一直在模拟上下线过程,实际有服务注册,还有无损下线的事件的条形图,其他几个功能,对Spring-Cloud相关的功能没开启,主要通过
Spring-Cloud-C的这个应用去模拟应用的无损上线的过程,
Spring-Cloud-C预热时间是120秒,预约曲线2次,因为无损上线小流量预热是通过在消费端的利用特定的预约小流量均衡算法进行流量再分配,因此使用小流量预热功能,需要把这个上游的消费者的无损上线的配置总开关开启,观察Spring-Cloud-C应用启动过程中,流量是否符合小流量预热曲线的效果;
通过可观测的列表,可看到Spring-Cloud-C的应用实例一直在重启,应用ip和pid,然后每一条分别代表一个pllot的事件以及这些事件发生的过程中的QPS 的值,在不断重启的过程中,可以看到QPS 符合预热效果,预热时间大概是两分钟。
无损上线相关功能结束。