JMeter:在Cloud中使用Docker+RancherOS进行分布式负载测试

本文原文链接

构建用于JMeter分布式性能测试测试基础结构不是一件容易的事!前面已经介绍了Docker可以帮助我们建立基础架构。

在进行实际性能测试时,我们可能会使用自己的服务器或云,例如AWS-EC2。尽管Docker帮助我们使用JMeter + Java等创建了容器,但是多主机联网并不是一件容易的事!

这里查看如何使用RancherOS + Rancher服务:
RancherOS + Rancher Server

Rancher/OS:

RancherOS使在开发、测试和生产中大规模运行容器变得简单,并且只包含运行Docker所需的服务,操作系统提供了一个非常可靠且易于管理的容器环境。不需要的库和服务被淘汰,并默认运行最新版本的Docker,从而大大减少了占用空间,并减少了更新、打补丁和维护容器主机操作系统的麻烦。RancherOS上的容器在几秒内可启动,使得团队可以轻松快速地移动和扩展。

RancherOS是一个轻量级的操作系统,而Rancher是一个Docker容器管理平台,可在RancherOS或安装了docker的任何其他操作系统上运行。

RancherOS是一个轻量级OS + Rancher的docker-containers管理平台,它运行在RancherOS或安装了docker的任何其他OS上运行。

Rancher安装

  • 由于我们将在AWS- ec2中创建其他所有容器,因此首先让我们在AWS中使用RancherOS创建一个实例。
    • 不一定非要RancherOS,任何使用docker的系统都可以
    • 也可以在AWS-EC2中创建Linux / Ubuntu实例并安装docker
    • 也可以在本地计算机上完成此操作——但要确保机器与docker没有任何防火墙。
  • 一旦你安装了docker / RancherOS的本地或者云系统,那么我们就需要docker-container管理平台,也就是Rancher服务器。
  • 要启动Rancher服务器,请运行此命令。
sudo docker run -d –restart=unless-stopped -p 8080:8080 rancher/server
  • 等待2-5分钟,然后访问:http://aws-or-local-ip-where-rancher-installed:8080
  • 你将看到如下的样子:
    Start Rancher server

AWS入站规则:

作为本文的一部分,我将使用AWS-EC2。你还可以使用任何VM /Cloud/物理机。
Rancher主使用某些端口与Rancher代理进行通信。请确保以下端口打开:
Rancher端口
添加最后3个端口(1099,50000和60000)用于JMeter master与slave通信。
JMeter master与slave通信

Rancher – 创建环境:

在Rancher UI中创建一个单独的环境——称之为jmeter-distributed-test环境。
Cattle是Rancher自己的容器编排模板,这是默认模板:
Cattle

Rancher – 创建主机:

选择环境模板后,下一步就是创建主机。我选择了Amazon EC2。
Rancher – 创建EC2主机

  • 输入访问和密钥 (Access & Secret keys)
  • 选择区域 (Zone)
  • 为所有机器选择相同的子网 (subnet )
  • 选择安全组(已经在AWS中创建——请检查上方的入站规则)
  • 选择数量(我选择了5个) (Quantity )
  • 选择实例类型和AMI(我选择了Ubuntu微型实例)
    Config
  • 一旦你点击create, Rancher会立即为你在EC2中创建实例,并在所有实例中设置docker。
    实例
    实例

所有主机准备就绪后,编辑其中一台将成为JMeter-Master的主机。
添加标签“ io.rancher.host.name = master”。
在接下来的内容中,你将知道为什么。

Rancher –创建堆栈:

堆栈只是运行我们的应用程序的一组服务,要运行我们的JMeter-distributed测试,我们需要两个服务。
1、master service,主服务(我们只需要一个主服务)
2、slave/server service,从属服务(我们需要N个从属节点,取决于需求)
Add Stack

  • 创建一个堆栈,命名符合规范

  • 在堆栈下创建一个master service主服务,如下所示,我们只需要一个容器,这里我将重用已经创建的docker-image——vinsdocker / jmmaster

    • 公开端口60000,并且必须与主机端口60000映射
      Add Service
  • 如果您点击“Create”按钮,Rancher将该容器中的一个主机——这将是随机的。
    这是我们创建的标签将有用的地方。

  • 转到服务的“Scheduling–调度”部分;添加一个特定的规则来选择具有你设置标签的主机。
    Scheduling

  • 当rancher在特定主机上创建jmeter-master容器时,我们可以创建slave/server服务。

  • 除master外,所有主机中都需要jmeter-slaves。

  • 调度规则将在除主机之外的所有主机上运行。

  • 创建完成后,我们可以看到1个主容器和4个从属容器。

Rancher 容器:

访问Rancher的容器部分,查看目前为止已创建的所有容器的列表,并包含名称和ip地址等详细信息。如下图,每个容器都在单独的主机上运行,​​这才是实际性能测试的正确设置。
Rancher容器信息

JMeter -分布式测试:

  • 可以点击主容器最右边的三个圆点,查看“Execute Shell”选项,以便直接在主容器上运行特定的命令。
  • 我执行以下命令,进入JMeter的bin目录并下载示例测试。
cd /jmeter/apache-jmeter-2.13/bin

wget https://s3-us-west-2.amazonaws.com/dpd-q/jmeter/jmeter-docker-compose.jmx

下载示例

  • 一旦下载了测试,其余的就很简单了!
  • 运行下面的命令来运行分布式测试。
    • 从机名称为jmeter-server-1,jmeter-server-2,jmeter-server-3,jmeter-server-4
./jmeter -n -t jmeter-docker-compose.jmx -Rjmeter-server-1,jmeter-server-2,jmeter-server-3,jmeter-server-4

运行测试示例

Rancher –导出服务配置:

第一次使用master主服务和slave从服务创建堆栈似乎有点麻烦!其实很简单。 Rancher还提供了导出此配置的选项——以便您可以在下一次导入/与他人共享。
导出服务配置
下次你可以复制粘贴配置/导入文件,你也可以使用下面的配置,因为我已经导出。

总结

在此之前–设置此测试环境并非易事。我们需要确保所有机器上都安装相同版本的JMeter + Java + jmeter-plugins +其他依赖项。除此之外,我们还需要确保适当的端口是打开的。有时,由于Java RMI,你仍然会面临一个问题。

Rancher + Docker + EC2使我们的工作更轻松。一旦你上传了配置——一切设置完毕,所有容器在一分钟之内就可以运行测试了。

Rancher还公开了一组API以及CLI附带的内容,可通过编程方式完成所有工作!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

软测小生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值