Takin部署及基本压测流程–填坑版

一、引言

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

https://github.com/shulieTech/Takin

二、部署方式

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不会跳转)

三、DEMO应用准备

1 开源地址

https://github.com/shulieTech/EasyDemo

2 下载demo

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

3 demo文件结构

4 配置更新

更新数据库配置

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

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

5 启动demo

./demoInstall.sh

四、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.zip
unzip agent-opensource.zip
mv agent-opensource ./simulator-agent

最后 agent目录为:

opt/simulator-agent

2 agent配置文件修改

vi simulator-agent/config/agent.properties

#配置zookeeper连接 请填写takin部署的docker宿主机的ip
simulator.zk.servers=宿主机ip:2181

# tro web url  请填写takin部署的docker宿主机的ip
tro.web.url=http://宿主机ip/takin-web
vi simulator-agent/agent/simulator/config/simulator.properties

# pradar zk server path,如果是使用docker镜像的控制台,请使用/config/log/pradar/cloud/server
pradar.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

验证

五、进行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会自动梳理。

1.3 接入压测链路

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

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

2 数据隔离&安全配置

2.1 远程调用白名单

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

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

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_前缀

2.4 数据隔离验证

./curl.sh

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

3 压测

3.1 Jmeter生成压测脚本

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

3.2 上传压测脚本

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

3.3 创建压测场景

创建一个压测场景

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

已有压测数据

压测报告

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

给TA买糖
共{{data.count}}人
人已赞赏
Linuxrclone技术杂谈

Rclone S3默认传输校验机制(强推必读)

2022-3-31 20:13:31

CN2线路NAT机全部国内vps服务器图鉴独立服务器美国vps香港vps

修罗云 2020新春VPS七折优惠活动汇总

2020-7-24 21:12:12

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索