क्या कुबेरनेट्स पर काफ्का अच्छा है?

नमस्ते, हबर!

एक समय में, हम रूसी बाज़ार में इस विषय को पेश करने वाले पहले व्यक्ति थे काफ्का और जारी रखने के लिए नज़र रखें इसके विकास के लिए. विशेष रूप से, हमें काफ्का और के बीच बातचीत का विषय मिला Kubernetes. अवलोकनीय (और काफी सावधान) लेख यह विषय पिछले साल अक्टूबर में ग्वेन शापिरा के लेखन में कॉन्फ्लुएंट ब्लॉग पर प्रकाशित हुआ था। आज हम आपका ध्यान जोहान गाइगर के अप्रैल के एक हालिया लेख की ओर आकर्षित करना चाहेंगे, जो हालांकि शीर्षक में प्रश्नचिह्न के बिना नहीं है, लेकिन दिलचस्प लिंक के साथ पाठ के साथ विषय की अधिक ठोस तरीके से जांच करता है। यदि आप कर सकते हैं तो कृपया हमें "कैओस मंकी" का निःशुल्क अनुवाद माफ करें!

क्या कुबेरनेट्स पर काफ्का अच्छा है?

परिचय

कुबेरनेट्स को स्टेटलेस वर्कलोड को संभालने के लिए डिज़ाइन किया गया है। आमतौर पर, ऐसे वर्कलोड को माइक्रोसर्विस आर्किटेक्चर के रूप में प्रस्तुत किया जाता है, वे हल्के होते हैं, क्षैतिज रूप से अच्छे पैमाने पर होते हैं, 12-कारक अनुप्रयोगों के सिद्धांतों का पालन करते हैं, और सर्किट ब्रेकर और अराजकता बंदरों के साथ काम कर सकते हैं।

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

कुछ लोगों को लगता है कि यदि आप कुबेरनेट्स को एक स्टेटफुल वर्कलोड में रोल करते हैं, तो यह एक पूरी तरह से प्रबंधित डेटाबेस बन जाता है जो आरडीएस को टक्कर देता है। यह गलत है। हो सकता है, यदि आप पर्याप्त मेहनत करते हैं, अतिरिक्त घटक जोड़ते हैं और एसआरई इंजीनियरों की एक टीम को आकर्षित करते हैं, तो आप कुबेरनेट्स के शीर्ष पर आरडीएस बनाने में सक्षम होंगे।

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

तो, क्या आपको कुबेरनेट्स पर काफ्का चलाना चाहिए? प्रतिप्रश्न: क्या काफ्का कुबेरनेट्स के बिना बेहतर काम करेगा? इसीलिए मैं इस लेख में इस बात पर प्रकाश डालना चाहता हूं कि काफ्का और कुबेरनेट्स एक दूसरे के पूरक कैसे हैं, और उनके संयोजन से क्या नुकसान हो सकते हैं।

पूरा होने का समय

आइए मूल चीज़ के बारे में बात करें - रनटाइम वातावरण

प्रक्रिया

काफ्का ब्रोकर सीपीयू के अनुकूल हैं। टीएलएस कुछ ओवरहेड पेश कर सकता है। हालाँकि, काफ्का क्लाइंट अधिक सीपीयू गहन हो सकते हैं यदि वे एन्क्रिप्शन का उपयोग करते हैं, लेकिन यह दलालों को प्रभावित नहीं करता है।

स्मृति

काफ्का दलाल स्मृति को खा जाते हैं। जेवीएम हीप का आकार आमतौर पर 4-5 जीबी तक सीमित होता है, लेकिन आपको बहुत अधिक सिस्टम मेमोरी की भी आवश्यकता होगी क्योंकि काफ्का पेज कैश का बहुत अधिक उपयोग करता है। कुबेरनेट्स में, कंटेनर संसाधन निर्धारित करें और तदनुसार सीमाएँ अनुरोध करें।

डेटा भंडारण

कंटेनरों में डेटा भंडारण अल्पकालिक है - पुनः आरंभ करने पर डेटा खो जाता है। काफ्का डेटा के लिए आप वॉल्यूम का उपयोग कर सकते हैं emptyDir, और प्रभाव समान होगा: पूरा होने के बाद आपका ब्रोकर डेटा खो जाएगा। आपके संदेश अभी भी अन्य ब्रोकरों पर प्रतिकृतियों के रूप में संग्रहीत किए जा सकते हैं। इसलिए, पुनः आरंभ करने के बाद, विफल ब्रोकर को पहले सभी डेटा को दोहराना होगा, और इस प्रक्रिया में बहुत समय लग सकता है।

