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附帶的內容,可通過編程方式完成所有工作!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章