作者:赵佳佳
随着云原生技术的蓬勃发展以及云产品价格愈发低廉,越来越多 Geek 开发者、技术爱好者选择 OSS 对象存储、ECS 云服务器等基础产品构建自己的网站、网盘等应用。但对于企业而言,面对种类与规格的丰富的 ECS 云服务器,如何了解实例规格的关键特点,在库存不足、产品下线、使用抢占式实例等场景中,保障业务的稳定运行成为关键。
那么接下来,我们一起了解 ECS 云服务器如何选型并通过 PTS 进行容量规划,接下来我们将介绍三种不同的 ECS 选型方式。
01 结合实例规格参数进行选型
启动 ECS 实例前,我们会结合性能、价格、工作负载等因素进行配置选择。根据不同配置参数,ECS 提供包含多种不同实例规格的实例规格族。在实际使用过程中,我们可通过以下两种方式找到参数最合适的实例规格。
- 实例规格族[1]:查阅文档了解实例规格族的产品详情。
- DescribeInstanceTypes[2]:调用 ECS API 接口,获取最新的性能规格参数。
针对这种方式,我们需要了解实例规格的命名方式,以便我们能够快速了解并找到所需的实例规格。实例规格族名称格式为 ecs.<规格族>,实例规格名称为 ecs.<规格族>.<nx>large。具体命名规则说明如下所示:
- ecs:云服务器 ECS 产品代号。
- <规格族>:由规格族主体+规格族后缀组成。
- x86 计算规格族和 ARM 计算规格族
- 异构计算规格族、弹性裸金属服务器、超级计算集群(SCC)实例规格族异构计算规格族、弹性裸金属服务器和超级计算集群(SCC)实例规格族一般采用自主命名方式,由小写字母和数字混合组成。
- <nx>large:large 表示 vCPU 核数,<nx> 中的 n 越大,表示 vCPU 核数越多。其中,xlarge 代表 4 核,2xlarge 代表 8 核,3xlarge 代表 12 核等等,以此类推。
02 根据自建服务与应用进行选型
当企业选择服务上云的过程中,在采买各种云产品的同时,也会进行各种服务或应用自建,以便满足实际的业务需求。为了方便选型,我们总结罗列了常见自建服务与应用对应的 ECS 实例规格,可以根据企业所使用的应用,并参考选型原则,选择对应的实例规格族。
03 根据应用场景进行选型
除了根据直接参数以及自建应用与服务两种方式之外。在实际生产过程中,我们会发现很多业务场景不只是单一个服务或者应用就能满足的。同时,相关业务场景的附加要求也会相对复杂。
通用应用、游戏服务、视频直播场景
在通用场景中,性能需求表现为 CPU 计算密集型,需要相对均衡的处理器与内存资源配比,通常选用 CPU 与内存配比 1 : 2、系统盘选用高效云盘、数据盘选用 SSD 云盘或者 ESSD 云盘。如果业务需要更强的网络性能,如视频弹幕等,可选用同系列中更高规格的实例规格,提高网络收发包能力(PPS)。
Hadoop、Spark、Kafka 大数据场景
在 Hadoop、Spark、Kafka 大数据等场景中,由于涉及不同节点,性能需求表现较为复杂,需要均衡各个节点的性能表现,包括计算、存储吞吐、网络性能等。其中,管理节点、计算节点可当作通用场景处理。根据集群规模不同,需要选择不同实例规格。如 100 个节点以下可选用 ecs.g6e.4xlage,100 个节点以上可选用ecs.g6e.8xlage。同时,数据节点需要高存储吞吐、高网络吞吐、均衡的处理器与内存配比,可使用大数据型d系列规格族。如 MapReduce/Hive 可选择 ecs.d2s.5xlarge,Spark/Mlib 可选择 ecs.d2s.10xlarge。
数据库、缓存、搜索场景
在该类场景中,实例规格的处理器与内存配比一般要求高于 1 : 4,部分软件对存储 I/O 读写能力及时延性能较为敏感,可选用单位内存性价比较高的规格族。
以数据库为例,在传统方式中业务系统直接对接 OLTP 数据库,数据冗余大多通过 RAID 磁盘阵列实现。选择云服务器 ECS,轻载、重载数据库都能实现灵活部署。
- 轻载数据库:采用企业级实例规格搭配云盘使用,性价比更高。
- 重载数据库:需要高存储 IOPS 和低读写延时,推荐使用本地 SSD 型 i 系列实例规格族(搭配了高 I/O 型本地 NVMeSSD 本地盘),满足大型重载数据库要求。
深度学习、图像处理场景
在深度学习、图像处理等场景中,应用需要高性能 GPU 加速器,在 GPU 和 CPU 配比方面有如下建议。
- 深度学习训练:GPU 与 CPU 比例推荐为 1 : 8 到 1 : 12 之间。
- 通用深度学习:GPU 与CP U比例推荐为 1 : 4 到 1 : 48 之间。
- 图像识别推理:GPU 与 CPU 比例推荐为 1 : 4 到 1 : 12 之间。
- 语音识别与合成推理:GPU 与 CPU 比例推荐为 1 : 16 到 1 : 48 之间。
在以上场景之外,我们针对异构计算、通用计算总结了常见场景以及对应的规格实例,以便大家选择。
04 规格验证与容量规划
当完成选型并开始使用 ECS 云服务器实例后,对于实际业务而言这仅仅是开始。在实际业务中,在资源未成为瓶颈时,并发量、TPS、CPU 趋势呈线性关系,当资源利用饱和时,随业务并发量增长,TPS 趋势保持平稳状态, CPU 开始飙升。当资源利用饱和且并发量突破极限容量点时,TPS 趋势及 CPU 都出现波动,甚至容量开始雪崩,此时服务开始出现不可用现象。
因此,在选择合适的规格之后,服务稳定性、资源利用率、业务吞吐量成为新的考量与关注重点。不同团队角色关注重点不尽相同:
- 业务团队应关注:重要业务活动期间,容量是否可以平稳支撑业务量;
- 研发团队应关注:手动扩容、自动扩容、发布/回滚不被资源限制;
- 运维团队应关注:资源使用率、部门资源水位、资源用量及成本。
但传统基于人工经验的资源规格配置模式存在局限性,为了保障线上业务的稳定性,通常会预留相当数量的资源与量来应对负载波动,造成大量资源浪费。
因此,需要借助压测工具性能测试 PTS[3]验证 ECS 云服务器的规格选择是否正确,根据实际业务需求,通过容量分析、全链路追踪等方式探测云上系统的最佳安全容量点、极限容量点和破坏容量点并进行限流降级保护,达到系统容量和云上资源成本的最佳平衡点。
常见业务场景压测策略
在模拟类生产环境或引流生产环境运行的业务压力和应用场景组合的过程中,我们会选择如突变、并发、负载、稳定性、极限等不同的压测策略,去评估系统各项指标是否满足业务量、可用性、稳定性等要求。这里,我们总结了常见的业务场景、与之对应的压测策略以及策略优点。
最佳实践:基于性能测试 PTS 创建一个压测任务
在演示最佳实践的同时,我们提供了基于阿里云免费试用的 ECS + PTS 的场景体验,我们在阅读的同时进行体验。
URL: https://developer.aliyun.com/adc/scenario/f37fb4d355684e189b7d87c9b6c8d10b
(一)实验开始前准备
- 如果您的阿里云主账号符合开通免费试用的资格,建议您开通免费试用性能测试 PTS、ECS 云服务器,性能测试 PTS 提供首月 5000VUM 免费压测资源,超出部分将按后付费专家版计费,具体计费详情,请参见性能测试 PTS 计费规则[4]。
- 如果您的阿里云账号只能领取部分免费试用产品,请您领取符合免费试用资格的产品,然后进入实验,不满足免费试用资格的产品将会使用个人账户资源进行创建,并会产生一定的费用,请您及时关注账户扣费。为了避免资源浪费并造成账号扣费的情况,请严格按照本文提供的参数进行配置。在实验完成之后,请您及时删除或禁用压测任务。
1. 在实验开始前,请您选择开通免费试用。
2. 开通性能测试 PTS 免费试用:在实验室页面下方,选择性能测试 PTS,单击立即试用。在性能测试 PTS 面板,选中服务协议,然后单击立即试用。此时系统会跳转至提交成功页面,表示试用申请成功,即可免费试用性能测试 PTS 服务。
说明:性能测试 PTS 专家版开通过程不会产生任何费用,在实际过程中性能测试(按量付费)提供 5000VUM+免费压测额度,超出部分将按后付费专家版计费,具体计费详情,请参见性能测试 PTS 计费规则。
3. 开通云服务器 ECS 免费试用:在实验室页面下方,选择云服务器 ECS,单击立即试用。在云服务器 ECS 面板,根据如下说明完成参数配置,选中协议,单击立即试用,如弹出新的页面,您可先忽略。本试用教程以下列的配置信息为例,实际操作时,建议根据您的实际业务体量和需求选择。
4. 前往 ECS 控制台[5],在左侧导航栏,选择实例与镜像 > 实例。在顶部菜单栏左上角处,选择和试用实例相同的地域(本教程示例华东 1(杭州))。设置该实例登录密码。找到您创建的试用实例,在其右侧操作列单击 > 实例属性 > 重置实例密码,按照界面提示设置 ECS 实例的登录密码。单击试用实例的 ID,选择安全组页签,单击安全组操作列的配置规则,在入方向添加需要放行的端口。本教程中,在安全组入方向放行 80、443、22、3389、8080 端口。
说明:实例创建完成大约 3~5 分钟后,才支持重置实例密码,如不可重置请耐心等待后重试。
(二)一键配置并部署 ECS 应用
准备好资源后,可以通过一键配置快速完成资源配置或应用搭建。一键配置基于阿里云资源编排服务 ROS 实现,旨在帮助开发者通过 IaC 方式体验资源的自动化配置。模板完成的内容包括:
- 为 ECS 实例创建安全组。
- 部署 LAMP 环境。
- 基于 LAMP 环境使用 PbootCMS 源码搭建网站。
1. 打开一键配置模板链接[6]前往 ROS 控制台,系统自动打开使用新资源创建资源栈的面板,并在模板内容区域展示 YAML 文件的详细信息。
2. 在选择模板页面,ROS 控制台默认处于您上一次访问控制台时的地域,在本实验中地域应该处于华北 2(北京),保持页面所有选项不变,单击下一步进入配置模板参数页面。
3. 在配置模板参数页面,修改资源栈名称,选择您申请免费试用时创建的 ECS 实例,并通过设置 MySQL 数据库密码来修改数据库 root 用户的默认密码。填写完所有必选信息并确认后单击创建开始一键配置。
说明:
- 安装 Apache、MySQL 和 PHP 需要通过互联网下载应用,配置时间可能由于网络稳定性等原因而不同。等待期间,您可以通过刷新资源栈信息页面来查看配置是否完成或通过单击事件页签查看配置详细进展。
- 如果在同一台 ECS 实例上重复执行本教程的一键配置模板,请确保 MySQL 数据库密码和第一次执行模板时设置的密码完全一致。否则一键配置结果不可用。
4. 在资源栈信息页面,请您耐心等待大概 8~10 分钟,状态显示为创建成功时表示一键配置完成。
5. 在资源栈信息页面,单击输出。
6. 在输出页签,单击的 WebUrl 的值(http://<ECS公网IP地址>/admin.php).
7. 出现 PbootCMS 登录页面表示一键配置成功。您可以在 PbootCMS 中根据公司的需求自定义网站的内容,包括全局配置、基础内容、文章内容、扩展内容、会员中心等。本步骤的后续控制台操作为可选操作,可跳过。
(三) 开通性能测试 PTS 并创建场景进行压测及查看报告
1. 前往性能测试 PTS 控制台[7]。
2. 在左侧导航栏中,选择性能测试>创建场景。
3. 在创建场景页面,单击 PTS 压测。
4. 在创建 PTS 场景页面,设置场景名,然后在场景配置页签,输入压测 API 名称,例如 demo,单击右侧图标。在压测URL区域中输入 http://<ECS公网ip地址>:80。
说明 :ECS 公网 IP 地址可在云服务器管理控制台[8]的实例页面查看。
5. 在施压配置页签,配置相关压测参数,递增模式选择自动递增,最大并发输入 50,递增百分比输入 10,单量级持续时长输入 1,压测总时长输入 5。确认参数后,单击保存去压测。
说明:请严格按照指引配置参数进行配置,避免因超出免费试用额度而造成意外出费。
6. 在温馨提示对话框中,确认任务预估的预估消耗,未超过免费额度。确认后单击确定,启动压测。
7. 请您耐心等待大约 3 分钟,您即可在压测中页面查看当前应用实时的压测数据。在压测中页面,您可以看到成功率、RT 和 TPS 等概览数据。
8. 在压测完成之后,会自动跳转到编辑场景页面,然后单击压测报告。
9. 在压测报告页签,找到您的压测报告,单击右侧操作列下的查看。在压测报告了解详细的压测报告内容。
容量规划与性能瓶颈分析
在拿到测试结果数据之后需要对系统中存在的瓶颈点进行分析为调优做准备,系统的性能瓶颈点主要分布在安全防护、负载均衡、后端应用、中间件、数据库、操作系统、硬件规格等方面,具体瓶颈点和调优细节,敬请期待《容量规划与调优》系列文章。
相关链接:
[1] 实例规格族
https://help.aliyun.com/document_detail/25378.htm#concept-sx4-lxv-tdb
[2] DescribeInstanceTypes
https://help.aliyun.com/document_detail/25620.htm#doc-api-Ecs-DescribeInstanceTypes
[3] 性能测试 PTS
https://www.aliyun.com/product/pts
[4] 性能测试 PTS 计费规则
https://help.aliyun.com/document_detail/433167.html?spm=a2c4g.29269.0.0.67fa7f32p02i2O
[5] ECS 控制台
https://account.aliyun.com/login/login.htm?oauth_callback=https%3A%2F%2Fecs.console.aliyun.com%2F
[6] 一键配置模板链接
[7] 性能测试 PTS 控制台
[8] 云服务器管理控制台
点击此处,立即进行 ECS 规格选型与容量验证