作者:风起
背景
随着互联网的快速发展,互联网衍生出来的多种工具、服务早已融入我们工作、生活的每个角落,因此互联网服务的稳定性也愈加重要,如网络挂号问诊、网上政务办理、网络消费娱乐等更是与大家的生活息息相关。而性能测试作为验证服务稳定性的重要手段也日益受到互联网服务提供商的重视。
目前业界主流的性能测试工具均是从公共网络发出性能测试请求,模拟公网流量,这无疑能够尽可能模拟用户使用互联网服务时的真实流量,然而这种方式也存在一些问题,如:
- 带来额外的性能测试费用,公网流量从客户端到服务端的过程中,经由多个运营商网络,会产生额外的流量带宽费用,对于大规模性能测试,流量费用更是会远超性能测试过程中的机器成本
- 无法测试对安全性要求较高的服务,如金融、保险、数据存储等业务若开放公网访问,可能会带来数据泄露等安全问题,因此无法从公网发起性能测试
- 带来部署、改造成本的上升,当服务仍然在开发过程中时,服务在开发过程中可能需要频繁地性能测试并根据性能测试结果来调整服务,该情况不适合开放公网访问,因此无法从公网发起性能测试
针对以上问题,本文介绍了在阿里云 VPC 内网执行性能测试的方法。相较于传统的公网性能测试,VPC 内网性能测试完全在客户 VPC 环境进行,无需暴露服务到公网,安全性更高,且用户可通过 VPC 自定义路由表,打通本地数据中心形成混合云架构,具备更强的灵活性,此外更是可以在微服务开发阶段,针对 VPC 内网的每个微服务执行性能测试,可以大幅提升性能测试的效率,节省性能测试成本。
什么是阿里云 VPC 专有网络
首先,介绍下什么是阿里云 VPC 专有网络(也称 VPC 内网)。VPC 专有网络是您专有的云上私有网络。您可以完全掌控自己的专有网络,例如选择 IP 地址范围、配置路由表和网关等,您可以在自己定义的专有网络中使用阿里云资源,如云服务器、云数据库 RDS 和负载均衡等。
如下图所示,每个专有网络都由至少一个私网网段、一个路由器和至少一个交换机组成。
功能对比及特点
相较于经典网络在不同客户间是物理联通的,专有网络 VPC 具有安全可靠、灵活可控、灵活可用以及较强的可扩展性。
- 每个 VPC 网络对应一个虚拟化网络,VPC 间互相隔离
- 可以通过安全组规则、访问控制白名单等方式灵活地控制访问 VPC 内云资源的出入流量
- 可以在 VPC 内创建不同子网,同时也可以和本地数据中心或其他 VPC 相连,扩展网络架构
总的来说,VPC 内网是阿里云的基础网络设施,为客户部署在云上的服务提供了安全、联通的优势。
公网与 VPC 内网性能测试的区别
在了解 VPC 内网的基本特点后,介绍下公网性能测试与 VPC 内网性能测试的区别,从被测试服务的视角来看,两者的区别主要在于流量源头不同。
- 公网性能测试:流量源自公共网络,网络路由的过程中可能涉及到多个运营商网络设备
- VPC 内网性能测试:流量源自 VPC 内网,网络路由的过程中仅涉及 VPC 内网交换机,对外部网络不可见
因为两者的流量源头不同,因此两者的流量路由不同。公网性能测试流量会经由公共网络,而 VPC 内网性能测试流量只会在 VPC 内网流转。
VPC 内网性能测试适用场景
了解公网性能测试与 VPC 内网性能测试的区别后,什么情况下我们需要使用 VPC 内网性能测试呢?主要有以下几种场合:
- 服务对安全性比较敏感,无法开放到公共网络,如金融、保险等对安全性要求较高的业务
虽然在性能测试的过程中我们可以通过对施压机 IP 加白的方式隔绝其他公网访问,但 VPC 内网彻底隔绝公网方案,无疑提供了更强的安全性。
- 新服务研发过程中性能测试,需要简化网络环境对性能测试结果的影响,单独评估服务的性能。
当前微服务架构大行其道,在各个微服务研发阶段,可能都涉及到针对服务负载情况的性能测试,从而评估出每个服务的负载上限,这就需要能够快速在客户研发环境发起性能测试。而传统的公网性能测试需要客户将待测试服务开放到公网,带来安全隐患的同时,也提高了性能测试的执行成本。VPC 内网则能够完美解决该诉求,在开发阶段可快速发起针对微服务的性能测试。
- 评估阿里云 VPC 内网服务性能,如 RDS、MQ 等阿里云基础产品
RDS、MQ 等阿里云基础产品,作为客户服务的基础组件,往往也不会开通公网访问,因此针对这些组件的性能测试也必须在 VPC 内网进行。
- 节省性能测试带来的成本,相较于公网性能测试会产生大量的公网带宽费用,VPC 内网性能测试完全在 VPC 内网进行,服务不会产生额外的网络带宽费用。
公网发起性能测试时,对于被测试服务来说,会产生大量的公网带宽流程,从而带来大量的公网带宽费用,而 VPC 内网性能测试完全在客户 VPC 内网进行,因此相较于公网性能测试,测试成本大幅减小。
如何发起 VPC 内网性能测试
既然 VPC 内网性能测试有诸多好处,如何发起 VPC 内网性能测试呢?在这里推荐了解下阿里云性能测试服务 PTS[1]。
用户可在开通 PTS 服务后,前往购买页面购买内网压测资源包[2],最低仅需 29 元,即可购买 10 万 VUM 的资源包(支持 1 万并发测试 10 分钟),购买后进入 PTS 控制台,即可查看对应的资源包。
接下来,可根据压测需求,选择创建对应的性能测试场景,这里以 HTTP 协议为例,创建 PTS 压测场景,客户第一次进入场景编辑页,会提醒客户授予 VPC 访问权限,从而使 PTS 产品可以访问客户的 VPC 信息。在授权同意后,编辑场景基本信息,需要注意的是压测地址既可以填写公网域名,也可以填写内网 IP,但都需要保证对应的 IP 地址在交换机网段内,才可以通过交换机访问 VPC 内部服务。例如这里压测 ALB:
之后在压测来源中选择 阿里云 VPC 内网,需要注意的是这里的 region、VPC、安全组以及交换机信息必须与被测试服务保持一致:
之后发起调试以及启动测试即可,从调试结果中可以看到 VPC 内网的性能测试顺利进行。
VPC 内网性能测试的实现原理
为了方便理解 VPC 内网性能测试的使用,这里介绍下 VPC 内网性能测试的原理。在客户执行 VPC 内网性能测试前,需要满足以下条件:
- 客户开通 VPC 服务,并创建相应的 VPC 网络、交换机与安全组
- VPC 网络内启动服务端,并配置安全组规则确保服务在 VPC 网络内可访问
- 开通 PTS 服务并购买资源包,进入 PTS 控制台授权 PTS 服务访问客户的 VPC 服务权限,从而使被授权服务可以访问客户的 VPC、交换机、安全组等服务
在场景构建完成,发起 VPC 内网性能测试时,PTS 侧主要会执行以下几个步骤:
- 获取客户填写的 VPC 相关信息,在客户侧VPC内创建免费 ENI 弹性网卡[3]
- 将客户侧创建的弹性网卡挂载到 PTS 施压机上
- 在施压机上添加到客户交换机网段的路由,使施压机能够访问客户侧 VPC 内服务
- 配置路由规则,禁止访问公共网络,从而保障流量只从 VPC 内网发出
- 压测开始,按照客户配置发送请求
- 停止压测后,将弹性网卡从施压机上卸载并删除
多协议下的 VPC 内网性能测试
除了支持 HTTP 协议的 VPC 内网性能测试外,PTS 还支持其他协议以及对阿里云基础产品的性能测试,如 MQTT、Reids、MQ 等,欢迎进入 PTS 控制台体验对应功能。
VPC 内网性能测试最佳实践
在对服务执行性能测试时,从被测试链路的范围上来看可以简单分为单链路性能测试与全链路性能测试。
- 单链路性能测试:性能测试过程中仅覆盖一部分链路,测试范围相对精准,验证某条链路的稳定性;测试过程中参与人数较少,执行成本较低,可多次执行测试,充分验证。
- 全链路性能测试:性能测试过程中覆盖服务可能涉及到的所有链路,测试范围足够大,涉及到的上下游较多,从而保障能够从全局找到性能瓶颈点,验证全局的稳定性;测试过程中参与人数较多,是一个复杂的系统工程,执行成本较高,需要严格控制测试次数。
全链路性能测试成本较高,因此一般需要各个单链路多次性能测试通过后再执行全链路性能测试。由于单链路性能测试频率较高,建议在单链路性能测试过程中尽可能使用成本较低的 VPC 内网性能测试,节省性能测试成本;在所有单链路性能测试通过后,再配置服务,开放公网访问,通过公网下的全链路性能测试来验收所有服务链路。
VPC 内网压测-采购季价格特惠
现在购买内网压测资源包,相较于公网,更是可以大幅节省购买成本,成本只需要公网压测的 1/10 。
而且现在正值采购季,所有规格都打 95 折哦,还可以叠加官网优惠,心动不如行动,赶紧采购吧!
相关链接
[1] 阿里云性能测试服务 PTS
https://www.aliyun.com/product/pts
[2] 购买内网压测资源包
https://common-buy.aliyun.com/?commodityCode=pts_bag_dp_cn
[3] ENI 弹性网卡
https://help.aliyun.com/document_detail/58496.html
点击此处,购买内网压测资源包。