مقدمه ای بر 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 دسترسی داریم
شما می توانید با استفاده از URL داده شده به Grafana دسترسی پیدا کنید
http://<<given_url>>/grafana
ما استفاده خواهیم کرد Home > Dashboards > Demo 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] اصول مهندسی آشوب