jmeter 叢集容器化部署
jmeter叢集容器化部署
核心思路
部署一個多機器節點多叢集的jmeter,為了防止單臺節點導致試壓機器壓力不足
CSDN上已有相關部署文件,但是有些依賴異常導致部署後無法使用,且部分模組版本過低
本次部署jmeter版本為最新5.3版
一、機器準備
兩臺機器CentOS(機器IP為example,非真實機器,需要自己修改即可)
CentOS核心版本應在4以上,檢查命令:
➜ ~ cat /etc/redhat-release
CentOS Linux release 7.8.2003 (Core)
master 127.0.1.1
slave 127.0.1.2
部署一個多機器節點(本位以兩個節點為例)多叢集的jmeter
二、docker環境安裝
- 各個節點都需要安裝
- 使用 root 許可權登入 Centos,檢查是否可以更新yum包(sudo yum update)
- 解除安裝舊版(如果已安裝)
sudo yum remove docker docker-common docker-selinux docker-engine
- 安裝依賴軟體包,yum-util 提供yum-config-manager功能,其他的是devicemapper驅動依賴
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
- 設定yum源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
- 直接安裝最新版的docker
sudo yum install docker-ce
- 啟動並加入開機啟動
$ sudo systemctl start docker
$ sudo systemctl enable docker
- 各個節點檢查docker是否安裝成功
➜ ~ docker -v
Docker version 19.03.9
三、Rancher安裝和配置
- 直接使用docker命令安裝(master機器操作)
sudo docker run -d --restart=unless-stopped -p 8180:8080 rancher/server
- 安裝完成後,通過master主機啟動Rancher客戶端
http://127.0.1.1:8180
- 設定Rancher管理員賬號
進入 系統管理→訪問控制→local中設定管理員賬號密碼。設定成功後重新登入
- 在Rancher中新增主機, 如下圖。且要完成對下方命令列的複製。複製成功後進入master機器
- 進入到master機器操作,將該命令複製執行
sudo docker run -e CATTLE_HOST_LABELS='host.ip=127.0.1.1&io.rancher.host.os=linux&io.rancher.host.name=master' --rm --privileged -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/rancher:/var/lib/rancher rancher/agent:v1.2.11 http://127.0.1.1:8180/v1/scripts/2862B95A38DD0CB90DFA:1577750400000:8oKSAkvBHUESvpGuDYDXn0RDPk
- 執行成功後,檢查Rancher客戶端,中的主機列表。是否包含已建立的主機(包含該主機,如下圖
- 再次進入新增主機頁面,新增從節點127.0.1.2
- 在從節點127.0.1.2中執行以下shell
sudo docker run -e CATTLE_HOST_LABELS='host.ip=127.0.1.2&io.rancher.host.os=linux' --rm --privileged -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/rancher:/var/lib/rancher rancher/agent:v1.2.11 http://127.0.1.2:8180/v1/scripts/2862B95A38DD0CB90DFA:1577750400000:8oKSAkvBHUESvpGuDYDXn0RDPk
- 執行以後在Rancher中檢查執行結果如下圖
- 此時兩個主機節點已部署完成,下面要在對應主機節點上部署對應主從jmeter容器
四、jmeter叢集化部署映象構建
- 本地構建jmeter-base映象, 首先建立Dockerfile, 對檔名就叫Dockerfile
FROM ubuntu
# Install wger & JRE
RUN apt-get clean && \
apt-get -y update && \
apt-get -qy install \
wget \
default-jre-headless \
telnet \
iputils-ping \
unzip \
openssh-client \
vim
# Install jmeter
RUN mkdir /jmeter \
&& cd /jmeter/ \
&& wget https://archive.apache.org/dist/jmeter/binaries/apache-jmeter-5.3.tgz \
&& tar -xzf apache-jmeter-5.3.tgz \
&& rm apache-jmeter-5.3.tgz \
&& mkdir /jmeter-plugins \
&& cd /jmeter-plugins/ \
&& wget https://jmeter-plugins.org/downloads/file/JMeterPlugins-ExtrasLibs-1.4.0.zip \
&& unzip -o JMeterPlugins-ExtrasLibs-1.4.0.zip -d /jmeter/apache-jmeter-5.3/ \
&& wget https://jmeter-plugins.org/files/packages/jpgc-perfmon-2.0.zip \
&& unzip -o jpgc-perfmon-2.0.zip -d /jmeter/apache-jmeter-5.3/ \
&& sed -i "s/#server.rmi.ssl.disable=false/server.rmi.ssl.disable=true/g" /jmeter/apache-jmeter-5.3/bin/jmeter.properties
# Set Jmeter Home
ENV JMETER_HOME /jmeter/apache-jmeter-5.3/
ENV TZ=Asia/Shanghai
# Add Jmeter to the Path
ENV PATH $JMETER_HOME/bin:$PATH
執行構建命令, 為什麼叫stone9903,因為dockerhub上註冊的賬戶名是這個。push上去的時候要帶上這個賬戶名
docker build -t stone9903/jmeter-base .
- 構建stone9903/jmeter-master,該映象建立過程中需要依賴stone9903/jmeter-base映象,在目錄下建立jmeter-master資料夾,並在改新建的資料夾下建立Dockerfile檔案
FROM stone9903/jmeter-base
# Ports to be exposed from the container for JMeter Master
EXPOSE 60000
執行構建命令
docker build -t stone9903/jmeter-master .
- 構建stone9903/jmeter-slave-ip映象,建立資料夾jmeter-slave-ip,在對應資料夾下建立Dockerfile,內容如下
FROM stone9903/jmeter-base
# Ports to be exposed from the container for JMeter Slaves/Server
EXPOSE 1099 50000
# Application to run on starting the container
ENTRYPOINT $JMETER_HOME/bin/jmeter-server \
-Dserver.rmi.localport=50000 \
-Dserver_port=1099 \
-Djava.rmi.server.hostname=${HOST_IP}
執行構建命令
docker build -t stone9903/jmeter-slave-ip .
- 至此三個映象已製作完成,通過檢視docker images命令檢視,結果如下:
➜ ~ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
stone9903/jmeter-slave-ip latest e80e424087f4 30 hours ago 513MB
stone9903/jmeter-master latest 68f31dc952ec 30 hours ago 513MB
stone9903/jmeter-base latest 0ec278f91ce9 30 hours ago 513MB
- 將三個映象上傳至https://hub.docker.com/Rancher執行容器)(提供到下面
docker login 後輸入賬號密碼
docker push stone9903/jmeter-base
docker push stone9903/jmeter-master
docker push stone9903/jmeter-slave-ip
五、 jmeter master-slave容器部署
- 新增master節點jmeter應用,應用→新增應用,設定名稱jmeter-master
docker-compose.yml
version: '2'
services:
master:
privileged: true
image: stone9903/jmeter-master
environment:
TZ: Asia/Shanghai
stdin_open: true
network_mode: host
volumes:
- /opt/jmeter:/home/jmeter
- /usr/share/zoneinfo/:/usr/share/zoneinfo/
tty: true
ports:
- 60000:60000/tcp
labels:
io.rancher.scheduler.affinity:host_label: io.rancher.host.name=master
io.rancher.container.pull_image: always
注意:此處增加了共享資料夾對映,將宿主機/opt/jmeter資料夾對映到容器/home/jmeter中,且下方要增加privileged: true
另外也增加了節點時區對映,防止容器時間顯示的不是東八區區時
新增該對映的目的是為了是宿主機和容器機器能公用一個資料夾,這樣方便後續指令碼shell執行
rancher-compose.yml
version: '2'
services:
master:
scale: 1
start_on_create: true
- slave節點新增,同樣的 應用→新增應用 中操作
docker-compose.yml
version: '2'
services:
slave01:
privileged: true
image: stone9903/jmeter-slave-ip
environment:
HOST_IP: 127.0.1.2
TZ: Asia/Shanghai
stdin_open: true
volumes:
- /usr/share/zoneinfo/:/usr/share/zoneinfo/
tty: true
ports:
- 1099:1099/tcp
- 50000:50000/tcp
labels:
io.rancher.scheduler.affinity:host_label: host.ip=127.0.1.2
io.rancher.container.pull_image: always
rancher-compose.yml
version: '2'
services:
slave01:
scale: 1
start_on_create: true
注意,增加多節點的話,只需新增相同的slave節點即可,且,注意,上方slave01要改成02。對應hostip也要修改
檢視部署成功的節點
相關文章
- 容器化 | 在 KubeSphere 中部署 MySQL 叢集MySql
- 容器化 | 在 Kubernetes 上部署 RadonDB MySQL 叢集MySql
- 在 Azure 中部署 Kubernetes 容器叢集
- 容器化 | 在 K8s 上部署 RadonDB MySQL Operator 和叢集K8SMySql
- 容器化|自建 MySQL 叢集遷移到 KubernetesMySql
- Terraform部署容器服務Swarm叢集及WordPress應用ORMSwarm
- 部署分片叢集
- docker部署mysql叢集DockerMySql
- Docker部署ElasticSearch叢集DockerElasticsearch
- 管理 ES 叢集:集常見的叢集部署方式
- 使用docker部署hadoop叢集DockerHadoop
- 二、Linux部署RabbitMQ叢集LinuxMQ
- Redis Cluster叢集模式部署Redis模式
- [自動化]基於kolla的自動化部署ceph叢集
- redis叢集之主從複製叢集的原理和部署Redis
- 基於Ubuntu部署企業級kubernetes叢集---k8s叢集容部署UbuntuK8S
- Docker 容器搭建及 Redis 叢集原理DockerRedis
- Linux 叢集化Linux
- 在kubernetes上部署consul叢集
- Redis 4.0叢集環境部署Redis
- CentOS部署ElasticSearch7.6.1叢集CentOSElasticsearch
- 在 Azure 上部署 Kubernetes 叢集
- 拆除kubeadm部署的Kubernetes 叢集
- 使用 Ansible 快速部署 HBase 叢集
- Windows Server上部署IoTdb 叢集WindowsServer
- Kubernetes部署叢集Mysql服務MySql
- Linux部署hadoop2.7.7叢集LinuxHadoop
- Redis Cluster叢集模式部署XRedis模式
- CapitalOne - Artifactory高可用叢集的自動化部署實踐API
- redis叢集之分片叢集的原理和常用代理環境部署Redis
- Kubernetes(k8s)叢集部署(k8s企業級Docker容器集K8SDocker
- docker 下部署mongodb Replica Set 叢集DockerMongoDB
- TDengine 叢集 多機器docker 部署Docker
- 基於containerd 部署 kubernetes 1.28叢集AI
- 將 .NET Aspire 部署到 Kubernetes 叢集
- ansible快速部署cassandra3叢集
- 【Linux合集】單機部署zk叢集Linux
- KubeSphere 部署 Kafka 叢集實戰指南Kafka