लिटमस कैओस के साथ एक अधिक मजबूत Apache APISIX इन्ग्रेस कंट्रोलर बनाना

Jintao Zhang

Jintao Zhang

May 4, 2023

Technology

अवलोकन

कैओस इंजीनियरिंग सॉफ्टवेयर सिस्टम की लचीलापन और विश्वसनीयता का आकलन और सुधार करने में महत्वपूर्ण भूमिका निभाता है। विघटनकारी घटनाओं का अनुकरण करके, संगठन कमजोरियों की पहचान कर सकते हैं और सिस्टम के डिजाइन और आर्किटेक्चर में सुधार कर सकते हैं। इस लेख में, हम कैओस इंजीनियरिंग के महत्व और इनग्रेस कंट्रोलर के लिए कैओस प्रयोगों को डिजाइन करने में इसके विशिष्ट अनुप्रयोग पर चर्चा करेंगे।

हमें कैओस इंजीनियरिंग की आवश्यकता क्यों है?

कैओस इंजीनियरिंग सॉफ्टवेयर सिस्टम का मूल्यांकन करने की प्रक्रिया है जिसमें सर्वर नेटवर्क आउटेज या API थ्रॉटलिंग जैसी विघटनकारी घटनाओं का अनुकरण किया जाता है। सिस्टम के भीतर अराजकता या दोषों को शुरू करके, हम अस्थिर और अप्रत्याशित स्थितियों में सिस्टम की लचीलापन और विश्वसनीयता का परीक्षण कर सकते हैं।

कैओस इंजीनियरिंग टीमों को वास्तविक दुनिया के परिदृश्यों को एक सुरक्षित नियंत्रण वातावरण में अनुकरण करके छिपे हुए जोखिमों की पहचान करने, कमजोरियों की निगरानी करने और वितरित सिस्टम में प्रदर्शन बाधाओं की पहचान करने में मदद करता है। यह दृष्टिकोण सिस्टम डाउनटाइम या उत्पादन में व्यवधान को प्रभावी ढंग से रोकता है।

नेटफ्लिक्स के सिस्टम को संभालने के तरीके ने हमें एक अधिक वैज्ञानिक दृष्टिकोण अपनाने के लिए प्रेरित किया, जिसने कैओस इंजीनियरिंग के जन्म और विकास को प्रेरित किया।

1. विघटनकारी घटनाओं का परिचय

कैओस इंजीनियरिंग में नेटवर्क विभाजन, सेवा गिरावट, और संसाधन सीमाएं जैसी विघटनकारी घटनाओं को शुरू करना शामिल है, ताकि वास्तविक दुनिया के परिदृश्यों का अनुकरण किया जा सके और सिस्टम की अप्रत्याशित स्थितियों को संभालने की क्षमता का परीक्षण किया जा सके। इसका उद्देश्य कमजोरियों या दोषों की पहचान करना और सिस्टम के डिजाइन और आर्किटेक्चर में सुधार करना है ताकि इसे अधिक मजबूत और लचीला बनाया जा सके।

2. सिस्टम लचीलापन का परीक्षण

आज के लगातार विकसित हो रहे और तेजी से बदलते प्रौद्योगिकी परिदृश्य में, सिस्टम लचीलापन का परीक्षण करना महत्वपूर्ण है ताकि यह सुनिश्चित किया जा सके कि सिस्टम मजबूत, स्केलेबल और अप्रत्याशित चुनौतियों और स्थितियों को संभालने में सक्षम हैं। कैओस इंजीनियरिंग इस लक्ष्य को प्राप्त करने का एक प्रभावी तरीका है, जिसमें विघटनकारी घटनाओं को शुरू करके सिस्टम की प्रतिक्रिया का अवलोकन किया जाता है और इसकी अप्रत्याशित स्थितियों को संभालने की क्षमता को मापा जाता है।

संगठन सिस्टम लॉग, प्रदर्शन मेट्रिक्स, और उपयोगकर्ता अनुभव की निगरानी करके सिस्टम लचीलापन पर विघटनकारी घटनाओं के प्रभाव को माप सकते हैं। इन मेट्रिक्स को ट्रैक करने से सिस्टम के व्यवहार की बेहतर समझ मिलती है, जिससे संगठन सुधार के क्षेत्रों की पहचान कर सकते हैं।

3. छिपी हुई समस्याओं की खोज

वितरित सिस्टम में छिपी हुई समस्याएं, जैसे डेटा हानि, प्रदर्शन बाधाएं, और संचार त्रुटियां, होने की संभावना होती है, जिनका पता लगाना चुनौतीपूर्ण हो सकता है, क्योंकि वे केवल तब दिखाई दे सकती हैं जब सिस्टम दबाव में हो। कैओस इंजीनियरिंग विघटनकारी घटनाओं को शुरू करके इन छिपी हुई समस्याओं को उजागर करने में मदद कर सकता है। इस जानकारी का उपयोग सिस्टम के डिजाइन और आर्किटेक्चर में सुधार करने के लिए किया जा सकता है, जिससे इसे अधिक लचीला और विश्वसनीय बनाया जा सके।

इन समस्याओं को सक्रिय रूप से पहचानने और हल करने से सिस्टम की विश्वसनीयता और प्रदर्शन में सुधार होता है, डाउनटाइम को रोकता है, डेटा हानि के जोखिम को कम करता है, और सिस्टम को सुचारू रूप से चलाने में मदद करता है।

4. इसका क्या मूल्य है और हमें इसकी आवश्यकता क्यों है?

वितरित सिस्टम जटिल और स्वाभाविक रूप से अराजक होते हैं, जो विफलता का कारण बन सकते हैं। क्लाउड और माइक्रोसर्विसेज आर्किटेक्चर का उपयोग कई लाभ प्रदान करता है, लेकिन इसके साथ जटिलता और अराजकता भी आती है। इंजीनियरों की जिम्मेदारी है कि वे सिस्टम को यथासंभव विश्वसनीय बनाएं।

परीक्षण के बिना, उत्पादन वातावरण में प्रोजेक्ट का उपयोग करने का कोई विश्वास नहीं होता है। पारंपरिक यूनिट टेस्ट और एंड-टू-एंड टेस्ट के अलावा, कैओस टेस्ट को शुरू करने से सिस्टम अधिक मजबूत बनता है।

जब कोई त्रुटि होती है, तो इसे ठीक करने में समय लगता है और इससे अमूल्य नुकसान हो सकता है, जिसके भविष्य में दीर्घकालिक प्रभाव हो सकते हैं। मरम्मत प्रक्रिया के दौरान, सिस्टम की जटिलता, त्रुटि का प्रकार, और संभावित नई समस्याओं सहित विभिन्न कारकों पर विचार करने की आवश्यकता होती है, ताकि अंतिम मरम्मत प्रभावी हो सके।

इसके अलावा, जब एक ओपन-सोर्स प्रोजेक्ट उत्पादन वातावरण में उपयोगकर्ताओं को गंभीर त्रुटियां देता है, तो कई उपयोगकर्ता अन्य उत्पादों पर स्विच कर सकते हैं।

इनग्रेस कंट्रोलर के लिए कैओस प्रयोग कैसे डिजाइन करें?

1. इनग्रेस क्या है?

इनग्रेस एक Kubernetes संसाधन ऑब्जेक्ट है जिसमें बाहरी क्लाइंट्स को क्लस्टर के भीतर सेवाओं तक कैसे पहुंच सकते हैं, इसके नियम होते हैं। ये नियम निर्धारित करते हैं कि कौन से क्लाइंट कौन सी सेवाओं तक पहुंच सकते हैं, क्लाइंट अनुरोधों को उचित सेवाओं तक कैसे रूट किया जाता है, और क्लाइंट अनुरोधों को कैसे संभाला जाता है।

2. इनग्रेस कंट्रोलर क्या है?

