前言
随着云原生的推进,k8s和service mesh已然成为云上的事实标准,我们的压测引擎也是基于这个理念演化而来。整个引擎的架构为k8s jmeter influxdb grafana,其中:
- k8s 管理压测发力机,可以方便快速的适配目标环境的扩缩容处理;
- 通过框架提供的grafana的dashboard,能实时的了解压测量级的变化以及看到目标接口QPS的变化。依托于grafana优秀的时间选择体验,能很方便查看各次压测的详细数据,为压测节约了大量的时间;
- JMeter on k8s 的提供的 Master / Slave 方式,让压测脚本实现过程中,对于一些资源数据,框架承担了发送到各压测执行机的责任,简化了编码和操作流程。
集群节点配置
- 节点配置:8核16G,带宽按量计费,外网带宽100Mbps,系统盘配置50GB 高性能的云硬盘
- 节点数量根据压测的目标QPS而定,一般1个节点可以支持2K的QPS
- 建议购买所需压测节点数 1台机器(多一台机器作为作为控制节点、展示节点)
部署压测引擎具体流程
Tips:压测引擎是在TKE上一个服务,所以可以基于k8s进行一键部署。整个过程有如下的三个步骤,如果能够很熟练地操作TKE,可以在购买云服务器、构建TKE集群后直接跳到步骤3安装压测引擎。
步骤1:购买云服务器
以节点(8核16G,带宽按量计费,外网带宽100Mbps,系统盘配置50GB 高性能云硬盘)为例,说明购买步骤。
- 在腾讯云官网登录账号后,进入到云服务器界面,点击“新建”。
- 选择合适的计费模式、地域。
- 选择合适的机器配置,镜像默认选择最新版本即可,后续构建集群时会自动重装系统。
- 勾选上“免费分配独立公网IP”,选择“按使用流量”,带宽配置100Mbps,数量配置11台,点击下一步。
- 安全组把常用的IP/端放开。
- 设置CVM的登录密码,
密码不能过于简单,否则很容易被攻击
;如果能够确定压测机的使用时长,可设置机器自动销毁的时间,然后点击下一步。
- 确认配置信息后点击开通,然后等待机器构建。
步骤2:构建TKE集群
- 在容器服务页面新建集群
- 在“集群信息”步骤填写集群名称,选择集群所在地域,
集群网络需要和压测机器在同一个网络下
- 操作系统建议选择
Tencent Linux Release 2.2(Final)
,然后点击下一步。
- 在“选择机型”步骤选择已有节点,选择需要加入集群的节点,然后点击下一步。
- 在“云服务器配置”步骤设置CVM的登录密码,然后点击下一步。
- 组件配置不需要改动,然后点击下一步。
- 最后确认配置信息无误,点击完成,集群开始创建,大约需要15分钟。
步骤3:安装Jmeter-Suite压测引擎
- 在应用市场页面安装jmeter-suite应用
- 点击“创建应用”,输入应用名称,选择相应的集群,并输入合适的参数,点击创建。
Tips:
server-replicaCount对应的施压节点的数量,一般配置为集群机器的节点数-1。例如,集群中有11个节点,则副本数配置为10,剩余一个节点用于部署控制、数据展示服务;
image-tag确保是最新的版本v2.2-kona;
需要修改grafana-adminPassword的密码;
- 在集群节点页面中,逐个节点点击进入,找到没有jmeter-server对应pod的那个节点,记住节点名称。
- 在工作负载中,修改master、grafana、influxdb的调度策略
- 修改节点调度策略为“指定节点调度”,选择前面记录的那台没有部署jmeter-server,将jmeter-master、grafana、influxdb都调度到该节点上。
- 至此,压测引擎部署完成。
验证:查看监控面板
- 监控面板的地址为:
集群节点IP:31221
以下面为例对应的grafana监控面板地址为:http://152.136.130.236:31221
卸载
卸载Jmeter-Suite应用
- 在应用中删除Jmeter-Suite
- 在PVC界面删除influxdb持久存储
卸载压测集群
- 在集群管理页面中,选择“更多”->“删除”。
- 删除集群时勾选“直接销毁集群内全部按量计费节点”、“销毁CBS”即可。