kafka कॉन्फ़िगरेशन और zookeeper विवरण (kafka, zookeeper, akhq, quorum नियंत्रक)
हैलो, यह codeshow है।
इस बार हम kafka का अभ्यास करेंगे।
अभ्यास के लिए, कृपया codeshow github के devcontainers repository को clone।
kafka फ़ोल्डर से vscode चलाएँ।
devcontainers चलाएं।
container चलने तक प्रतीक्षा करें।
जब container चलना समाप्त हो जाएगा, तो हम docker desktop खोलेंगे।
3 kafka और जू कीपर AKHQ चल रहे हैं।
इन कंटेनरों का वर्णन करें:
चिड़ियाघर कीपर distribution system coordinator है।
एक वितरित वातावरण में कई kafka सर्वर प्रबंधित करें।
AKHQ kafka को आसानी से प्रबंधित करने के लिए web UI प्रदान करता है।
यह port 8080 का उपयोग करता है।
zookeeper समय-समय पर सभी kafka नोड्स को दिल की धड़कन का संकेत भेजता है। zookeeper ping अनुरोध करता है, काफ्का pong प्रतिक्रिया करता है। यदि कुछ kafka नोड प्रतिक्रिया देने में विफल रहते हैं, zookeeper उस kafka नोड को विफल मानता है।
अगर kafka नंबर 3 विफल रहता है,
ping और pong विफल,
zookeeper प्रबंधन नोड से kafka नंबर 3 को हटाता है।
फिर, शेष kafka 1 और 2 को नोड 3 की विफलता के बारे में सूचित किया जाता है, और kafka 1 और 2 अब 3 के साथ संवाद नहीं करते हैं।
संदर्भ के लिए, जब काफ्का 3 को फिर से बनाया जाता है, तो यह zookeeper में पंजीकृत होता है, जैसा कि चित्र में दिखाया गया है, और kafka 1, 2 और 3 फिर से cluster बन जाते हैं।
संदर्भ के लिए, व्यवहार में, केवल एक zookeeper है,
जैसा कि चित्र में दिखाया गया है, production वातावरण में कई zookeeper नोड स्थापित हैं।
सेवा को काम करने के लिए कॉन्फ़िगर करें, भले ही एक zookeeper नीचे चला जाए।
क्लास में, हम केवल 1 zookeeper का उपयोग करेंगे क्योंकि हमें उत्पादन वातावरण जैसी उच्च उपलब्धता की आवश्यकता नहीं है।
browser के साथ AKHQ द्वारा प्रदान किए गए Nodes मेनू पर चलते हैं।
स्क्रीन पर कुल 3 kafka नोड चल रहे हैं।
docker desktop में kafka2 बंद करो।
यदि आप AKHQ के नोड मेन्यू पर वापस जाते हैं और रिफ्रेश करते हैं,
आप देख सकते हैं कि काफ्का 2 चला गया है।
दोबारा, docker desktop में start बटन दबाएं।
AKHQ में Nodes स्क्रीन को लोड और रिफ्रेश करने के लिए kafka की प्रतीक्षा करें।
काफ्का 2 को फिर से स्क्रीन पर देखा जाएगा।
इन kafka नोड्स में से, हम control नोड को बंद कर देंगे।
यदि control नोड पहले health check में विफल रहा है, तो आप देख सकते हैं कि दूसरा नोड control नोड बन जाता है।
kafka में, zookeeper एक वितरित वातावरण में नोड्स के बीच समन्वय के लिए जिम्मेदार होता है।
चूंकि zookeeper की admin server सेटिंग devcontainer सेटिंग्स में सही पर सेट की गई थी,
हम ब्राउज़र के माध्यम से 8081 port के माध्यम से zookeeper की जानकारी की जाँच कर सकते हैं।
मैं पते के रूप में ब्राउज़र में localhost कोलन 8081 slash commands टाइप करूँगा।
commands पेज पर, आप zookeeper द्वारा दिए गए कमांड को लिंक के रूप में देख सकते हैं।
connections लिंक का चयन करें।
http://localhost:8081/commands/connections
connections द्वारा प्राप्त json डेटा के माध्यम से, आप zookeeper से जुड़े kafka नोड की जानकारी की जांच कर सकते हैं।
आइए देखें कि क्या यह आईपी docker container में प्रवेश करके kafka नोड है।
hostname -I
आप देख सकते हैं कि zookeeper कनेक्शन की जानकारी kafka नोड के आईपी से मेल खाती है।
आप connections ऐरे में तीन kafka नोड्स की कनेक्शन जानकारी की जांच कर सकते हैं।
अब, आप देख सकते हैं कि कुल 3 kafka नोड समय-समय पर ping चेकिंग कर रहे हैं।
जैसा कि पिछले चित्र में बताया गया है,
जब ping या pong विफल हो जाता है, zookeeper विफल नोड के बारे में अन्य kafka नोड्स को जानकारी प्रसारित करता है।
दो शेष kafka नोड अब विफल नोड के साथ संचार नहीं करते हैं।
और जब zookeeper में kafka नोड वापस जीवन में आता है और ping और pong सफल होता है,
यह जानकारी शेष दो नोड्स को फिर से प्रचारित की जाती है, और ये kafka नोड नए नोड के साथ संचार करते हैं।
इसके अतिरिक्त, प्रत्येक kafka नोड को अनिवार्य रूप से एक नियंत्रक की आवश्यकता होती है।
यह नियंत्रक नोड एक बहुत ही महत्वपूर्ण नोड है जो अन्य kafka नोड्स का प्रबंधन और नियंत्रण करता है।
zookeeper का उपयोग करते समय, केवल एक kafka नोड नियंत्रक नोड हो सकता है।
यदि यह एक नियंत्रक नोड विफल हो जाता है, तो सभी kafka cluster काम नहीं कर सकते।
इसलिए यदि नियंत्रक नोड विफल हो जाता है, तो अन्य kafka नोड्स में से एक को नियंत्रक नोड के रूप में चुना जाना चाहिए।
इस समय, मतदान के माध्यम से नोड्स चुने जाते हैं, और zookeeper इस प्रक्रिया में शामिल होता है।
इसलिए zookeeper kafka वितरित प्रणाली में एक महत्वपूर्ण भूमिका निभाता है।
संदर्भ के लिए, नियंत्रक नोड को छोड़कर बाकी नोड्स को broker नोड कहा जाता है। नोड जो partition है, जिसके बारे में आप अगले पाठ में जानेंगे, broker नोड का प्रभारी होता है। नियंत्रक नोड broker नोड्स का प्रबंधन करता है और broker नोड्स द्वारा उपयोग के लिए विभिन्न मेटाडेटा संग्रहीत करता है।
संदर्भ के लिए, kafka अतिरिक्त रूप से संस्करण 2.8.0 से quorum नियंत्रक प्रदान करता है।
यह zookeeper के साथ kafka के समन्वय के बिना KRaft protocol के माध्यम से zookeeper का उपयोग किए बिना सीधे kafka नोड पर kafka मेटाडेटा का प्रबंधन करता है।
मौजूदा zookeeper की तुलना में, जिसके पास केवल एक नियंत्रक नोड है,
quorum नियंत्रक में एकाधिक नियंत्रक नोड हो सकते हैं।
यही है, यदि एक नियंत्रक नोड विफल हो जाता है, तो दूसरे नियंत्रक नोड का तुरंत उपयोग किया जा सकता है।
नियंत्रक नोड हमेशा मेटा डेटा को सिंक्रनाइज़ करता है।
zookeeper से मेटा डेटा कॉपी करने की मौजूदा लागत कम हो जाती है, इसलिए कंट्रोलर नोड्स को बहुत जल्दी शुरू किया जा सकता है।
अभी आपके पास दो विकल्प हैं: zookeeper और quorum ।
भविष्य में, kafka zookeeper को अपदस्थ कर सकता है।
हालाँकि, चूंकि यह वर्तमान में परिवर्तन में है, मुझे लगता है कि zookeeper और quorum नियंत्रक को क्रम में सीखना अच्छा है।
हम shell कमांड का उपयोग करके zookeeper से पूछताछ करने का अभ्यास करेंगे।
container के shell को निष्पादित करें जहां kafka स्थापित है।
zookeeper के माध्यम से सभी kafka पूछें।
zookeeper-shell zookeeper:2181 ls /brokers/ids
मैंने पुष्टि की कि सरणी में कुल तीन 0, 1, 2 cluster हैं।
आइए 0 वीं kafka जानकारी को get कमांड के साथ देखें।
zookeeper-shell zookeeper:2181 get /brokers/ids/0
zookeeper-shell zookeeper:2181 get /brokers/ids/1
zookeeper-shell zookeeper:2181 get /brokers/ids/2
आप zookeeper में संग्रहीत kafka broker जानकारी की जांच कर सकते हैं।
उपरोक्त के माध्यम से, हमने सीखा कि zookeeper के साथ वितरित वातावरण में kafka की विभिन्न सूचनाओं को कैसे संग्रहीत और समन्वित किया जाए।
ऊपर, हमने kafka पर्यावरण सेटिंग्स और आंतरिक संचालन को देखा।
अगली बार, हम topic और partition के बारे में जानेंगे।
सब्सक्राइब और लाइक नोटिफिकेशन सेटिंग्स कंटेंट क्रिएटर्स के लिए बहुत मददगार हैं।
धन्यवाद