搭建Jmeter容器集群平台

发表于:2018-5-16 08:04

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:smooth00    来源:简书

  基于大量虚拟机的Jmeter集群有个缺点,就是不方便管理,比如需要重启Jmeter服务,还需要一个个的连接到虚拟机上进行操作,而且安装部署不方便(无法一键部署),也不方便将集群封装成整体应用对外提供服务。这些缺点通过Rancher部署的容器云平台就能够解决。
  一、给各个节点的虚拟机安装Docker
  可以让创建虚拟机时就自动带上统一版本的Docker,就可以省掉这一步操作,网上还推荐使用DaoCloud进行Docker安装和镜像加速,我们是为了做实现,就原始的方式安装吧:
  1、对于CantOS安装Docker最好是CentOS7,这样可以保证内核至少是3.10(通过uname -r 命令查看),低于这个版本的内核无法安装Docker。
  2、使用 root 权限登录 Centos。确保 yum 包更新到最新(sudo yum update),我是没有更新。
  3、卸载旧版本(如果安装过旧版本的话)
  sudo yum remove docker docker-common docker-selinux docker-engine
  4、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
  sudo yum install -y yum-utils device-mapper-persistent-data lvm2
  5、设置yum源
  sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  6、直接安装最新版的docker(记住版本宁可最新,也不要低于Rancher所要求的版本)
  sudo yum install docker-ce
  7、启动并加入开机启动
  $ sudo systemctl start docker
  $ sudo systemctl enable docker
  二、Rancher安装和配置
  可以选择一台机独立安装,也可以和Jmeter的Master节点部署在一台机上。Rancher是一个开源的容器管理平台(支持华人的产品),帮助构建企业私有容器服务,相当于KVM里的Openstack。
  1、直接调用Docker安装
  sudo docker run -d --restart=unless-stopped -p 8080:8080 rancher/server
  2、登录Rancher
  装完后,(等启动完后)通过http://IP:8080登录,可以选择语言为中文版显示,进行Rancher认证配置(我也不配了,直接忽略)
  3、Rancher主机添加
  Rancher提供了很多machine drivers批量添加主机,我们也简单一点,直接选择Custom手动添加吧
  以上的两标签可先不加,留后面再加也行,主要是为了标识这是主节点,host.ip为指定IP(对于Slave节点不需要加标签io.rancher.host.name=master),第4步的IP也可以不用配置,除非是某个节点主机与Rancher部署在一台机器上(我就是)。最后奔向第5步,复制那一串代码,到需要添加的主机上运行就可以(前提也是主机装好了Docker,并且可以访问Rancher,避免访问失败连防火墙也可以先关了)。
  添加完一个主机后,继续添加其他Slave节点的主机,我是添加了一台master(与Rancher共用)、两台slave(这三台机的IP最好都是同网段的,不要用相邻网段的,比如网段为172.16的虚拟机创建Docker后,其网桥的默认网段就变成172.17,这就导致和172.17网段的虚拟机会网络冲突,碰到冲突临时的解决方式就是手动修改网桥docker0的网段并重启机器)
  逐台主机登录输入命令添加Custom也挺头疼,可以使用expect编写一个脚本来减轻部分工作量(我就添加三台,用不上):
#!/usr/bin/expect
set timeout -1
set ip [lindex $argv 0]
spawn ssh root@$ip
expect {
"*Are you sure you want to continue connecting (yes/no)*" { send "yes\r" }
"*password*" { send "123456\r" }
}
expect {
"*password*" { send "123456\r" }
}
expect {
"]# " { send "sudo docker run --rm --privileged -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/rancher:/var/lib/rancher rancher/agent:v1.2.2 http://123.207.234.119:8080/v1/scripts/EE431DCFC650693D335A:1483142400000:3FSEGIHT9rsY68RViGJGV8sBiBk\r" }
}
send "exit\r"
expect eof
exit
  添加完三台主机后的效果:
  4、添加Jmeter应用
  添加应用(Add Stack)就是填写docker-compose.yml和rancher-compose.yml。由于slave集群在压测过程中往往由于压力过大出现各种rmi异常导致崩溃,我们把主从分别建两个应用(Stack)。
  jmeter-master的docker-compose.yml配置如下(调用的是Docker Hub镜像库里的镜像):
version: '2'
services:
master:
image: malfurionpd/jmeter-master
stdin_open: true
network_mode: host
tty: true
ports:
- 60000:60000/tcp
labels:
io.rancher.scheduler.affinity:host_label: io.rancher.host.name=master
io.rancher.container.pull_image: always
  jmeter-master的rancher-compose.yml配置如下:
version: '2'
services:
master:
scale: 1
start_on_create: true
jmeter-slaves的docker-compose.yml配置如下(包含多节点):
version: '2'
services:
slave01:
image: malfurionpd/jmeter-slave-ip
environment:
HOST_IP: 172.16.1.37
stdin_open: true
tty: true
ports:
- 1099:1099/tcp
- 50000:50000/tcp
labels:
io.rancher.container.pull_image: always
io.rancher.scheduler.affinity:host_label: host.ip=172.16.1.37
slave02:
image: malfurionpd/jmeter-slave-ip
environment:
HOST_IP: 172.16.1.140
stdin_open: true
tty: true
ports:
- 1099:1099/tcp
- 50000:50000/tcp
labels:
io.rancher.container.pull_image: always
io.rancher.scheduler.affinity:host_label: host.ip=172.16.1.140
  jmeter-slaves的rancher-compose.yml配置如下:
version: '2'
services:
slave01:
scale: 1
start_on_create: true
slave02:
scale: 1
start_on_create: true
  添加应用时导入以上配置文件,点击创建,顺间就能创建jmeter集群(几秒钟的事情)。

上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号