एक इनग्रेस संसाधन को संसाधित करने के लिए एक इनग्रेस कंट्रोलर की आवश्यकता होती है। कंट्रोलर इनग्रेस नियमों को एक प्रॉक्सी पर कॉन्फ़िगरेशन में अनुवाद करता है, जिससे बाहरी क्लाइंट्स क्लस्टर के भीतर सेवाओं तक पहुंच सकते हैं। उत्पादन वातावरण में, इनग्रेस कंट्रोलर को जटिल क्षमताओं की आवश्यकता होती है, जैसे कि पहुंच स्रोतों और अनुरोध विधियों को सीमित करना, प्रमाणीकरण, और प्राधिकरण। अधिकांश इनग्रेस कंट्रोलर इनग्रेस संसाधन में एनोटेशन के माध्यम से इनग्रेस के शब्दार्थ को विस्तारित करते हैं।

3. Apache APISIX इनग्रेस कंट्रोलर क्या है?

Apache APISIX इनग्रेस कंट्रोलर एक विशेष प्रकार का लोड बैलेंसर है जो प्रशासकों को इनग्रेस ट्रैफ़िक को प्रबंधित और नियंत्रित करने में मदद करता है। यह APISIX को डेटा प्लेन के रूप में उपयोग करता है ताकि उपयोगकर्ताओं को डायनामिक रूटिंग, लोड बैलेंसिंग, लोचदार स्केलिंग, सुरक्षा नीतियां, और अन्य सुविधाएं प्रदान की जा सकें, जो नेटवर्क नियंत्रण में सुधार करती हैं और उनके व्यवसाय के लिए उच्च उपलब्धता और सुरक्षा सुनिश्चित करती हैं। APISIX इनग्रेस कंट्रोलर तीन कॉन्फ़िगरेशन मोड का समर्थन करता है: Kubernetes इनग्रेस, कस्टम संसाधन, और गेटवे API।

APISIX-Ingress

4. Litmus Chaos क्या है?

Litmus Chaos एक ओपन-सोर्स कैओस इंजीनियरिंग फ्रेमवर्क है जो कंट्रोलर और माइक्रोसर्विसेज आर्किटेक्चर की स्थिरता को मान्य करने के लिए एक इंफ्रास्ट्रक्चर प्रयोगात्मक फ्रेमवर्क प्रदान करता है। यह विभिन्न वातावरणों, जैसे कंटेनर-स्तर और एप्लिकेशन-स्तर वातावरण, प्राकृतिक आपदाओं, दोषों, और अपग्रेड का अनुकरण कर सकता है, ताकि यह समझा जा सके कि सिस्टम इन परिवर्तनों पर कैसे प्रतिक्रिया करता है। फ्रेमवर्क यह भी अन्वेषण कर सकता है कि कंट्रोलर और एप्लिकेशन के बीच व्यवहार में कैसे परिवर्तन होते हैं, और कंट्रोलर विशिष्ट स्थितियों में चुनौतियों पर कैसे प्रतिक्रिया करते हैं। Litmus Chaos सुविधाजनक ऑब्जर्वेबिलिटी इंटीग्रेशन क्षमताएं प्रदान करता है और अत्यधिक विस्तार योग्य है।

5. कैओस प्रयोग कैसे डिजाइन करें?

यहां किसी भी परिदृश्य में कैओस प्रयोग डिजाइन करने के लिए एक सामान्य प्रक्रिया है:

  • परीक्षण के तहत सिस्टम को परिभाषित करें: सिस्टम के उन विशिष्ट घटकों की पहचान करें जिन पर आप प्रयोग करना चाहते हैं और प्रयोग के लिए स्पष्ट और मापने योग्य उद्देश्य विकसित करें। इसमें हार्डवेयर और सॉफ्टवेयर जैसे घटकों की एक व्यापक सूची बनाना शामिल है, जिनका परीक्षण किया जाएगा, साथ ही प्रयोग के दायरे और अपेक्षित परिणामों को परिभाषित करना शामिल है।

under-test

kube-apiserver: यदि कोई अपवाद होता है, तो इनग्रेस संसाधन लिखने में विफल हो जाता है। Ingress-controller: नेटवर्क व्यवधान, क्रैश, Podfaults, I/O data-plane: नेटवर्क व्यवधान, क्रैश, Podfaults, I/O

  • सही प्रयोग चुनें: एक प्रयोग चुनें जो आपके द्वारा निर्धारित उद्देश्यों के साथ संरेखित हो और वास्तविक दुनिया के परिदृश्य का सटीक अनुकरण करे। यह सुनिश्चित करने में मदद करेगा कि प्रयोग सार्थक परिणाम उत्पन्न करे और सिस्टम के व्यवहार को सटीक रूप से प्रतिबिंबित करे।
  • परिकल्पना स्थापित करें: प्रयोग के दौरान सिस्टम कैसे व्यवहार करेगा और आप क्या परिणाम अपेक्षित करते हैं, इसके बारे में एक परिकल्पना स्थापित करें। यह अनुभव या शोध पर आधारित होना चाहिए, और यह उचित और परीक्षण योग्य होना चाहिए।
  • प्रयोग चलाएं: प्रयोग को एक नियंत्रित वातावरण में चलाएं, जैसे कि स्टेजिंग वातावरण, ताकि उत्पादन सिस्टम को नुकसान की संभावना को सीमित किया जा सके। प्रयोग के दौरान सभी प्रासंगिक डेटा एकत्र करें और इसे सुरक्षित रूप से संग्रहीत करें। इस बात पर विभिन्न मत हो सकते हैं कि प्रयोग सीधे उत्पादन वातावरण में होना चाहिए या नहीं। हालांकि, अधिकांश परिदृश्यों के लिए, हमें यह सुनिश्चित करने की आवश्यकता है कि सिस्टम का सेवा स्तर उद्देश्य (SLO) पूरा हो।
  • परिणामों का मूल्यांकन करें: प्रयोग के परिणामों का मूल्यांकन करें और उनकी तुलना अपनी परिकल्पना से करें। एकत्रित डेटा का विश्लेषण करें और किसी भी अवलोकन या निष्कर्ष को दस्तावेज़ करें। इसमें किसी भी अप्रत्याशित परिणाम या विसंगतियों की पहचान करना और यह निर्धारित करना शामिल है कि वे सिस्टम को कैसे प्रभावित कर सकते हैं। इसके अलावा, यह विचार करें कि प्रयोग के परिणामों का उपयोग सिस्टम में सुधार करने के लिए कैसे किया जा सकता है।

इनग्रेस कंट्रोलर के मुख्य उपयोग परिदृश्य

इनग्रेस कंट्रोलर की सबसे महत्वपूर्ण क्षमता ट्रैफ़िक को प्रॉक्सी करना है, और अन्य सभी कार्य इस मुख्य कार्य पर आधारित हैं। इसलिए, कैओस इंजीनियरिंग करते समय, सामान्य प्रॉक्सी ट्रैफ़िक मुख्य मेट्रिक है।

APISIX इनग्रेस कंट्रोलर के लिए परीक्षण के तहत सिस्टम को परिभाषित करने के लिए, उपयोगकर्ताओं को रूट कॉन्फ़िगरेशन, जैसे इनग्रेस, गेटवे API, या CRD बनाने की आवश्यकता होती है, और इन्हें Kubectl के माध्यम से Kubernetes क्लस्टर पर लागू करना होता है। यह प्रक्रिया kube-apiserver से प्रमाणीकरण, प्राधिकरण, प्रवेश और अन्य संबंधित प्रक्रियाओं से गुजरती है, और फिर इसे etcd में संग्रहीत किया जाता है।

APISIX इनग्रेस कंट्रोलर Kubernetes संसाधनों में परिवर्तनों की लगातार निगरानी करता है। ये कॉन्फ़िगरेशन फिर डेटा प्लेन पर कॉन्फ़िगरेशन में परिवर्तित हो जाते हैं। जब कोई क्लाइंट डेटा प्लेन से अनुरोध करता है, तो यह रूटिंग नियमों के अनुसार अपस्ट्रीम सेवा तक पहुंचता है।

