成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

使用 Locust 進行 Kubernetes 分布式性能測試

開發 架構
在本教程中,我們將會介紹如何集成和使用 Locust 來測試在 Kubernetes 集群中運行的微服務。

介紹

在本教程中,我們將會介紹如何集成和使用 Locust 來測試在 Kubernetes 集群中運行的微服務,以下是將會涵蓋的內容:

  • 如何部署一個Guestbook應用案例。
  • 一些 Locust 測試用例(我們將使用Guestbook應用進行測試)。
  • 為 Locust master 和 worker 構建 Docker 鏡像。
  • 以分布式模式部署 Locust 并執行負載測試。

要求

在繼續之前,請確保您的環境滿足要求;首先安裝和部署 Docker、Kubernetes 和 Git。

準備 Kubernetes 集群:

在開始講解如何使用 Locust 測試在 Kubernetes 集群上運行的微服務之前,我們需要準備和部署我們將在集群上測試的服務。這些服務如下圖所示。該微服務應用包括以下組件:

  • Redis 主從集群(用于讀取請求緩存)。
  • 前端應用程序。該應用程序被配置為使用Redis主節點和從節點寫入和讀取請求。

圖片

要在本地部署上述設置,請按照以下步驟操作:

`$> git clone git@github.com:eon01/kubernetes-locust-example.git
$> cd locust/guestbook
$> kubectl apply -f`

上述kubectl應用的YAML 文件中包含的服務和deployment:

  • Redis的deployment和service。
  • 前端的deployment和service。

GuestBook將在以下 URL 上提供訪問入口:http://127.0.0.1:30625,您可以使用以下命令驗證這一點:

$>kubectl get all

Locust:簡介

性能和負載測試是軟件生命周期中最熱門的話題之一。這些測試可以為我們提供有關軟件應用程序和基礎設施設置的性能和健壯性所需的指標和KPI。Locust是可以用來執行用戶行為負載測試的工具之一。它依賴流行的python編程語言來定義負載測試場景。這意味著可以執行一些條件行為或進行一些計算。Locust還支持在多個工作節點上運行分布式負載測試。該工具帶有一個web界面,用于配置和運行有多種配置的預定義測試。在這篇博文中,我們將介紹使用Locust在分布式模型中測試Guestbook應用程序所需的步驟。為了實現這一目標,我們需要完成以下的內容。

  • 定義測試用例(locust 文件)。
  • Locust 的 Docker 鏡像。
  • 部署主從Locust workers。
  • 允許 Locust worker 和 master 之間的通信。

Locust:測試用例

我們需要用 Python 編寫一些測試用例來測試 GuestBook 應用程序。應用程序界面簡單明了,只有一個文本框和一個按鈕,如下圖所示。

圖片?

為了簡單起見,我們將實現兩個用例。

  • 在前端頁面打開GeustBook。
  • 將靜態guest姓名添加到GeustBook。

下面的 locust 文件可用于測試這些用例。

from locust import HttpUser, task, between
class MyUser(HttpUser):
wait_time = between(5, 15)
@task
def index(self):
self.client.get("/")
@task
def update(self):
self.client.get("/guestbook.php?cmd=set&key=messages&value=,JohnDietish,")

Locust:Docker 鏡像

下一步是使用已定義的用例為 Locust 主從workers構建 Docker 鏡像。這些 Docker 鏡像稍后將用于在集群上部署 Locust 組件。

以下就是 Locust Docker 鏡像文件結構。

圖片

我們的 Docker 鏡像必須至少包含以下文件:

  • Dockerfile:此文件將包含構建 Docker 鏡像所需的說明。
  • requirements.txt:此文件包含運行 Locust 所需的 Python 庫列表。
  • test-case.py:這是用 Python 編寫的測試用例文件。
  • run.sh:一個 shell 腳本,作為 Docker 的入口點來支持 master 和 slave worker。

下面是這個文件的樣子:

圖片

要在本地構建 Docker 鏡像,請按照以下步驟操作:

$> git clone git@github.com:eon01/kubernetes-locust-example
$> cd locust/docker
$> docker build -t locust:guestbook

Locust:以分布式模式部署

現在我們為測試用例創建了 Docker 鏡像,是時候開始部署分布式 Locust 集群了,我們將使用 Kubernetes。請注意,您可以在沒有 Kubernetes 的情況下將 Locust 部署在單個 VM 上,但如果您需要分布式測試,Kubernetes 集群是使用的理想選擇。

為了完成這個任務,我們需要創建以下 Kubernetes 資源。

Locust master deployment
Locust master service.
Locust worker deployment.

以上所有資源都是標準的 Kubernetes 對象。定義這些對象的最關鍵因素是為每個對象提供所需環境變量的正確值并開放正確的端口。

下面是主部署的定義文件。

如定義文件所示,將環境變量LOCUST_MODE和TARGET_HOST傳遞給容器非常重要;否則,容器將不會配置為作為主 Locust 實例運行。

apiVersion: apps/v1
kind: Deployment
metadata:
name: locust-master
labels:
name: locust-master
spec:
replicas: 1
selector:
matchLabels:
app: locust-master
template:
metadata:
labels:
app: locust-master
spec:
containers:
- name: locust-master
image: locust:guestbook
env:
- name: LOCUST_MODE
value: master
- name: TARGET_HOST
value: http://frontend-internal
ports:
- name: loc-master-web
containerPort: 8089
protocol: TCP
- name: loc-master-p1
containerPort: 5557
protocol: TCP
- name: loc-master-p2
containerPort: 5558
protocol: TCP

另一方面,worker 定義文件需要為 LOCUST_MODE 傳遞不同的值,并且它必須傳遞另一個名為 LOCUST_MASTER 的變量來建立 worker(s) 和 master 之間的通信。下面是部署 Locust 工作池的定義文件:

apiVersion: apps/v1
kind: Deployment
metadata:
name: locust-worker
labels:
name: locust-worker
spec:
replicas: 4
selector:
matchLabels:
app: locust-worker
template:
metadata:
labels:
app: locust-worker
spec:
containers:
- name: locust-worker
image: locust:guestbook
env:
- name: LOCUST_MODE
value: worker
- name: LOCUST_MASTER_URL
value: locust-master
- name: TARGET_HOST
value: http://frontend-internal

最后,需要服務對象來公開要通過 Web 界面和工作容器訪問的主組件。下面是 Locust 服務的定義文件。

kind: ServiceapiVersion: v1
metadata:
name: locust-master
labels:
app: locust-master
spec:
ports:
- port: 5557
targetPort: loc-master-p1
protocol: TCP
name: loc-master-p1
- port: 5558
targetPort: loc-master-p2
protocol: TCP
name: loc-master-p2
selector:
app: locust-master
---
kind: Service
apiVersion: v1
metadata:
name: locust-master-ui
labels:
app: locust-master
spec:
ports:
- port: 8089
targetPort: loc-master-web
protocol: TCP
name: loc-master-web
nodePort: 30627
selector:
app: locust-master
type: NodePort

要在本地部署 Locust pod,請執行以下步驟:

$> git clone git@github.com:eon01/kubernetes-locust-example
$> cd locust/k8s
$> kubectl apply -f .

執行上述命令后,將創建 4 個 Locust 工作節點、一個主節點(以及主 Pod 的服務)。

Locust 界面可通過以下 URL 訪問:http://localhost:30627

您可以使用以下命令驗證資源的創建:

$> kubectl get all

Locust:運行測試

要開始運行測試用例并測試在 Kubernetes 中運行的 Guestbook 應用程序,我們需要登錄到Locust運行界面http://localhost:30627。下圖顯示了 Locust 登錄界面。

圖片

前端頁面詢問將用于執行負載測試的用戶數量和用戶的生成率。該界面還顯示連接到 Locust 安裝的工作節點數量。

填寫測試內容并點擊提交按鈕后,您將被重定向到統計頁面,Locust 將開始從 Docker 鏡像執行定義的測試。

下圖顯示了 Locust 的統計信息頁面,我們可以在其中看到每個已定義用例的統計信息。

圖片

如果需要調整負載測試配置,例如增加用戶數,您可以點擊頁面頂部的編輯鏈接,屏幕上會出現下面的表格輸入新的值。

圖片

失敗和錯誤也反映在統計頁面中;如下圖所示,統計頁面顯示每個測試用例的失敗請求計數和速率。

圖片

Locust 還為我們提供了另一個視圖來顯示確切的故障錯誤,同時可以驗證故障或錯誤的根本原因,如下圖所示。

圖片

最后,Locust 還提供了其他視圖和頁面,例如通過圖表說明負載測試進度的詳情頁面、顯示有關 Locust worker信息的worker頁面以及我們可以下載負載測試數據的下載數據頁面。

責任編輯:姜華 來源: 新鈦云服
相關推薦

2025-01-27 11:52:23

2015-08-04 15:47:39

2021-03-23 22:43:09

Grafana Tem分布式跟蹤開源

2013-12-27 10:56:42

分布式對象存儲Sheepdog性能測試

2014-02-19 11:37:57

分布式對象存儲Sheepdog

2022-03-24 14:11:25

KubernetesCitusPostgreSQL

2023-11-01 18:02:33

RayPython分布式

2012-05-21 16:28:29

LinuxHadoop

2011-04-18 14:43:23

分布式測試分布式測試

2010-06-03 18:54:57

Hadoop

2019-10-28 10:10:01

技術研發分布式

2024-01-01 22:35:26

kubernetesLease分布式選主

2014-12-11 09:56:33

DockerKubernetesGoogle

2019-10-10 09:16:34

Zookeeper架構分布式

2021-06-17 14:29:39

Linkerd 分布式跟蹤Linkerd 2.1

2017-09-01 05:35:58

分布式計算存儲

2019-06-19 15:40:06

分布式鎖RedisJava

2023-05-29 14:07:00

Zuul網關系統

2021-08-17 00:24:38

塊存儲云原生分布式

2023-11-14 08:36:15

Celery工具
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 99re视频| 一区二区在线不卡 | 天天射视频 | 男女羞羞视频网站 | 亚洲天堂久久 | 国产免费xxx | 97精品超碰一区二区三区 | 日本成人免费网站 | 第一av| 国产日韩欧美91 | 亚洲看片网站 | 欧美视频1区 | 亚洲精品女人久久久 | 国内精品一区二区三区 | 欧美色综合网 | 99re在线观看 | 911影院| 日日噜 | 男人的天堂在线视频 | 一级毛片视频在线 | 欧美九九| 天天射影院 | 日韩在线国产精品 | 亚洲精品一二区 | 91精品国产91久久综合桃花 | www日| 日韩一级一区 | 久久精彩视频 | 亚洲视频免费在线播放 | 日本精品视频在线 | 日本在线看片 | www.夜夜草| 欧美午夜在线 | 欧美一区二区三区的 | 午夜三级网站 | 一区二区三区在线免费观看视频 | 亚洲视频一区二区三区 | 久久中文字幕电影 | www.久久国产精品 | 成人小视频在线观看 | 国产精品国产三级国产aⅴ入口 |