Quantcast
Viewing all articles
Browse latest Browse all 2063

จดบันทึกการทำ Load testing ด้วย Locust บน Kubernetes cluster

Image may be NSFW.
Clik here to view.

Image may be NSFW.
Clik here to view.

ความต้องการของการทำงานสำหรับ Load testing ของระบบงาน ด้วย Locust
ซึ่งอยู่บน Kubernetes cluster เป็นดังนี้
ทำการ setup Locust แบบ Master-slave หรือ Manager-worker
เพื่อช่วยสร้าง virtual user จำนวนมากตามที่ต้องการ
มีขั้นตอนการเตรียมดังนี้

สิ่งที่ต้องการคือ สร้าง Locust แบบ Master-slave

เพื่อช่วยสร้าง virtual user จำนวนมาก ๆ
จากนั้นส่งผลการทดสอบจาก target system
กลับมายัง master node เพื่อมาแสดงผลสวย ๆ ต่อไป
แสดงดังภาพ

Image may be NSFW.
Clik here to view.

ขั้นตอนที่ 1 ทำการสร้าง test case หรือ task สำหรับการทดสอบ

โดยเขียนด้วยภาษา Python
แสดงดังตัวอย่าง

[gist id="713b6bcaa63654446d95314f0e0a34a7" file="sample.py"]

คำอธิบาย
ทำการทดสอบ 2 endpoint คือ

  • / สำหรับ index หรือ หน้าแรก
  • /users สำหรับดึงข้อมูล user ทั้งหมด

ขั้นตอนที่ 2 สร้าง Dockerfile สำหรับสร้าง Image ของ Locust

ทำหน้าที่ run test case จากขั้นตอนที่ 1

[gist id="713b6bcaa63654446d95314f0e0a34a7" file="Dockerfile"]

โดยมีไฟล์ run.sh สำหรับกำหนด mode ของแต่ละ node
หรือในแต่ละ container ว่าทำงานแบบใด

  • standalone
  • master
  • worker
[gist id="713b6bcaa63654446d95314f0e0a34a7" file="run.sh"]

ทำการสร้าง Docker image ให้เรียบร้อย
ซึ่งสามารถสร้างผ่าน Docker, Docker compose หรือ Swarm ได้เช่นเดียวกัน
แต่ในครั้งนี้จะทำการ deploy บน Kubernetes cluster

ขั้นตอนที่ 3 สร้าง Manefest file สำหรับการ deploy Locust บน Kubernetes

จะประกอบไปด้วยไฟล์ต่าง ๆ ดังนี้

  • Deployment ของ master จำนวน 1 pod
  • Deployment ของ worker จำนวน 6 pod
  • Service สำหรับการ expose UI ของ Locust admin

Deployment ของ master จำนวน 1 pod

[gist id="713b6bcaa63654446d95314f0e0a34a7" file="master-deploy.yml"]

Deployment ของ worker จำนวน 6 pod

[gist id="713b6bcaa63654446d95314f0e0a34a7" file="worker-deploy.yml"]

Service สำหรับการ expose UI ของ Locust admin

[gist id="713b6bcaa63654446d95314f0e0a34a7" file="master-ui-service.yml"]

จากนั้นทำการ deploy บน cluster เป็นอันเรียบร้อย
เข้าใช้งาน Locust ผ่าน Web user interface ที่ deploy

Image may be NSFW.
Clik here to view.


ตัวอย่าง code เต็ม ๆ อยู่ที่ Github:Up1


Viewing all articles
Browse latest Browse all 2063

Trending Articles