久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

kubernetes中如何實現分布式負載測試Locust

191次閱讀
沒有評論

共計 3546 個字符,預計需要花費 9 分鐘才能閱讀完成。

這篇文章主要介紹了 kubernetes 中如何實現分布式負載測試 Locust,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓丸趣 TV 小編帶著大家一起了解一下。

一:前言

  本文介紹如何在 Kubernetes 集群中對一個應用進行分布式測試,sample-webapp 是一個簡單的 web 測試應用。測試工具使用 Locust.

二:Locust 介紹

  Locust 是一個用于可擴展的,分布式的,性能測試的,開源的,用 Python 編寫框架 / 工具.

在 Locust 測試框架中,測試場景是采用純 Python 腳本進行描述的。對于最常見的 HTTP(S)協議的系統,Locust 采用 Python 的 requests 庫作為客戶端,使得腳本編寫大大簡化,富有表現力的同時且極具美感。而對于其它協議類型的系統,Locust 也提供了接口,只要我們能采用 Python 編寫對應的請求客戶端,就能方便地采用 Locust 實現壓力測試。從這個角度來說,Locust 可以用于壓測任意類型的系統。

  在模擬有效并發方面,Locust 的優勢在于其摒棄了進程和線程,完全基于事件驅動,使用 gevent 提供的非阻塞 IO 和 coroutine 來實現網絡層的并發請求,因此即使是單臺壓力機也能產生數千并發請求數;再加上對分布式運行的支持,理論上來說,Locust 能在使用較少壓力機的前提下支持極高并發數的測試。
Locust 腳本示例:

from locust import HttpLocust, TaskSet, task

class WebsiteTasks(TaskSet):

 def on_start(self):

 self.client.post(/login , {

  username : test ,

  password : 123456

 })

 @task(2)

 def index(self):

 self.client.get(/)

 @task(1)

 def about(self):

 self.client.get(/about/)

class WebsiteUser(HttpLocust):

 task_set = WebsiteTasks

 host = http://debugtalk.com

 min_wait = 1000

 max_wait = 5000

在這個示例中,定義了針對 http://debugtalk.com 網站的測試場景:先模擬用戶登錄系統,然后隨機地訪問首頁(/)和關于頁面(/about/),請求比例為 2:1;并且,在測試過程中,兩次請求的間隔時間為 1~5 秒間的隨機值。

三:部署測試 WEB 應用

sample-webapp-controller.yaml

kind: ReplicationController

apiVersion: v1

metadata:

 name: sample-webapp

 namespace: kube-system

 labels:

 name: sample-webapp

spec:

 selector:

 name: sample-webapp

 replicas: 1

 template:

 metadata:

 labels:

 name: sample-webapp

 spec:

 containers:

 – name: sample-webapp

 image: index.tenxcloud.com/jimmy/k8s-sample-webapp:latest

 ports:

 – containerPort: 8000

sample-webapp-service.yaml

kind: Service

apiVersion: v1

metadata:

 name: sample-webapp

 namespace: kube-system

 labels:

 name: sample-webapp

spec:

 ports:

 – port: 8000

 selector:

 name: sample-webapp

kubectl create -f sample-webapp-controller.yaml
kubectl create -f sample-webapp-service.yaml

四:部署 Locust

locust-master-controller.yaml

kind: ReplicationController

apiVersion: v1

metadata:

 name: locust-master

 namespace: kube-system

 labels:

 name: locust

 role: master

spec:

 replicas: 1

 selector:

 name: locust

 role: master

 template:

 metadata:

 labels:

 name: locust

 role: master

 spec:

 containers:

 – name: locust

 image: index.tenxcloud.com/jimmy/locust-tasks:latest

 env:

 – name: LOCUST_MODE

 value: master

 – name: TARGET_HOST

 value: http://sample-webapp:8000

 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

locust-master-service.yaml

kind: Service

apiVersion: v1

metadata:

 name: locust-master

 namespace: kube-system

 labels:

 name: locust

 role: master

spec:

 ports:

 – port: 8089

 targetPort: loc-master-web

 protocol: TCP

 name: loc-master-web

 – 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:

 name: locust

 role: master

locust-worker-controller.yaml

kind: ReplicationController

apiVersion: v1

metadata:

 name: locust-worker

 namespace: kube-system

 labels:

 name: locust

 role: worker

spec:

 replicas: 1

 selector:

 name: locust

 role: worker

 template:

 metadata:

 labels:

 name: locust

 role: worker

 spec:

 containers:

 – name: locust

 image: index.tenxcloud.com/jimmy/locust-tasks:latest

 env:

 – name: LOCUST_MODE

 value: worker

 – name: LOCUST_MASTER

 value: locust-master

 – name: TARGET_HOST

 value: http://sample-webapp:8000

kubectl create -f locust-master-controller.yaml
kubectl create -f locust-master-service.yaml
kubectl create -f locust-worker-controller.yaml

五:配置 Traefik

– host: locust.donkey

 http:

 paths:

 – path: /

 backend:

 serviceName: locust-master

 servicePort: 8089

kubectl replace -f ingress.yaml

六:執行測試
訪問 http://locust.donkey/  設置測試參數,進行測試

感謝你能夠認真閱讀完這篇文章,希望丸趣 TV 小編分享的“kubernetes 中如何實現分布式負載測試 Locust”這篇文章對大家有幫助,同時也希望大家多多支持丸趣 TV,關注丸趣 TV 行業資訊頻道,更多相關知識等著你來學習!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-16發表,共計3546字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 香港| 鲜城| 宁晋县| 托克逊县| 噶尔县| 湖州市| 始兴县| 贞丰县| 道孚县| 咸丰县| 辽中县| 永仁县| 吉首市| 阿拉善左旗| 宁远县| SHOW| 溧阳市| 麻城市| 丁青县| 女性| 滦平县| 和顺县| 乐平市| 大渡口区| 互助| 平湖市| 通辽市| 扎赉特旗| 新巴尔虎右旗| 青田县| 虹口区| 阿拉善右旗| 嘉祥县| 连云港市| 新蔡县| 朝阳市| 屏山县| 新化县| 和硕县| 濮阳市| 孙吴县|