برنامه نویسی

مقدمه ای بر k6 Load Chaos در LitmusChaos

در چشم‌انداز دیجیتال پیچیده امروزی، انعطاف‌پذیری برنامه‌ها بسیار مهم است. مهندسی آشوب، با استفاده از ابزارهایی مانند LitmusChaos، عمداً خطاهایی را برای کشف مسائل سیستمی که در آزمایش‌های سنتی از قلم افتاده‌اند، معرفی می‌کند. از این به بعد، می توانیم از k6، یک ابزار تست بار با LitmusChaos استفاده کنیم. این پست به بررسی مهندسی آشوب با LitmusChaos می پردازد و آزمایش آشوب بار k6 را نشان می دهد.


فهرست مطالب

  • مهندسی آشوب و LitmusChaos چیست
  • مقدمه ای بر k6
  • تزریق هرج و مرج بار k6 با LitmusChaos (دمو)

مهندسی آشوب و LitmusChaos چیست

اگر سیستم های ما به طور ناگهانی دچار قطعی شوند چه؟ این روزها تشخیص دقیق مشکل دشوار است، به خصوص که سیستم‌های ما روی Kubernetes هستند، یعنی میکروسرویس‌ها هستند. در حالی که تست‌های واحد و تست‌های یکپارچه‌سازی می‌توانند نقاط ضعف برنامه ما را شناسایی کنند، اما نمی‌توانند نقاط ضعف را در پلتفرم کلی ما شناسایی کنند.

نمودار بالا تاثیر تاب آوری را نشان می دهد. استفاده از مهندسی آشوب می تواند یک راه عالی برای دستیابی به بیش از 90 درصد انعطاف پذیری باشد. مهندسی آشوب، رشته آزمایش بر روی یک سیستم به منظور ایجاد اطمینان در توانایی سیستم برای تحمل شرایط آشفته در تولید است. [1]. مهندسی آشوب شامل تزریق عمدی خطاها به یک سیستم برای آزمایش انعطاف پذیری آن است. LitmusChaos با ساده سازی Chaos Engineering اجرای این فرآیند را آسان تر می کند.

LitmusChaos (پروژه جوجه کشی CNCF) یک چارچوب مهندسی هرج و مرج بومی Cloud با پشتیبانی از ابرهای متقابل است. می‌توانید از Litmus برای تزریق آشوب کنترل‌شده و اجرای آزمایش‌های آشوب در محیط‌های صحنه‌سازی و تولید استفاده کنید، که به SREها اجازه می‌دهد باگ‌ها و آسیب‌پذیری‌ها را شناسایی کنند. اگر می خواهید در مورد Litmuschaos بیشتر بدانید، مستندات را بررسی کنید!

مقدمه ای بر k6

k6 یک ابزار تست بار منبع باز است که برای توسعه‌دهندگان طراحی شده است تا به تیم‌ها اجازه می‌دهد تا تست‌ها را به‌عنوان کد ایجاد کنند، تست‌های عملکرد را به عنوان بخشی از چرخه عمر توسعه نرم‌افزار ادغام کنند و به کاربران در تست، تجزیه و تحلیل و رفع مشکلات عملکرد برنامه کمک کند. k6 از انواع مختلف تست بار (مثلاً سنبله، دود، استرس) پشتیبانی می کند.

اکنون LitmusChaos از آزمایش بار k6 به عنوان یک خطای آشوب پشتیبانی می کند تا بتوانیم تولید بار را به برنامه هدف به عنوان بخشی از تست آشوب در Kubernetes شبیه سازی کنیم.

برای دانستن بیشتر در مورد آن، این اسناد را بررسی کنید. همچنین می توانید ادغام ما را در مستندات k6 بیابید

تزریق هرج و مرج بار k6 با LitmusChaos (دمو)

اجازه دهید آزمایش آشوب k6-loadgen را اجرا کنیم. برای سادگی، ما هرج و مرج را به نسخه نمایشی OpenTelemetry تزریق خواهیم کرد.

پیش نیازها

نسخه ی نمایشی opentelemetry را نصب کنید

پس از نصب Minikube و LitmusChaos، اکنون نسخه ی نمایشی opentelemetry را نصب می کنیم. تنها کاری که باید انجام دهید این است که کد زیر را وارد کنید.

helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts
helm install my-otel-demo open-telemetry/opentelemetry-demo
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اگر می‌خواهید یک تنظیم استقرار را سفارشی کنید، این مستندات را بررسی کنید.

ما نمی توانیم مستقیماً به سرویس otel-demo دسترسی پیدا کنیم، بنابراین از دستور minikube برای دریافت یک URL خارجی استفاده می کنیم.

minikube service my-otel-demo-frontendproxy --url
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نتیجه مانند یکی زیر است

آدرس خارجی

اکنون به سرویس frontend دسترسی داریم

otel-demo-frontend

شما می توانید با استفاده از URL داده شده به Grafana دسترسی پیدا کنید

http://<<given_url>>/grafana
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

ما استفاده خواهیم کرد Home > Dashboards > Demo Dashboard امروز.

grafana-dashboard

پروب های راه اندازی

شما به راحتی می توانید یک کاوشگر را به دنبال این مستندات ایجاد کنید. مقداری مانند زیر وارد کنید.

// URL: http://my-otel-demo-frontendproxy.default.svc.cluster.local:8080
// METHOD: GET
// CRITERIA: ==
// Response Code: 200
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نتیجه

نوشتن یک اسکریپت k6

لازم نیست موتور k6 نصب کنید! فقط باید یک اسکریپت k6 بنویسیم. ما از کد زیر استفاده می کنیم و آن را به عنوان ذخیره می کنیم script.js

import http from 'k6/http';
import { sleep } from 'k6';
export const options = {
  vus: 1000,
  duration: '30s',
};
export default function () {
  http.get('http://my-otel-demo-frontendproxy.default.svc.cluster.local:8080');
  sleep(1);
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اگر می خواهید فیلمنامه حرفه ای تری بنویسید، می توانید این مستندات را بررسی کنید.

و بیایید رازی کنیم

kubectl create secret generic k6-script \
    --from-file=<<script-path>>/script.js -n <>
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اکنون که تمام کارهای مقدماتی انجام شده است، بیایید یک آزمایش آشوب ایجاد کنیم.

بیایید یک آزمایش آشوب انجام دهیم

کلیک Chaos Experiments > + New Experiment برای ایجاد یک آزمایش آشوب جدید.

بین المللی

پس از کلیک بر روی Blank Canvas و Add دکمه ها، می توانیم خطای آشوب را در ChaosHub انتخاب کنیم. ما استفاده می کنیم k6-loadgen
هاب

ما مجبور نیستیم هیچ مقداری را وارد کنیم Target Application (بعداً درستش می کنیم). در Tune Fault تب، نام مخفی و کلیدی را که قبلا ایجاد کرده بودیم وارد می کنیم.

اهنگ

در نهایت، ما یک کاوشگر را اضافه می کنیم که قبلا ایجاد شده بود.
پویشگر

خوب، همه چیز تمام شد! بیایید یک آزمایش آشوب اجرا کنیم 🚀

چند دقیقه بعد، آزمایش آشوب ما با موفقیت انجام شد. تبریک 🎉
نتیجه

ما می توانیم نتیجه آزمایش بار را در داشبورد Grafana مشاهده کنیم. رفتن به Dashboards > Demo Dashboard > Requests Rate for frontend by span name > frontend-proxy. ما می توانیم نتیجه را در زیر مشاهده کنیم.

آشوب-آزمایش-نتیجه

خلاصه

خطای k6-loadgen تولید بار روی میزبان های هدف را برای مدت زمان آشفتگی خاصی شبیه سازی می کند. اثرات مهندسی آشوب را می توان با طراحی آزمایش هایی با بارگذار k6 مانند سایر گسل های آشوب در LitmusChaos به حداکثر رساند.

اگر به LitmusChaos علاقه مند هستید، به انجمن بپیوندید! می توانید به انجمن LitmusChaos در GitHub و Slack بپیوندید.

ممنون که خواندید🙏

پارک نامکیو
نگهدارنده LitmusChaos
لینکدین | GitHub

ارجاع

[1] اصول مهندسی آشوب

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا