بناء Apache APISIX Ingress Controller أكثر قوة باستخدام Litmus Chaos

Jintao Zhang

Jintao Zhang

May 4, 2023

Technology

نظرة عامة

تلعب هندسة الفوضى دورًا حاسمًا في تقييم وتعزيز مرونة وموثوقية أنظمة البرمجيات. من خلال محاكاة الأحداث التخريبية، يمكن للمنظمات تحديد نقاط الضعف وتحسين تصميم وهندسة النظام. في هذه المقالة، سنناقش أهمية هندسة الفوضى وتطبيقها المحدد في تصميم تجارب الفوضى لـ Ingress Controllers.

لماذا نحتاج إلى هندسة الفوضى؟

هندسة الفوضى هي عملية تقييم أنظمة البرمجيات من خلال محاكاة الأحداث التخريبية، مثل انقطاع شبكة الخادم أو تقليل سرعة API. من خلال إدخال الفوضى أو الأعطال داخل النظام، يمكننا اختبار مرونة وموثوقية النظام في ظروف غير مستقرة وغير متوقعة.

تساعد هندسة الفوضى الفرق على تحديد المخاطر الخفية، ومراقبة نقاط الضعف، وتحديد الاختناقات في الأداء في الأنظمة الموزعة من خلال محاكاة سيناريوهات العالم الحقيقي في بيئة تحكم آمنة. هذا النهج يمنع بشكل فعال توقف النظام أو انقطاعات الإنتاج.

ألهمتنا طريقة Netflix في التعامل مع الأنظمة لتبني نهج أكثر علمية، مما أدى إلى ولادة وتطور هندسة الفوضى.

1. إدخال الأحداث التخريبية

تشمل هندسة الفوضى إدخال أحداث تخريبية، مثل انقسام الشبكة، تدهور الخدمة، وقيود الموارد، لمحاكاة سيناريوهات العالم الحقيقي واختبار قدرة النظام على التعامل مع الظروف غير المتوقعة. الهدف هو تحديد نقاط الضعف أو العيوب وتحسين تصميم وهندسة النظام لجعله أكثر قوة ومرونة.

2. اختبار مرونة النظام

في عالم التكنولوجيا سريع التطور والمتغير باستمرار، يعد اختبار مرونة النظام أمرًا بالغ الأهمية لضمان أن الأنظمة قوية وقابلة للتوسع وقادرة على التعامل مع التحديات والظروف غير المتوقعة. تعد هندسة الفوضى طريقة فعالة لتحقيق ذلك من خلال إدخال أحداث تخريبية لمراقبة استجابة النظام وقياس قدرته على التعامل مع الظروف غير المتوقعة.

يمكن للمنظمات مراقبة سجلات النظام، مقاييس الأداء، وتجربة المستخدم لقياس تأثير الأحداث التخريبية على مرونة النظام. تتبع هذه المقاييس يوفر فهمًا أفضل لسلوك النظام، مما يسمح للمنظمات بتحديد مجالات التحسين.

3. اكتشاف المشكلات الخفية

الأنظمة الموزعة عرضة لمشكلات خفية، مثل فقدان البيانات، الاختناقات في الأداء، وأخطاء الاتصال، والتي قد يكون من الصعب اكتشافها، حيث قد تصبح مرئية فقط عندما يكون النظام تحت الضغط. يمكن لهندسة الفوضى أن تساعد في الكشف عن هذه المشكلات الخفية من خلال إدخال أحداث تخريبية. يمكن بعد ذلك استخدام هذه المعلومات لتحسين تصميم وهندسة النظام، مما يجعله أكثر مرونة وموثوقية.

التحديد والتصحيح الاستباقي لهذه المشكلات يعزز موثوقية وأداء الأنظمة، ويمنع التوقف، ويقلل من خطر فقدان البيانات، ويضمن أن النظام يعمل بسلاسة.

4. ما قيمتها ولماذا نحتاج إليها؟

الأنظمة الموزعة معقدة وفوضوية بطبيعتها، مما قد يؤدي إلى الفشل. يوفر استخدام بنية السحابة والخدمات المصغرة العديد من المزايا ولكنه يأتي أيضًا مع التعقيد والفوضى. المهندسون مسؤولون عن جعل النظام موثوقًا قدر الإمكان.

بدون الاختبار، لا توجد ثقة لاستخدام المشروع في بيئة الإنتاج. بالإضافة إلى اختبارات الوحدة التقليدية واختبارات النهاية إلى النهاية، فإن إدخال اختبارات الفوضى يجعل النظام أكثر قوة.

عند حدوث خطأ، فإن إصلاحه يستغرق وقتًا ويمكن أن يسبب خسائر لا تُحصى، مع تأثيرات طويلة المدى في المستقبل. أثناء عملية الإصلاح، يجب مراعاة عوامل مختلفة، بما في ذلك تعقيد النظام، نوع الخطأ، والمشكلات الجديدة المحتملة، لضمان الإصلاح النهائي الفعال.

