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

स्रोत:
strimzi.io/docs/master/#kafka_dashboardग्राहक निगरानी (उपभोक्ताओं और उत्पादकों के लिए मैट्रिक्स) के साथ-साथ लैग मॉनिटरिंग (इसके लिए यह
बैरो है ) और एंड-टू-एंड मॉनिटरिंग के साथ यह सब पूरक करना अच्छा होगा - इसके लिए,
काफ्का मॉनिटर का उपयोग करें।
लॉगिंगलॉगिंग एक और महत्वपूर्ण कार्य है। सुनिश्चित करें कि आपके काफ्का इंस्टालेशन के सभी कंटेनरों को स्टडआउट और स्टडर में लॉग किया गया है, और सुनिश्चित करें कि आपके कुबेरनेट क्लस्टर किसी
लॉगिंग केंद्रीय संरचना, जैसे कि एलिस्टिक्सखोज में सभी लॉग को एकत्रित करता है।
स्वास्थ्य की जाँचकुबेरनेट्स यह जांचने के लिए कि आपके फली ठीक से काम कर रहे हैं, लिनेन और तत्परता जांच का उपयोग करता है। यदि लाइव परीक्षण विफल हो जाता है, तो कुबेरनेट्स इस कंटेनर को बंद कर देंगे, और फिर पुनरारंभ नीति के अनुसार सेट होने पर स्वचालित रूप से इसे पुनरारंभ करें। यदि उपलब्धता जांच विफल हो जाती है, तो कुबेरनेट्स अनुरोध सेवा से इसे अलग कर देता है। इस प्रकार, ऐसे मामलों में, मैनुअल हस्तक्षेप की अब आवश्यकता नहीं है, और यह एक बड़ा प्लस है।
अपडेट्स जारी करनास्टेटफुलसेट स्वचालित अपडेट का समर्थन करता है: जब एक रोलिंगअपडेट रणनीति चुनते हैं, तो काफ्का के तहत प्रत्येक बदले में अपडेट किया जाएगा। इस तरह, डाउनटाइम को शून्य तक घटाया जा सकता है।
स्केलिंगएक काफ्का समूह को स्केल करना कोई आसान काम नहीं है। हालांकि, कुबेरनेट्स में पॉड्स को एक निश्चित संख्या में प्रतिकृतियों में स्केल करना बहुत आसान है, जिसका अर्थ है कि आप घोषित रूप से कई काफ्का दलालों की पहचान कर सकते हैं जैसा आप चाहते हैं। इस मामले में सबसे कठिन क्षेत्रों में स्केलिंग के बाद या स्केलिंग से पहले सेक्टरों का पुनर्मूल्यांकन है। फिर से, कुबेरनेट्स इस कार्य में आपकी सहायता करेंगे।
प्रशासनविशेष रूप से, आपके काफ्का क्लस्टर को प्रशासित करने, संबंधित विषय बनाने और पुन: असाइन करने के क्षेत्र बनाने से संबंधित कार्य, मौजूदा शेल स्क्रिप्ट का उपयोग करके किया जा सकता है, जो आपके पॉड्स में कमांड लाइन इंटरफ़ेस खोल सकता है। हालाँकि, यह समाधान बहुत सुंदर नहीं है। स्ट्रिमजी किसी अन्य ऑपरेटर का उपयोग करके विषयों के प्रबंधन का समर्थन करता है। यहाँ संशोधित करने के लिए कुछ है।
बैकअप और पुनर्स्थापितअब काफ्का की उपलब्धता कुबेरनेट की उपलब्धता पर निर्भर करेगी। यदि आपका कुबेरनेट क्लस्टर गिरता है, तो सबसे खराब स्थिति में, काफ्का क्लस्टर भी गिरता है। मर्फी के नियम के तहत, यह होगा और आप डेटा खो देंगे। इस तरह के जोखिम को कम करने के लिए, एक अच्छी बैकअप अवधारणा है। आप मिरमेकर का उपयोग कर सकते हैं, इसके लिए एक और विकल्प एस 3 का उपयोग करना है, जैसा कि ज़ालैंडो के इस
पोस्ट में वर्णित है।
निष्कर्ष
छोटे या मध्यम आकार के काफ्का समूहों के साथ काम करते समय, कुबेरनेट्स का उपयोग करना निश्चित रूप से उचित है, क्योंकि यह अतिरिक्त लचीलापन प्रदान करता है और ऑपरेटरों के साथ काम को सरल करता है। यदि आपके पास विलंबता और / या थ्रूपुट के संबंध में बहुत गंभीर गैर-कार्यात्मक आवश्यकताएं हैं, तो कुछ अन्य तैनाती विकल्प पर विचार करना बेहतर हो सकता है।