नमस्ते, हबर!
एक समय में, हम रूसी बाज़ार में इस विषय को पेश करने वाले पहले व्यक्ति थे
परिचय
कुबेरनेट्स को स्टेटलेस वर्कलोड को संभालने के लिए डिज़ाइन किया गया है। आमतौर पर, ऐसे वर्कलोड को माइक्रोसर्विस आर्किटेक्चर के रूप में प्रस्तुत किया जाता है, वे हल्के होते हैं, क्षैतिज रूप से अच्छे पैमाने पर होते हैं, 12-कारक अनुप्रयोगों के सिद्धांतों का पालन करते हैं, और सर्किट ब्रेकर और अराजकता बंदरों के साथ काम कर सकते हैं।
दूसरी ओर, काफ्का अनिवार्य रूप से एक वितरित डेटाबेस के रूप में कार्य करता है। इस प्रकार, काम करते समय, आपको राज्य से निपटना पड़ता है, और यह माइक्रोसर्विस की तुलना में बहुत भारी है। कुबेरनेट्स स्टेटफुल लोड का समर्थन करता है, लेकिन जैसा कि केल्सी हाईटॉवर दो ट्वीट्स में बताते हैं, उन्हें सावधानी से संभाला जाना चाहिए:
कुछ लोगों को लगता है कि यदि आप कुबेरनेट्स को एक स्टेटफुल वर्कलोड में रोल करते हैं, तो यह एक पूरी तरह से प्रबंधित डेटाबेस बन जाता है जो आरडीएस को टक्कर देता है। यह गलत है। हो सकता है, यदि आप पर्याप्त मेहनत करते हैं, अतिरिक्त घटक जोड़ते हैं और एसआरई इंजीनियरों की एक टीम को आकर्षित करते हैं, तो आप कुबेरनेट्स के शीर्ष पर आरडीएस बनाने में सक्षम होंगे।
मैं हमेशा सलाह देता हूं कि कुबेरनेट्स पर स्टेटफुल वर्कलोड चलाते समय हर कोई अत्यधिक सावधानी बरतें। अधिकांश लोग जो पूछते हैं कि "क्या मैं कुबेरनेट्स पर स्टेटफुल वर्कलोड चला सकता हूं" उनके पास कुबेरनेट्स के साथ पर्याप्त अनुभव नहीं है, और अक्सर वे जिस वर्कलोड के बारे में पूछ रहे हैं।
तो, क्या आपको कुबेरनेट्स पर काफ्का चलाना चाहिए? प्रतिप्रश्न: क्या काफ्का कुबेरनेट्स के बिना बेहतर काम करेगा? इसीलिए मैं इस लेख में इस बात पर प्रकाश डालना चाहता हूं कि काफ्का और कुबेरनेट्स एक दूसरे के पूरक कैसे हैं, और उनके संयोजन से क्या नुकसान हो सकते हैं।
पूरा होने का समय
आइए मूल चीज़ के बारे में बात करें - रनटाइम वातावरण
प्रक्रिया
काफ्का ब्रोकर सीपीयू के अनुकूल हैं। टीएलएस कुछ ओवरहेड पेश कर सकता है। हालाँकि, काफ्का क्लाइंट अधिक सीपीयू गहन हो सकते हैं यदि वे एन्क्रिप्शन का उपयोग करते हैं, लेकिन यह दलालों को प्रभावित नहीं करता है।
स्मृति
काफ्का दलाल स्मृति को खा जाते हैं। जेवीएम हीप का आकार आमतौर पर 4-5 जीबी तक सीमित होता है, लेकिन आपको बहुत अधिक सिस्टम मेमोरी की भी आवश्यकता होगी क्योंकि काफ्का पेज कैश का बहुत अधिक उपयोग करता है। कुबेरनेट्स में, कंटेनर संसाधन निर्धारित करें और तदनुसार सीमाएँ अनुरोध करें।
डेटा भंडारण
कंटेनरों में डेटा भंडारण अल्पकालिक है - पुनः आरंभ करने पर डेटा खो जाता है। काफ्का डेटा के लिए आप वॉल्यूम का उपयोग कर सकते हैं emptyDir
, और प्रभाव समान होगा: पूरा होने के बाद आपका ब्रोकर डेटा खो जाएगा। आपके संदेश अभी भी अन्य ब्रोकरों पर प्रतिकृतियों के रूप में संग्रहीत किए जा सकते हैं। इसलिए, पुनः आरंभ करने के बाद, विफल ब्रोकर को पहले सभी डेटा को दोहराना होगा, और इस प्रक्रिया में बहुत समय लग सकता है।
यही कारण है कि आपको दीर्घकालिक डेटा संग्रहण का उपयोग करना चाहिए। इसे XFS फ़ाइल सिस्टम या अधिक सटीक रूप से ext4 के साथ गैर-स्थानीय दीर्घकालिक भंडारण होने दें। एनएफएस का प्रयोग न करें. मैं आपको चेतावनी दी। एनएफएस संस्करण v3 या v4 काम नहीं करेगा। संक्षेप में, यदि काफ्का ब्रोकर एनएफएस में "बेवकूफीपूर्ण नाम बदलें" समस्या के कारण डेटा निर्देशिका को हटा नहीं पाता है तो वह क्रैश हो जाएगा। यदि मैंने आपको अभी तक आश्वस्त नहीं किया है, तो बहुत सावधानी से
Сеть
अधिकांश वितरित प्रणालियों की तरह, काफ्का का प्रदर्शन नेटवर्क विलंबता को न्यूनतम और बैंडविड्थ को अधिकतम रखने पर अत्यधिक निर्भर है। सभी ब्रोकरों को एक ही नोड पर होस्ट करने का प्रयास न करें, क्योंकि इससे उपलब्धता कम हो जाएगी। यदि कुबेरनेट्स नोड विफल हो जाता है, तो संपूर्ण काफ्का क्लस्टर विफल हो जाएगा। इसके अलावा, काफ्का क्लस्टर को संपूर्ण डेटा केंद्रों में न फैलाएं। कुबेरनेट्स क्लस्टर के लिए भी यही बात लागू होती है। इस मामले में एक अच्छा समझौता विभिन्न उपलब्धता क्षेत्रों को चुनना है।
विन्यास
नियमित घोषणापत्र
कुबेरनेट्स वेबसाइट है
- नीचे: कुबेरनेट्स में पॉड सबसे छोटी तैनाती योग्य इकाई है। एक पॉड में आपका कार्यभार होता है, और पॉड स्वयं आपके क्लस्टर में एक प्रक्रिया से मेल खाता है। एक पॉड में एक या अधिक कंटेनर होते हैं। समूह में प्रत्येक ज़ूकीपर सर्वर और काफ्का क्लस्टर में प्रत्येक ब्रोकर एक अलग पॉड में चलेंगे।
- स्टेटफुलसेट: स्टेटफुलसेट एक कुबेरनेट्स ऑब्जेक्ट है जो कई स्टेटफुल वर्कलोड को संभालता है, और ऐसे वर्कलोड के लिए समन्वय की आवश्यकता होती है। स्टेटफुलसेट्स पॉड्स के ऑर्डर और उनकी विशिष्टता के संबंध में गारंटी प्रदान करता है।
- बिना नेतृत्व वाली सेवाएं: सेवाएँ आपको तार्किक नाम का उपयोग करके ग्राहकों से पॉड अलग करने की अनुमति देती हैं। इस मामले में कुबेरनेट्स लोड संतुलन के लिए जिम्मेदार है। हालाँकि, ज़ूकीपर और काफ्का जैसे स्टेटफुल वर्कलोड को संचालित करते समय, ग्राहकों को एक विशिष्ट उदाहरण के साथ संवाद करने की आवश्यकता होती है। यह वह जगह है जहां हेडलेस सेवाएं काम में आती हैं: इस मामले में, क्लाइंट के पास अभी भी एक तार्किक नाम होगा, लेकिन आपको सीधे पॉड से संपर्क नहीं करना पड़ेगा।
- दीर्घकालिक भंडारण मात्रा: ऊपर बताए गए गैर-स्थानीय ब्लॉक लगातार स्टोरेज को कॉन्फ़िगर करने के लिए इन वॉल्यूम की आवश्यकता होती है।
पर
हेल्म चार्ट
हेल्म कुबेरनेट्स के लिए एक पैकेज मैनेजर है जिसकी तुलना यम, एपीटी, होमब्रू या चॉकलेटी जैसे ओएस पैकेज मैनेजरों से की जा सकती है। यह हेल्म चार्ट में वर्णित पूर्वनिर्धारित सॉफ़्टवेयर पैकेजों को स्थापित करना आसान बनाता है। एक अच्छी तरह से चुना गया हेल्म चार्ट कुबेरनेट्स पर काफ्का का उपयोग करने के लिए सभी मापदंडों को ठीक से कॉन्फ़िगर करने के कठिन कार्य को आसान बनाता है। कई काफ्का आरेख हैं: आधिकारिक स्थित है
ऑपरेटरों
क्योंकि हेल्म में कुछ कमियाँ हैं, एक अन्य उपकरण काफी लोकप्रियता हासिल कर रहा है: कुबेरनेट्स ऑपरेटर्स। ऑपरेटर न केवल कुबेरनेट्स के लिए सॉफ़्टवेयर पैकेज करता है, बल्कि आपको ऐसे सॉफ़्टवेयर को तैनात करने और उसे प्रबंधित करने की भी अनुमति देता है।
सूची
निष्पादन
अपने काफ्का उदाहरण को बेंचमार्क करके प्रदर्शन का परीक्षण करना महत्वपूर्ण है। इस तरह के परीक्षण आपको समस्याएँ उत्पन्न होने से पहले संभावित बाधाओं का पता लगाने में मदद करेंगे। सौभाग्य से, काफ्का पहले से ही दो प्रदर्शन परीक्षण उपकरण प्रदान करता है: kafka-producer-perf-test.sh
и kafka-consumer-perf-test.sh
. इनका सक्रिय उपयोग करें. संदर्भ के लिए, आप इसमें वर्णित परिणामों का उल्लेख कर सकते हैं
संचालन
निगरानी
सिस्टम में पारदर्शिता बहुत ज़रूरी है - अन्यथा आप समझ नहीं पाएंगे कि इसमें क्या हो रहा है। आज एक ठोस टूलकिट है जो क्लाउड नेटिव शैली में मेट्रिक्स-आधारित निगरानी प्रदान करता है। इस उद्देश्य के लिए दो लोकप्रिय उपकरण प्रोमेथियस और ग्राफाना हैं। प्रोमेथियस सबसे सरल तरीके से जेएमएक्स निर्यातक का उपयोग करके सभी जावा प्रक्रियाओं (काफ्का, ज़ूकीपर, काफ्का कनेक्ट) से मैट्रिक्स एकत्र कर सकता है। यदि आप cAdvisor मेट्रिक्स जोड़ते हैं, तो आप पूरी तरह से समझ सकते हैं कि Kubernetes में संसाधनों का उपयोग कैसे किया जाता है।
स्ट्रिमज़ी के पास काफ्का के लिए ग्राफाना डैशबोर्ड का एक बहुत ही सुविधाजनक उदाहरण है। यह प्रमुख मेट्रिक्स की कल्पना करता है, उदाहरण के लिए, कम प्रतिकृति वाले सेक्टरों या ऑफ़लाइन क्षेत्रों के बारे में। वहां सब कुछ बहुत स्पष्ट है. ये मेट्रिक्स संसाधन उपयोग और प्रदर्शन जानकारी के साथ-साथ स्थिरता संकेतकों द्वारा पूरक हैं। तो आपको बिना किसी शुल्क के बुनियादी काफ्का क्लस्टर निगरानी प्राप्त होगी!
स्रोत:
ग्राहक निगरानी (उपभोक्ताओं और उत्पादकों पर मेट्रिक्स), साथ ही विलंबता निगरानी (इसके लिए है) के साथ यह सब पूरक करना अच्छा होगा
लॉगिंग
लॉगिंग एक और महत्वपूर्ण कार्य है. सुनिश्चित करें कि आपके काफ्का इंस्टॉलेशन के सभी कंटेनर लॉग इन हैं stdout
и stderr
, और यह भी सुनिश्चित करें कि आपका कुबेरनेट्स क्लस्टर सभी लॉग को एक केंद्रीय लॉगिंग बुनियादी ढांचे में एकत्रित करता है, उदाहरण के लिए।
कार्यात्मक जाँच
कुबेरनेट्स यह जांचने के लिए जीवंतता और तत्परता जांच का उपयोग करता है कि आपके पॉड सामान्य रूप से चल रहे हैं या नहीं। यदि जीवंतता जांच विफल हो जाती है, तो कुबेरनेट्स उस कंटेनर को रोक देगा और फिर पुनरारंभ नीति तदनुसार सेट होने पर स्वचालित रूप से इसे पुनरारंभ कर देगा। यदि तत्परता जांच विफल हो जाती है, तो कुबेरनेट्स पॉड को सर्विसिंग अनुरोधों से अलग कर देता है। इस प्रकार, ऐसे मामलों में, अब मैन्युअल हस्तक्षेप की बिल्कुल भी आवश्यकता नहीं है, जो एक बड़ा प्लस है।
अद्यतन जारी करना
स्टेटफुलसेट्स स्वचालित अपडेट का समर्थन करते हैं: यदि आप रोलिंगअपडेट रणनीति का चयन करते हैं, तो काफ्का के तहत प्रत्येक को बारी-बारी से अपडेट किया जाएगा। इस तरह, डाउनटाइम को शून्य तक कम किया जा सकता है।
स्केलिंग
काफ्का क्लस्टर को स्केल करना कोई आसान काम नहीं है। हालाँकि, कुबेरनेट्स पॉड्स को एक निश्चित संख्या में प्रतिकृतियों तक स्केल करना बहुत आसान बनाता है, जिसका अर्थ है कि आप जितने चाहें उतने काफ्का दलालों को घोषणात्मक रूप से परिभाषित कर सकते हैं। इस मामले में सबसे कठिन काम स्केलिंग के बाद या स्केलिंग डाउन करने से पहले सेक्टरों को पुन: असाइन करना है। फिर से, कुबेरनेट्स इस कार्य में आपकी सहायता करेगा।
प्रशासन
आपके काफ्का क्लस्टर को प्रशासित करने से संबंधित कार्य, जैसे विषय बनाना और सेक्टरों को पुन: असाइन करना, आपके पॉड्स में कमांड लाइन इंटरफ़ेस खोलकर मौजूदा शेल स्क्रिप्ट का उपयोग करके किया जा सकता है। हालाँकि, यह समाधान बहुत सुंदर नहीं है. स्ट्रिमज़ी एक अलग ऑपरेटर का उपयोग करके विषयों को प्रबंधित करने का समर्थन करता है। यहां सुधार की कुछ गुंजाइश है.
बैकअप और पुनर्स्थापना
अब काफ्का की उपलब्धता कुबेरनेट्स की उपलब्धता पर भी निर्भर करेगी। यदि आपका कुबेरनेट्स क्लस्टर विफल हो जाता है, तो सबसे खराब स्थिति में, आपका काफ्का क्लस्टर भी विफल हो जाएगा। मर्फी के नियम के अनुसार, यह निश्चित रूप से होगा, और आप डेटा खो देंगे। इस प्रकार के जोखिम को कम करने के लिए, एक अच्छी बैकअप अवधारणा रखें। आप मिररमेकर का उपयोग कर सकते हैं, दूसरा विकल्प इसके लिए S3 का उपयोग करना है, जैसा कि इसमें बताया गया है
निष्कर्ष
छोटे से मध्यम आकार के काफ्का समूहों के साथ काम करते समय, निश्चित रूप से कुबेरनेट्स का उपयोग करना उचित है क्योंकि यह अतिरिक्त लचीलापन प्रदान करता है और ऑपरेटर अनुभव को सरल बनाता है। यदि आपके पास बहुत महत्वपूर्ण गैर-कार्यात्मक विलंबता और/या थ्रूपुट आवश्यकताएं हैं, तो किसी अन्य परिनियोजन विकल्प पर विचार करना बेहतर हो सकता है।
स्रोत: www.habr.com