علاوة على ذلك، عندما يجلب مشروع مفتوح المصدر أخطاء جسيمة للمستخدمين في بيئة الإنتاج، قد يتحول العديد من المستخدمين إلى منتجات أخرى.

كيفية تصميم تجارب الفوضى لـ Ingress Controller؟

1. ما هو Ingress؟

Ingress هو كائن مورد في Kubernetes يحتوي على قواعد لكيفية وصول العملاء الخارجيين إلى الخدمات داخل الكتلة. تحدد هذه القواعد أي العملاء يمكنهم الوصول إلى أي خدمات، وكيف يتم توجيه طلبات العملاء إلى الخدمات المناسبة، وكيف يتم التعامل مع طلبات العملاء.

2. ما هو Ingress Controller؟

يتطلب مورد Ingress وجود Ingress Controller لمعالجته. يقوم المتحكم بترجمة قواعد Ingress إلى تكوينات على وكيل، مما يسمح للعملاء الخارجيين بالوصول إلى الخدمات داخل الكتلة. في بيئة الإنتاج، تحتاج Ingress Controllers إلى امتلاك قدرات معقدة، مثل تحديد مصادر الوصول وطرق الطلب، المصادقة، والتفويض. معظم Ingress Controllers توسع دلالات Ingress من خلال التعليقات التوضيحية في مورد Ingress.

3. ما هو Apache APISIX Ingress Controller؟

Apache APISIX Ingress Controller هو نوع متخصص من موازنات الحمل الذي يساعد المسؤولين على إدارة والتحكم في حركة Ingress. يستخدم APISIX كطائرة بيانات لتزويد المستخدمين بـالتوجيه الديناميكي، موازنة الحمل، التوسع المرن، سياسات الأمان، وميزات أخرى لتحسين التحكم في الشبكة وضمان توافر وأمان أعلى لأعمالهم. يدعم APISIX Ingress Controller ثلاث طرق للتكوين: Kubernetes Ingress، الموارد المخصصة، و Gateway API.

APISIX-Ingress

4. ما هو Litmus Chaos؟

Litmus Chaos هو إطار عمل مفتوح المصدر لهندسة الفوضى يوفر إطار عمل تجريبي للبنية التحتية للتحقق من استقرار المتحكمات وبنى الخدمات المصغرة. يمكنه محاكاة بيئات مختلفة، مثل بيئات مستوى الحاوية ومستوى التطبيق، الكوارث الطبيعية، الأعطال، والترقيات، لفهم كيفية استجابة النظام لهذه التغييرات. يمكن للإطار أيضًا استكشاف التغييرات في السلوك بين المتحكمات والتطبيقات، وكيف تستجيب المتحكمات للتحديات في حالات محددة. يوفر Litmus Chaos قدرات ملاحظة مريحة للدمج وهو قابل للتوسيع بشكل كبير.

5. كيفية تصميم تجارب الفوضى؟

إليك إجراء عام لتصميم تجارب الفوضى في أي سيناريو:

  • تحديد النظام قيد الاختبار: حدد المكونات المحددة للنظام التي تريد إجراء التجارب عليها ووضع أهداف واضحة وقابلة للقياس للتجربة. يتضمن ذلك إنشاء قائمة شاملة بالمكونات، مثل الأجهزة والبرمجيات، التي سيتم اختبارها، بالإضافة إلى تحديد نطاق التجربة والنتائج المتوقعة.

under-test

kube-apiserver: إذا حدث استثناء، فشل كتابة مورد Ingress. Ingress-controller: انقطاع الشبكة، Crash، Podfaults، I/O data-plane: انقطاع الشبكة، Crash، Podfaults، I/O

  • اختيار التجربة المناسبة: اختر تجربة تتماشى مع الأهداف التي حددتها وتحاكي سيناريوًا واقعيًا. سيساعد ذلك في ضمان أن التجربة تنتج نتائج ذات معنى وتعكس بدقة سلوك النظام.
  • وضع فرضية: ضع فرضية حول كيفية تصرف النظام أثناء التجربة وما هي النتائج التي تتوقعها. يجب أن تكون هذه الفرضية مبنية على الخبرة أو البحث، ويجب أن تكون معقولة وقابلة للاختبار.
  • إجراء التجربة: قم بإجراء التجربة في بيئة خاضعة للتحكم، مثل بيئة التمثيل، للحد من إمكانية إلحاق الضرر بنظام الإنتاج. قم بجمع جميع البيانات ذات الصلة أثناء التجربة وتخزينها بشكل آمن. قد تكون هناك آراء مختلفة حول ما إذا كان يجب إجراء التجربة مباشرة في بيئة الإنتاج. ومع ذلك، بالنسبة لمعظم السيناريوهات، نحتاج إلى ضمان تحقيق هدف مستوى الخدمة (SLO) للنظام.
  • تقييم النتائج: قم بتقييم نتائج التجربة وقارنها بفرضيتك. قم بتحليل البيانات التي تم جمعها وقم بتوثيق أي ملاحظات أو نتائج. يتضمن ذلك تحديد أي نتائج غير متوقعة أو تناقضات وتحديد كيفية تأثيرها على النظام. بالإضافة إلى ذلك، فكر في كيفية استخدام نتائج التجربة لتحسين النظام.

السيناريوهات الرئيسية لاستخدام Ingress Controller

أهم قدرة لـ Ingress Controller هي توجيه حركة المرور، وجميع الوظائف الأخرى تعتمد على هذه الوظيفة الأساسية. لذلك، عند إجراء هندسة الفوضى، فإن توجيه حركة المرور بشكل طبيعي هو المقياس الرئيسي.

لتحديد النظام قيد الاختبار لـ APISIX Ingress Controller، يحتاج المستخدمون إلى إنشاء تكوينات الطريق، مثل Ingress، Gateway API، أو CRD، وتطبيقها على كتلة Kubernetes عبر Kubectl. تمر هذه العملية عبر kube-apiserver للمصادقة، التفويض، القبول والإجراءات ذات الصلة، ثم يتم تخزينها في etcd.

يقوم APISIX Ingress Controller بمراقبة التغييرات في موارد Kubernetes بشكل مستمر. يتم بعد ذلك تحويل هذه التكوينات إلى تكوينات على طائرة البيانات. عندما يطلب العميل طائرة البيانات، فإنه يصل إلى الخدمة العلوية وفقًا لقواعد التوجيه.

إذا حدث استثناء في kube-apiserver، فإنه يمنع إنشاء التكوين، أو يحصل Ingress Controller على التكوين الصحيح. وبالمثل، إذا حدث استثناء في طائرة البيانات، مثل انقطاع الشبكة أو قتل Pod، فإنه لن يكون قادرًا على توجيه حركة المرور بشكل طبيعي.

نطاق تجربتنا هو بشكل رئيسي تأثير الاستثناءات في Ingress Controller على توفر النظام.

1. خطوات التشغيل التفصيلية

  • اختيار التجربة المناسبة: يمكننا تغطية العديد من سيناريوهات التكوين غير الصحيح من خلال اختبارات النهاية إلى النهاية. بشكل رئيسي من خلال هندسة الفوضى، يمكننا التحقق مما إذا كانت طائرة البيانات لا تزال قادرة على توجيه حركة المرور بشكل طبيعي عندما يواجه Ingress Controller استثناء، مثل أخطاء DNS، انقطاع الشبكة، أو قتل Pod.
  • وضع فرضية: لكل سيناريو، يمكننا إنشاء فرضية مثل "عندما يحصل Ingress-controller Pod على ، يمكن أن يحصل طلب العميل على استجابة طبيعية."
  • إجراء التجربة: تم تحديد التجربة والمتغيرات، لذا كل ما تبقى هو إجراء التجربة.
    يوفر Litmus Chaos طرقًا مختلفة لإجراء التجارب. يمكننا القيام بذلك من خلال Litmus Portal. للقيام بذلك، نحتاج إلى إنشاء سيناريو فوضى، وتحديد التطبيق الذي سيتم إجراء التجربة عليه، وهذه الخطوات بسيطة نسبيًا. ومع ذلك، يجب أن ننتبه إلى أن Litmus Chaos يتضمن مورد Probes.

Probes هي فحوصات قابلة للتوصيل يمكن تعريفها داخل ChaosEngine لأي تجربة فوضى. تقوم حاويات التجربة بتنفيذ هذه الفحوصات بناءً على الوضع الذي تم تعريفها فيه وتعتبر نجاحها كشروط ضرورية في تحديد حكم التجربة، بالإضافة إلى الفحوصات المضمنة القياسية. في الوقت نفسه، يمكننا أيضًا جدولة التجارب، وهي وظيفة قيمة جدًا.

بالإضافة إلى ذلك، يدعم Litmus Chaos أيضًا إجراء التجارب من خلال تقديم ملفات YAML.

chaos-center-portal

  • تقييم النتائج: يحتوي Litmus Chaos على تقارير إحصائية مدمجة، ويمكن دمجه مع Prometheus و Grafana لتوفير لوحة تحكم موحدة للدمج.

statistics-report

2. الفوائد والمستقبل

من خلال اختبارات النهاية إلى النهاية الصارمة وقوة هندسة الفوضى، نحن واثقون من استقرار وموثوقية APISIX Ingress Controller الذي تم تسليمه. ساعدتنا هندسة الفوضى أيضًا في تحديد وإصلاح الأخطاء. نحن نعمل باستمرار على تحسين وتطوير هذا المشروع الرائع، وندعوك للانضمام إلى مجتمعنا.

Tags: