بيان المشكلة: ضمان صمود منصة التجارة الإلكترونية المعتمدة على الخدمات الصغيرة.
يعد صمود النظام متطلبًا رئيسيًا لمنصات التجارة الإلكترونية أثناء عمليات التوسيع للحفاظ على تشغيل الخدمات وتقديم التميز في الأداء للمستخدمين. لقد وضعنا منصة بنية تحتية معمارية صغيرة الخدمات تواجه فشل النظام بشكل متقطع عند مواجهة أحداث حركة مرور كثيفة. المشاكل المتعلقة بتدهور توفر الخدمة جنبًا إلى جنب مع تأثير الإيرادات تحدث أساسًا بسبب تعطل تجمعات Kubernetes جنبًا إلى جنب مع نفاد الموارد وانقطاع الشبكة التي تصيبنا خلال مواسم التسوق الذروية.
تخطط المنظمة لاستخدام مشروع Litmus الذي يعتبر جزءًا من CNCF لإجراء تقييمات وتعزيزات في الصمود للمنصة. تصبح نقاط ضعف نظامنا أكثر وضوحًا عندما نقوم بإجراء اختبارات فشل محاكاة باستخدام Litmus، الذي يتيح لنا تشغيل حالات فشل في العالم الحقيقي مثل أحداث إنهاء التجمع وتأخير الشبكة وحدود استخدام الموارد. تتيح لنا التجارب التحقق من أنظمة التحكم في التوسعة بينما نختبر إجراءات استعادة الكوارث ونحقق أقصى استفادة من إعدادات Kubernetes نحو موثوقية النظام الكاملة.
ينشئ النظام أساسا قويًا لتحمل حالات الفشل وتوزيع فترات حركة المرور المزدحمة بأمان دون تدهور جودة تجربة المستخدم. تطبيق هندسة الفوضى بشكل استباقي على بنية البنية التحتية لدينا يمكن من تقليل المخاطر بشكل أفضل وزيادة قابلية الملاحظة، مما يسمح لنا بتطوير طرق استرداد آلية تعزز صمود منصتنا في التجارة الإلكترونية إلى كل حالة تشغيلية.
إعداد بيئة تجربة الفوضى
قم بتثبيت LitmusChaos في عقد Kubernetes الخاص بك:
helm repo add litmuschaos https://litmuschaos.github.io/litmus-helm/
helm repo update
helm install litmus litmuschaos/litmus
تحقق من التثبيت:
kubectl get pods -n litmus
ملاحظة: تأكد من أن الكلاستر جاهز لتجارب الفوضى.
حدد تجربة الفوضى
أنشئ ملف ChaosExperiment YAML لمحاكاة سيناريو حذف Pod.
مثال (pod-delete.yaml):
apiVersion litmuschaos.io/v1alpha1
kind ChaosExperiment
metadata
name pod-delete
namespace litmus
spec
definition
scope Namespaced
permissions
apiGroups"*"
resources"*"
verbs"*"
image"litmuschaos/go-runner:latest"
args
-c
./experiments/generic/pod_delete/pod_delete.test
command
/bin/bash
قم بتثبيت ChaosOperator وتكوين حساب الخدمة
نشر ChaosOperator لإدارة التجارب:
kubectl apply -f https://raw.githubusercontent.com/litmuschaos/litmus/master/litmus-operator/cluster-k8s.yml
ملاحظة: أنشئ ServiceAccount لمنح الأذونات اللازمة.
حقن الفوضى في التطبيق المستهدف
وسم مساحة أسماء التطبيق للفوضى:
kubectl label namespace <target-namespace> litmuschaos.io/chaos=enabled
نشر ChaosEngine لتحفيز التجربة:
مثال (chaosengine.yaml
):
apiVersion litmuschaos.io/v1alpha1
kind ChaosEngine
metadata
name pod-delete-engine
namespace <target-namespace>
spec
appinfo
appns'<target-namespace>'
applabel'app=<your-app-label>'
appkind'deployment'
chaosServiceAccount litmus-admin
monitoringfalse
experiments
name pod-delete
تطبيق ChaosEngine:
kubectl apply -f chaosengine.yaml
مراقبة التجربة
عرض التقدم:
kubectl describe chaosengine pod-delete-engine -n <target-namespace>
تحقق من حالة حاويات الفوضى:
kubectl get pods -n <target-namespace>
تحليل النتائج
بعد التجربة، راجع السجلات والقياسات لتحديد ما إذا كان التطبيق قد تعافى تلقائيًا أو فشل تحت الضغط.
إليك بعض القياسات للمراقبة:
- وقت استجابة التطبيق
- معدلات الأخطاء أثناء وبعد التجربة
- الوقت المستغرق لاستعادة الحاويات
الحل
تم تحديد السبب الجذري: خلال حركة المرور العالية، فشلت الحاويات بسبب عدد غير كافٍ من النسخ في النشر وحدود الموارد غير المناسبة.
الإصلاحات المطبقة:
- زيادة عدد النسخ في النشر للتعامل مع حركة مرور أعلى
- قم بتكوين طلبات وحدود موارد مناسبة لوحدة الـ pod للوحدة المحددة
- نفذ Horizontal Pod Autoscaler (HPA) للتعامل مع تقلبات حركة المرور بشكل ديناميكي
الاستنتاج
من خلال استخدام LitmusChaos لمحاكاة فشل وحدة الـ pod، تم تحديد نقاط الضعف الرئيسية في نشر Kubernetes الخاص بمنصة التجارة الإلكترونية. أظهرت تجربة الفوضى أنه يمكن تحسين المتانة بشكل كبير من خلال التكييف مع التوسيع وتعديل توزيع الموارد. سمحت هندسة الفوضى بتعزيز النظام بشكل استباقي، مما أدى إلى زيادة الوقت الفعال للنظام ورضا العملاء.
Source:
https://dzone.com/articles/chaos-engineering-litmus-cncf-incubating-project