यदि kube-apiserver में कोई अपवाद होता है, तो यह कॉन्फ़िगरेशन बनाने से रोक देगा, या इनग्रेस कंट्रोलर को सही कॉन्फ़िगरेशन प्राप्त करने से रोक देगा। इसी तरह, यदि डेटा प्लेन में कोई अपवाद होता है, जैसे कि नेटवर्क व्यवधान या Pod मारा जाता है, तो यह भी सामान्य ट्रैफ़िक प्रॉक्सी करने में सक्षम नहीं होगा।

हमारे प्रयोग का दायरा मुख्य रूप से यह है कि यदि इनग्रेस कंट्रोलर में कोई अपवाद होता है, तो सिस्टम की उपलब्धता पर क्या प्रभाव पड़ता है।

1. विस्तृत संचालन चरण

  • सही प्रयोग चुनें: हम एंड-टू-एंड टेस्ट के माध्यम से गलत कॉन्फ़िगरेशन के कई परिदृश्यों को कवर कर सकते हैं। मुख्य रूप से कैओस इंजीनियरिंग के माध्यम से, हम यह सत्यापित कर सकते हैं कि जब इनग्रेस-कंट्रोलर Pod को X? मिलता है, तो क्लाइंट का अनुरोध अभी भी सामान्य प्रतिक्रिया प्राप्त कर सकता है।
  • परिकल्पना स्थापित करें: प्रत्येक परिदृश्य के लिए, हम एक परिकल्पना बना सकते हैं जैसे "जब इनग्रेस-कंट्रोलर Pod को X? मिलता है, तो क्लाइंट का अनुरोध अभी भी सामान्य प्रतिक्रिया प्राप्त कर सकता है।"
  • प्रयोग चलाएं: प्रयोग और चर निर्धारित हो चुके हैं, इसलिए अब केवल प्रयोग करना बाकी है।
    Litmus Chaos प्रयोग करने के विभिन्न तरीके प्रदान करता है। हम इसे Litmus Portal के माध्यम से कर सकते हैं। ऐसा करने के लिए, हमें एक कैओस परिदृश्य बनाने की आवश्यकता है, प्रयोग किए जाने वाले एप्लिकेशन का चयन करें, और ये चरण अपेक्षाकृत सरल हैं। हालांकि, हमें इस बात पर ध्यान देना चाहिए कि Litmus Chaos में एक Probes संसाधन शामिल है।

Probes प्लग करने योग्य जांच हैं जो किसी भी कैओस प्रयोग के लिए ChaosEngine के भीतर परिभाषित किए जा सकते हैं। प्रयोग पॉड्स इन जांचों को उस मोड के आधार पर निष्पादित करते हैं जिसमें वे परिभाषित होते हैं और प्रयोग के निर्णय के लिए आवश्यक शर्तों के रूप में उनकी सफलता को मानते हैं, साथ ही मानक अंतर्निहित जांचों के अलावा। साथ ही, हम प्रयोगों को शेड्यूल भी कर सकते हैं, जो एक बहुत ही मूल्यवान कार्य है।

इसके अलावा, Litmus Chaos YAML मैनिफेस्ट जमा करके प्रयोग चलाने का भी समर्थन करता है।

chaos-center-portal

  • परिणामों का मूल्यांकन करें: Litmus Chaos में अंतर्निहित सांख्यिकीय रिपोर्ट हैं, और इसे Prometheus और Grafana के साथ एकीकृत किया जा सकता है ताकि एकीकृत डैशबोर्ड प्रदान किया जा सके।

statistics-report

2. लाभ और भविष्य

कठोर एंड-टू-एंड टेस्टिंग और कैओस इंजीनियरिंग की शक्ति के माध्यम से, हमें वितरित APISIX इनग्रेस कंट्रोलर की स्थिरता और विश्वसनीयता पर विश्वास है। कैओस इंजीनियरिंग ने हमें बग्स की पहचान करने और ठीक करने में भी मदद की है। हम इस अद्भुत प्रोजेक्ट को सुधारने और विकसित करने के लिए लगातार काम कर रहे हैं, और हम आपको हमारे समुदाय में शामिल होने के लिए आमंत्रित करते हैं।

Tags: