【开源实践笔记03】Takin部署及基本压测流程–填坑版

一、引言

因官方GitHub上的部署及配置流程不是很完整,参考搭建可能碰到许多问题,现整理出一篇完整的搭建及demo应用模拟测试流程,以便更好的理解其各项功能及各个组件的关系,方便日后组件的拆分工作。

二、部署方式

docker 部署:

  • 建议虚拟机内存 : 8G
  • 镜像大小: 2.1G

1、获取docker镜像:

docker pull registry.cn-hangzhou.aliyuncs.com/shulie-takin/takin:v1.0.1

2、启动docker镜像:

docker run -e APPIP=your ip  -p 80:80 -p 2181:2181 -p 29900-29999:29900-29999 registry.cn-hangzhou.aliyuncs.com/shulie-takin/takin:v1.0.1

待安装完毕。

3、打开web控制台

http://IP/web (web必须加上,直接输入IP不会跳转)

【开源实践笔记03】Takin部署及基本压测流程–填坑版

三、DEMO应用准备

1 开源地址

https://github.com/shulieTech/EasyDemo

2 下载demo

curl -O https://install-pkg.oss-cn-hangzhou.aliyuncs.com/demo/easydemo_0712.tgztar xvf easydemo_0712.tgz</p>

3 demo文件结构

【开源实践笔记03】Takin部署及基本压测流程–填坑版

4 配置更新

更新数据库配置

将demoEnv.conf里的数据库相关配置更改为您的数据源地址

MYSQLURL=192.168.1.173 PORT=3306 USERNAME=root PASSWD=shulie@2020

5 启动demo

./demoInstall.sh

【开源实践笔记03】Takin部署及基本压测流程–填坑版

四、Agent接入

1 agent安装

下面为linkagent地址:

https://github.com/shulieTech/LinkAgent/blob/main/doc/QuickStart.md

进入到opt目录

curl -O https://install-pkg.oss-cn-hangzhou.aliyuncs.com/manual/agent-opensource.zipunzip agent-opensource.zipmv agent-opensource ./simulator-agent

最后 agent目录为:

opt/simulator-agent

2 agent配置文件修改

vi simulator-agent/config/agent.properties#配置zookeeper连接 请填写takin部署的docker宿主机的ipsimulator.zk.servers=宿主机ip:2181# tro web url  请填写takin部署的docker宿主机的iptro.web.url=http://宿主机ip/takin-web
vi simulator-agent/agent/simulator/config/simulator.properties# pradar zk server path,如果是使用docker镜像的控制台,请使用/config/log/pradar/cloud/serverpradar.server.zk.path=/config/log/pradar/cloud/server

3 demo应用启动参数修改

进入到demo应用文件夹

路径:easydemo/app/gateway

start(){    DIR="/opt"    JAVA_OPTS="${JAVA_OPTS} -Xbootclasspath/a:$JAVA_HOME/lib/tools.jar"    JAVA_OPTS="${JAVA_OPTS} -javaagent:/${DIR}/simulator-agent/simulator-launcher-instrument.jar"    JAVA_OPTS="${JAVA_OPTS} -javaagent:/${DIR}/simulator-agent/bootstrap/transmittable-thread-local-2.12.1.jar"    JAVA_OPTS="${JAVA_OPTS} -Dsimulator.delay=10"    JAVA_OPTS="${JAVA_OPTS} -Dsimulator.unit=SECONDS"    JAVA_OPTS="${JAVA_OPTS} -Dpradar.project.name=easydemo-gateway-1.0.1"    JAVA_OPTS="${JAVA_OPTS} -Djdk.attach.allowAttachSelf=true"    nohup  java ${JAVA_OPTS} -XX:+PrintGCTimeStamps -Xloggc:gc.log -jar easydemo-gateway.jar >> gateway.log 2>&1 &}

DIR请填写探针包解压的目录
pradar.project.name请填写业务应用名称,全局唯一

路径:easydemo/app/user

start(){    DIR="/opt"    JAVA_OPTS="${JAVA_OPTS} -Xbootclasspath/a:$JAVA_HOME/lib/tools.jar"    JAVA_OPTS="${JAVA_OPTS} -javaagent:/${DIR}/simulator-agent/simulator-launcher-instrument.jar"    JAVA_OPTS="${JAVA_OPTS} -javaagent:/${DIR}/simulator-agent/bootstrap/transmittable-thread-local-2.12.1.jar"    JAVA_OPTS="${JAVA_OPTS} -Dsimulator.delay=10"    JAVA_OPTS="${JAVA_OPTS} -Dsimulator.unit=SECONDS"    JAVA_OPTS="${JAVA_OPTS} -Dpradar.project.name=easydemo-usercenter-1.0.1"    JAVA_OPTS="${JAVA_OPTS} -Djdk.attach.allowAttachSelf=true"    nohup  java ${JAVA_OPTS} -XX:+PrintGCTimeStamps -Xloggc:gc.log -jar easydemo-usercenter.jar >> usercenter.log 2>&1 &}

重启应用

./demoInstallLinkAgent.sh

验证

【开源实践笔记03】Takin部署及基本压测流程–填坑版

五、进行demo程序压测

1 demo接入

1.1 创建demo程序数据量

这一步官网的文档上没有,导致执行发送请求命令不成功,写入不到数据库,导致控制台无法发现服务与梳理链路,这里研究了好久。。。

demo目录下有个create_table.sql文件,将里面的内容贴入到mysql中,会创建库和表结构,之后才能发送请求成功。

CREATE DATABASE IF NOT EXISTS easydemo_db DEFAULT CHARSET utf8 COLLATE utf8_general_ci;use easydemo_db;CREATE TABLE `t_user` (  `id` bigint(20) NOT NULL AUTO_INCREMENT,  `mobile` varchar(16) NOT NULL COMMENT '手机号',  `password` varchar(16) NOT NULL COMMENT '登录密码',  `nick_name` varchar(32) DEFAULT NULL COMMENT '昵称',  `email` varchar(32) DEFAULT NULL COMMENT '邮箱',  `birth_day` varchar(16) DEFAULT NULL COMMENT '生日',  `province_name` varchar(64) DEFAULT NULL COMMENT '省',  `city_name` varchar(64) DEFAULT NULL COMMENT '市',  `create_time` datetime DEFAULT CURRENT_TIMESTAMP,  `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,  PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;CREATE TABLE `pt_t_user` (  `id` bigint(20) NOT NULL AUTO_INCREMENT,  `mobile` varchar(16) NOT NULL COMMENT '手机号',  `password` varchar(16) NOT NULL COMMENT '登录密码',  `nick_name` varchar(32) DEFAULT NULL COMMENT '昵称',  `email` varchar(32) DEFAULT NULL COMMENT '邮箱',  `birth_day` varchar(16) DEFAULT NULL COMMENT '生日',  `province_name` varchar(64) DEFAULT NULL COMMENT '省',  `city_name` varchar(64) DEFAULT NULL COMMENT '市',  `create_time` datetime DEFAULT CURRENT_TIMESTAMP,  `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,  PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

1.2 创建模拟业务流量

执行easydemo下的curl.sh,里面是发送请求的脚本,会自动发送请求流量,后takin会自动梳理。

【开源实践笔记03】Takin部署及基本压测流程–填坑版

1.3 接入压测链路

进入「仿真平台->链路梳理->业务活动」,点击「新增业务活动」

如2、步骤中的请求发送成功,【服务】处会梳理出流量经过的路径。

【开源实践笔记03】Takin部署及基本压测流程–填坑版

2 数据隔离&安全配置

2.1 远程调用白名单

–header “User-Agent:PerfomanceTest” 注意,在header带上了压测标记,以区分压测流量和正式流量。若传入了压测标记,linkAgent会进行数据隔离的处理。

白名单是压测流量是否可以调用某个接口的校验机制,可有效防止压测流量泄露至未接入的应用
1 加入白名单:加入白名单代表压测流量可调用该接口
2 取消白名单:取消白名单代表压测流量不可调用该接口
若未添加白名单,发起压测流量时,会报错

【开源实践笔记03】Takin部署及基本压测流程–填坑版

2.2 影子表创建

–影子表模式

--影子表模式use easydemo_db;CREATE TABLE `PT_t_user` (                             `id` bigint(20) NOT NULL AUTO_INCREMENT,                             `mobile` varchar(16) NOT NULL COMMENT '手机号',                             `password` varchar(16) NOT NULL COMMENT '登录密码',                             `nick_name` varchar(32) DEFAULT NULL COMMENT '昵称',                             `email` varchar(32) DEFAULT NULL COMMENT '邮箱',                             `birth_day` varchar(16) DEFAULT NULL COMMENT '生日',                             `province_name` varchar(64) DEFAULT NULL COMMENT '省',                             `city_name` varchar(64) DEFAULT NULL COMMENT '市',                             `create_time` datetime DEFAULT CURRENT_TIMESTAMP,                             `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,                             PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

2.3 平台配置影子表

进入easydemo-usercenter-1.0.1应用详情,配置影子表。
数据库URL:填写应用使用的数据源地址
影子表:填写接口用到的表,加上PT_前缀

【开源实践笔记03】Takin部署及基本压测流程–填坑版

2.4 数据隔离验证

./curl.sh
【开源实践笔记03】Takin部署及基本压测流程–填坑版

由上图可见,业务流量写入正常,压测流量正常写入影子表中,为写入业务流量的表,隔离成功!

3 压测

3.1 Jmeter生成压测脚本

使用Jmeter生成一个简单的测试脚本,并导出。

【开源实践笔记03】Takin部署及基本压测流程–填坑版

3.2 上传压测脚本

上传压测脚本至takin,如下所示:

【开源实践笔记03】Takin部署及基本压测流程–填坑版

3.3 创建压测场景

创建一个压测场景

【开源实践笔记03】Takin部署及基本压测流程–填坑版

启动任务,如检查无误,即可正常执行

【开源实践笔记03】Takin部署及基本压测流程–填坑版

已有压测数据

【开源实践笔记03】Takin部署及基本压测流程–填坑版

压测报告

【开源实践笔记03】Takin部署及基本压测流程–填坑版

验证成功将数据写入影子库中!

【开源实践笔记03】Takin部署及基本压测流程–填坑版

本文来自投稿,不代表TakinTalks稳定性技术交流平台立场,如若转载,请联系原作者。

(4)
上一篇 2022年5月7日 下午5:39
下一篇 2022年5月18日 下午3:17

相关推荐

发表评论

登录后才能评论

评论列表(1条)

  • tapa
    tapa 2022年5月25日 下午5:33

    1.1的数据库和表已经创建成功了,但步骤1.2的请求一直没有返回,单独去执行脚本里的curl命令也没有返回,请问是为什么呀?