云原生应用——CDN场景下的自动化评测

云计算 云原生
云原生的核心是云原生应用。云原生架构是云原生应用的架构,云原生方法论是实现云原生应用的方法论,云原生体系就是构建、发布、运行云原生应用的理论、方法、工具、环境、流程、文化等等。CDN应用具备以下云原生特性:可以通过网络访问、远端部署执行、可扩展弹性伸缩、共享、按需使用自主服务、高可用、可远程监控计费升级、标准化交付与位置无关等,因此适用于云原生改造和迁移。

Part 01、什么是云原生下的CDN

CNCF对云原生(Cloud Native)的定义:

  • 云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。
  • 云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API。
  • 这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。
  • 结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统作出频繁和可预测的重大变更。

​CDN是广义边缘计算已落地的典型应用,通过边缘服务节点下沉,内容更贴近用户,有效改善业务感知。通过CDN的云化改造,释放边缘服务节点计算资源,提供容器管理技术为第三方应用落地边缘,提升资源利用率。

主要应用场景为三类:网页加速、下载加速、视音频点播/直播加速。

云原生CDN系统主要包括云化边缘节点以及边缘云平台和配套的云管平台。云管平台主要提供资源池管理、资源管理、辅助运营管理、流程管理、运维管理等功能,边缘云平台主要提供容器化部署环境,并可根据业务需求满足存储、网络、CPU、内存等资源的管理和分配。

图片


Part 02、测试工具选型

图片

云原生CDN测试的一大难点在于构建云原生测试场景难度高、测试时间长。阿里巴巴开源的Chaosblade--一个简单易用且功能强大的混沌实验实施工具,除了基础的CPU、disk、I/O、network外,还支持docker、dubbo、jvm的攻击,同时支持攻击后迅速回滚,是在k8s部署方式下最优方案,正好可以帮助我们构建丰富的云原生CDN的测试场景。

Chaosblade支持丰富的实验场景:

  • 基础资源:比如CPU、内存、网络、磁盘、进程等实验场景;
  • Java应用:比如数据库、缓存、消息、JVM本身、微服务等,还可以指定任意类方法注入各种复杂的实验场景;
  • C++应用:比如指定任意方法或某行代码注入延迟、变量和返回值篡改等实验场景;
  • Docker容器:比如杀容器、容器内CPU、内存、网络、磁盘、进程等实验场景;
  • 云原生平台:比如Kubernetes平台节点CPU、内存、网络、磁盘、进程实验场景,Pod网络和Pod本身实验场景如杀Pod,容器的实验场景如上述的Docker容器实验场景;

​针对云原生平台,chaosblade-operator遵循混沌实验模型规范化实验场景,把实验定义为Kubernetes CRD资源,将实验模型映射为Kubernetes资源属性,很友好的将混沌实验模型与Kubernetes声明式设计结合在一起,依靠混沌实验模型便捷开发场景的同时,又可以很好的结合Kubernetes设计理念,通过kubectl或者编写代码直接调用Kubernetes API来创建、更新、删除混沌实验,而且资源状态可以非常清晰的表示实验的执行状态,标准化实现Kubernetes故障注入。

综上所述,我们可以使用chaosblade-operator构建云原生CDN的测试场景,提高云原生CDN的测试效率。

Part 03、故障注入

评测云原生CDN平台的业务高可用和流量调度功能,需要在各类异常场景下验证业务访问的连续性与正确性。根据上文调研,我们使用chaosblade-operator混沌工具来实现异常场景的故障注入。具体使用方式如下:

1.下载安装chaosblade-operator

helm install --namespace kube-system --name chaosblade-operator chaosblade-operator-0.10.0-v2.tgz

根据上述命令,chaosblade-operator会被安装至kube-system命令空间下。chaosblade-operator启动后会在每个节点部署chaosblade-tool Pod和一个chaosblade-operator Pod。

2.查看安装结果

kubectl get pod -n kube-system -o wide | grep chaosblade

如果显示chaosblade-operator和chaosblade-tool Pod都处于Running状态,则说明部署成功。如果部署出现问题,可以查看chaoblade部署文档。

3.识别故障注入的类型、故障输入值、故障node名称、故障持续时间等参数。

故障类型包括:CPU、内存、磁盘、网络断开、节点挂掉。

图片

4.根据识别的故障注入参数,执行故障注入命令(达到持续时间后自动销毁),如:

blade create k8s node-cpu fullload --names ${node节点名称} --cpu-percent ${故障输入值} --kubeconfig ~/.kube/config --timeout ${故障持续时间}

5.返回故障注入结果,故障注入成功

{"code":200,"success":true,"result":"beeaaf3a7007031d"}

Part 04、工具集成 

解决了云原生测试场景构建的难题,接下来就是将工具与云原生CDN业务结合,研发一套云原生CDN自动化测试平台,进一步提高测试效率。云原生CDN自动化测试平台的整体设计流程如下:


图片


自动化的主要内容包括模拟业务访问、分析业务日志、故障注入。

  • 第一步:模拟业务访问,在云原生CDN节点生成业务日志;
  • 第二步:获取业务日志并进行分析,得到相关业务指标,如状态码、命中状态、节点IP等;
  • 第三步:使用chaosblade工具进行故障注入;
  • 第四步:继续模拟业务访问;
  • 第五步:获取并分析业务日志,将得到的业务指标与故障注入的指标进行对比分析,判断结果是否与预期相同,得到故障注入给业务带来的影响。

通过该云原生CDN自动化测试平台,我们可以有效地对CDN业务的调度、内容管理、分发安全等相关功能进行测评,降低测试难度,提高测试效率。最终的云原生CDN自动化测试平台界面如下:

图片

Part 05、总结

结合混沌工程技术,我们可以快速地构建云原生的各类测试场景,降低云原生平台测试难度。该云原生CDN自动化测试平台已应用于日常版本与试点测试中,整体提升测试效率40%,保障了CDN业务虚拟化迁移的质量。目前,杭研vCDN能力已达到行业水平,基于vCDN的边缘能力已落地16个省份,承载家庭安防、VR、OTT等to H业务和现网to B、to N业务,服务用户数超千万。

责任编辑:庞桂玉 来源: 移动Labs
相关推荐

2021-06-22 10:31:38

云计算自动化云原生

2021-10-26 10:52:51

Serverless 云原生应用编程

2021-07-27 10:55:47

云计算

2015-09-01 11:22:26

公有云自动化部署水平扩展

2015-03-12 10:13:24

对公有私有IAASPaaS

2010-07-26 09:53:08

Perl多进程

2013-06-19 14:50:14

云计算

2021-04-28 16:49:27

自动化设备制药

2019-08-22 09:25:54

云安全云原生Fortinet

2015-02-04 09:17:38

亚马逊AWS云自动化

2017-04-21 07:41:37

iOS自动化测试容器

2020-07-17 10:54:43

云计算混合云IT

2011-11-22 08:21:55

云时代 服务编排

2013-07-23 09:19:53

云服务器迁移云迁移云迁移工具

2010-10-14 17:16:01

惠普云计算BSA9.0

2021-06-30 19:48:21

前端自动化测试Vue 应用

2020-01-16 10:25:16

云计算云治理IT

2022-02-23 12:21:09

自动化云计算基础设施

2013-03-13 11:34:05

自动化测试Selenium.Net测试

2014-08-04 17:30:57

自动化运维puppet
点赞
收藏

51CTO技术栈公众号