यही कारण है कि आपको दीर्घकालिक डेटा संग्रहण का उपयोग करना चाहिए। इसे XFS फ़ाइल सिस्टम या अधिक सटीक रूप से ext4 के साथ गैर-स्थानीय दीर्घकालिक भंडारण होने दें। एनएफएस का प्रयोग न करें. मैं आपको चेतावनी दी। एनएफएस संस्करण v3 या v4 काम नहीं करेगा। संक्षेप में, यदि काफ्का ब्रोकर एनएफएस में "बेवकूफीपूर्ण नाम बदलें" समस्या के कारण डेटा निर्देशिका को हटा नहीं पाता है तो वह क्रैश हो जाएगा। यदि मैंने आपको अभी तक आश्वस्त नहीं किया है, तो बहुत सावधानी से इस लेख को पढ़ें. डेटा स्टोर गैर-स्थानीय होना चाहिए ताकि कुबेरनेट्स पुनरारंभ या स्थानांतरण के बाद अधिक लचीले ढंग से एक नया नोड चुन सके।

Сеть

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

विन्यास

नियमित घोषणापत्र

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

  • नीचे: कुबेरनेट्स में पॉड सबसे छोटी तैनाती योग्य इकाई है। एक पॉड में आपका कार्यभार होता है, और पॉड स्वयं आपके क्लस्टर में एक प्रक्रिया से मेल खाता है। एक पॉड में एक या अधिक कंटेनर होते हैं। समूह में प्रत्येक ज़ूकीपर सर्वर और काफ्का क्लस्टर में प्रत्येक ब्रोकर एक अलग पॉड में चलेंगे।
  • स्टेटफुलसेट: स्टेटफुलसेट एक कुबेरनेट्स ऑब्जेक्ट है जो कई स्टेटफुल वर्कलोड को संभालता है, और ऐसे वर्कलोड के लिए समन्वय की आवश्यकता होती है। स्टेटफुलसेट्स पॉड्स के ऑर्डर और उनकी विशिष्टता के संबंध में गारंटी प्रदान करता है।
  • बिना नेतृत्व वाली सेवाएं: सेवाएँ आपको तार्किक नाम का उपयोग करके ग्राहकों से पॉड अलग करने की अनुमति देती हैं। इस मामले में कुबेरनेट्स लोड संतुलन के लिए जिम्मेदार है। हालाँकि, ज़ूकीपर और काफ्का जैसे स्टेटफुल वर्कलोड को संचालित करते समय, ग्राहकों को एक विशिष्ट उदाहरण के साथ संवाद करने की आवश्यकता होती है। यह वह जगह है जहां हेडलेस सेवाएं काम में आती हैं: इस मामले में, क्लाइंट के पास अभी भी एक तार्किक नाम होगा, लेकिन आपको सीधे पॉड से संपर्क नहीं करना पड़ेगा।
  • दीर्घकालिक भंडारण मात्रा: ऊपर बताए गए गैर-स्थानीय ब्लॉक लगातार स्टोरेज को कॉन्फ़िगर करने के लिए इन वॉल्यूम की आवश्यकता होती है।

पर योलीन कुबेरनेट्स पर काफ्का के साथ शुरुआत करने में आपकी मदद करने के लिए मैनिफ़ेस्ट का एक व्यापक सेट प्रदान करता है।

हेल्म चार्ट

हेल्म कुबेरनेट्स के लिए एक पैकेज मैनेजर है जिसकी तुलना यम, एपीटी, होमब्रू या चॉकलेटी जैसे ओएस पैकेज मैनेजरों से की जा सकती है। यह हेल्म चार्ट में वर्णित पूर्वनिर्धारित सॉफ़्टवेयर पैकेजों को स्थापित करना आसान बनाता है। एक अच्छी तरह से चुना गया हेल्म चार्ट कुबेरनेट्स पर काफ्का का उपयोग करने के लिए सभी मापदंडों को ठीक से कॉन्फ़िगर करने के कठिन कार्य को आसान बनाता है। कई काफ्का आरेख हैं: आधिकारिक स्थित है इनक्यूबेटर स्थिति में, वहाँ से एक है मिला हुआ, एक और - से Bitnami.

ऑपरेटरों

क्योंकि हेल्म में कुछ कमियाँ हैं, एक अन्य उपकरण काफी लोकप्रियता हासिल कर रहा है: कुबेरनेट्स ऑपरेटर्स। ऑपरेटर न केवल कुबेरनेट्स के लिए सॉफ़्टवेयर पैकेज करता है, बल्कि आपको ऐसे सॉफ़्टवेयर को तैनात करने और उसे प्रबंधित करने की भी अनुमति देता है।

सूची अद्भुत संचालक काफ्का के लिए दो ऑपरेटरों का उल्लेख किया गया है। उन्हीं में से एक है - स्ट्रिम्ज़ी. स्ट्रिमज़ी के साथ, अपने काफ्का क्लस्टर को मिनटों में चालू करना आसान है। वस्तुतः किसी कॉन्फ़िगरेशन की आवश्यकता नहीं है, इसके अलावा, ऑपरेटर स्वयं कुछ अच्छी सुविधाएँ प्रदान करता है, उदाहरण के लिए, क्लस्टर के भीतर पॉइंट-टू-पॉइंट टीएलएस एन्क्रिप्शन। कंफ्लुएंट भी प्रदान करता है स्वयं का संचालक.

निष्पादन

अपने काफ्का उदाहरण को बेंचमार्क करके प्रदर्शन का परीक्षण करना महत्वपूर्ण है। इस तरह के परीक्षण आपको समस्याएँ उत्पन्न होने से पहले संभावित बाधाओं का पता लगाने में मदद करेंगे। सौभाग्य से, काफ्का पहले से ही दो प्रदर्शन परीक्षण उपकरण प्रदान करता है: kafka-producer-perf-test.sh и kafka-consumer-perf-test.sh. इनका सक्रिय उपयोग करें. संदर्भ के लिए, आप इसमें वर्णित परिणामों का उल्लेख कर सकते हैं ये पद जे क्रेप्स, या पर ध्यान केंद्रित करें यह समीक्षा स्टीफ़न मारेक द्वारा अमेज़ॅन एमएसके।

संचालन

निगरानी

सिस्टम में पारदर्शिता बहुत ज़रूरी है - अन्यथा आप समझ नहीं पाएंगे कि इसमें क्या हो रहा है। आज एक ठोस टूलकिट है जो क्लाउड नेटिव शैली में मेट्रिक्स-आधारित निगरानी प्रदान करता है। इस उद्देश्य के लिए दो लोकप्रिय उपकरण प्रोमेथियस और ग्राफाना हैं। प्रोमेथियस सबसे सरल तरीके से जेएमएक्स निर्यातक का उपयोग करके सभी जावा प्रक्रियाओं (काफ्का, ज़ूकीपर, काफ्का कनेक्ट) से मैट्रिक्स एकत्र कर सकता है। यदि आप cAdvisor मेट्रिक्स जोड़ते हैं, तो आप पूरी तरह से समझ सकते हैं कि Kubernetes में संसाधनों का उपयोग कैसे किया जाता है।

स्ट्रिमज़ी के पास काफ्का के लिए ग्राफाना डैशबोर्ड का एक बहुत ही सुविधाजनक उदाहरण है। यह प्रमुख मेट्रिक्स की कल्पना करता है, उदाहरण के लिए, कम प्रतिकृति वाले सेक्टरों या ऑफ़लाइन क्षेत्रों के बारे में। वहां सब कुछ बहुत स्पष्ट है. ये मेट्रिक्स संसाधन उपयोग और प्रदर्शन जानकारी के साथ-साथ स्थिरता संकेतकों द्वारा पूरक हैं। तो आपको बिना किसी शुल्क के बुनियादी काफ्का क्लस्टर निगरानी प्राप्त होगी!

क्या कुबेरनेट्स पर काफ्का अच्छा है?

स्रोत: Streamzi.io/docs/master/#kafka_dashboard

ग्राहक निगरानी (उपभोक्ताओं और उत्पादकों पर मेट्रिक्स), साथ ही विलंबता निगरानी (इसके लिए है) के साथ यह सब पूरक करना अच्छा होगा बिल) और शुरू से अंत तक निगरानी - इस उपयोग के लिए काफ्का मॉनिटर.

लॉगिंग

लॉगिंग एक और महत्वपूर्ण कार्य है. सुनिश्चित करें कि आपके काफ्का इंस्टॉलेशन के सभी कंटेनर लॉग इन हैं stdout и stderr, और यह भी सुनिश्चित करें कि आपका कुबेरनेट्स क्लस्टर सभी लॉग को एक केंद्रीय लॉगिंग बुनियादी ढांचे में एकत्रित करता है, उदाहरण के लिए। Elasticsearch.

कार्यात्मक जाँच

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

अद्यतन जारी करना

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

स्केलिंग

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

प्रशासन

आपके काफ्का क्लस्टर को प्रशासित करने से संबंधित कार्य, जैसे विषय बनाना और सेक्टरों को पुन: असाइन करना, आपके पॉड्स में कमांड लाइन इंटरफ़ेस खोलकर मौजूदा शेल स्क्रिप्ट का उपयोग करके किया जा सकता है। हालाँकि, यह समाधान बहुत सुंदर नहीं है. स्ट्रिमज़ी एक अलग ऑपरेटर का उपयोग करके विषयों को प्रबंधित करने का समर्थन करता है। यहां सुधार की कुछ गुंजाइश है.

बैकअप और पुनर्स्थापना

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

निष्कर्ष

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

स्रोत: www.habr.com

एक टिप्पणी जोड़ें