基于docker的jmeter弹性压测

  • 2020 年 3 月 31 日
  • 筆記

本文主要是介绍jmeter的弹性压测,旨在通过docker可以做到动态扩容等,下面开始第一篇;

先看下我的文件目录,可与预先下载好相应的包

看下我的DockerFile:

FROM java:8  # 基础镜像    MAINTAINER [email protected]  # 作者    ENV http_proxy ""  ENV https_proxy ""    RUN mkdir /test &&       chmod -R 777 /test  # 创建/test目录,用于存放jmx脚本、jtl结果文件、html测试报告文件    ENV JMETER_VERSION=5.2.1  ENV JMETER_HOME=/usr/local/apache-jmeter-${JMETER_VERSION}  ENV JMETER_PATH=${JMETER_HOME}/bin:${PATH}  ENV PATH=${JMETER_HOME}/bin:${PATH}  # 设置JMeter环境变量    ADD apache-jmeter-${JMETER_VERSION}.tgz /usr/local  # 添加JMeter    RUN sed -i '$a sampleresult.default.encoding=UTF-8' /usr/local/apache-jmeter-${JMETER_VERSION}/bin/jmeter.properties &&       sed -i '159s/256/512/g' /usr/local/apache-jmeter-${JMETER_VERSION}/bin/jmeter  # 修改JMeter配置文件    RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime &&       echo "Asia/Shanghai" > /etc/timezone
docker build -t jmeter .  # 打包JMeter镜像,请不要忽略后面的一个.    mkdir test  # 在当前路径创建test目录,用户存放jmeter文件    docker run -d -it --name jmeter5.2.1 -v $PWD/test:/test jmeter  # 启动  

启动后可以查看容器id后进入容器查看相关信息:

启动jmeter进行压测

下面我们介绍如何制作并上传私有云

首先,下载Registry镜像并启动

docker pull registry

启动镜像

docker run -d -v /edc/images/registry:/var/lib/registry -p 5000:5000 –restart=always –name xdp-registry registry

可以看下是否存在镜像:

curl http://your-server-ip:5000/v2/_catalog

初始的状态应该是空的:

一般出现如下信息:{"repositories":[""]}

上传镜像:

首先,为了让客户端服务器能够快速地访问刚刚在服务端搭建的镜像仓库(默认情况下是需要配置HTTPS证书的),这里简单在客户端配置一下私有仓库的可信任设置让我们可以通过HTTP直接访问:# vim /etc/docker/daemon.json

  加上下面这一句,这里的"your-server-ip"请换为你的服务器的外网IP地址:

{ "insecure-registries" : [ "your-server-ip:5000" ] }

PS:如果不设置可信任源,又没有配置HTTPS证书,那么会遇到这个错误:error: Get https://ip:port/v1/_ping: http: server gave HTTP response to HTTPS client.

为了使得配置生效,重新启动docker服务:# systemctl restart docker,其次,为要上传的镜像打Tag

docker tag your-image-name:tagname your-server-ip:5000/your-image-name:tagname

最后,开始正式上传镜像到服务端镜像仓库

docker push your-registry-server-ip:5000/your-image-name:tagname

这时我们可以再次通过访问API验证镜像仓库的内容: