उच्च उपलब्धता प्राप्त करने के लिए डॉकटर झुंड



डॉकर झुंड पर यह ब्लॉग, उच्च उपलब्धता के लिए प्राप्त डॉकटर झुंड के माध्यम से डॉकर इंजनों के एक क्लस्टर की स्थापना की शक्ति की व्याख्या करता है।

किसी भी वेब-आधारित एप्लिकेशन की सबसे महत्वपूर्ण विशेषता क्या है? कई हैं, लेकिन मेरे लिए उच्च उपलब्धता सबसे महत्वपूर्ण है। यही कारण है कि डॉकर झुंड हमें प्राप्त करने में मदद करता है! यह एप्लिकेशन को अत्यधिक उपलब्ध होने में मदद करता है।

मेरे में पिछला ब्लॉग , मैंने समझाया कि कैसे डॉकर कम्पोज़ काम करता है। डॉकर झुंड पर यह ब्लॉग पूर्व का एक निरंतरता है और यहां किसी भी मल्टी-कंटेनर एप्लिकेशन को कंटेनर में डालने के लिए डॉकर झुंड के उपयोग के लाभों के बारे में बताया गया है।





इस ब्लॉग के मामले में, यह केवल एक कोणीय अनुप्रयोग है जो डॉकर झुंड का होगा।
ध्यान दें : MEAN स्टैक एप्लिकेशन को कंटेनरीकृत करने की विधि समान है।

तो, डॉकर झुंड क्या है?

डोकर झुंड एक क्लस्टर बनाने और बनाए रखने की तकनीक है डॉकर इंजन डॉक इंजन को अलग-अलग नोड्स पर होस्ट किया जा सकता है, और ये नोड जो दूरस्थ स्थानों में हैं, एक कलस्टर जब झुंड मोड में जुड़ा हुआ है।



बादशाह ने अपाचे हडूप के लिए प्रमाणित व्यवस्थापक बनाया

डॉकटर झुंड का उपयोग क्यों करें?

पहले से बताए गए कारणों के लिए! प्राप्त करना उच्च उपलब्धता बिना किसी डाउनटाइम के हर सेवा प्रदाता के लिए प्राथमिकता है। क्या उच्च उपलब्धता आपके ग्राहकों को प्रभावित करेगी? यदि वे डाउनटाइम का सामना करते हैं, तो वे प्रभावित नहीं होंगे। वह नो ब्रेनर है।

डॉकर झुंड के अन्य लाभ

अन्य सेवाओं की तरह, डॉकर झुंड ऑटो करता है भार संतुलन हमारे लिए। इसलिए, जब कोई विफल होता है, तो अन्य नोड्स के लिए प्रसंस्करण अनुरोधों को रूट करने के लिए DevOps इंजीनियरों की आवश्यकता नहीं होती है। क्लस्टर का प्रबंधक स्वचालित रूप से हमारे लिए लोड संतुलन का काम करेगा।

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



आप नहीं की जाँच कर सकते हैं। एक नोड में चल रहे कंटेनरों का, स्केल अप नहीं। कंटेनर के या घटाना नहीं। हमारी आवश्यकता के आधार पर, केवल एक कमांड निष्पादित करके।

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

तो आगे क्या? स्पष्ट करने के लिए। यदि आपने पहले ही डॉकटर पर काम किया है या यदि आपका संगठन किसी विश्वसनीय वेब सेवा को कंटेन्टाइज करना चाहता है, तो डोकर झुंड के साथ शुरुआत करें।

ध्यान दें : डॉकर इंजन स्वतंत्र होस्ट / सर्वर पर या एक मेजबान में कई वीएम में स्थापित होते हैं।

झुंड मोड के साथ शुरू हो रही है

डॉकर झुंड प्रबंधक द्वारा शुरू किया जाता है, या मुझे इसे इस तरह से लागू करने की अनुमति देता है, जो कि झुंड क्लस्टर शुरू होता है, प्रबंधक बन जाता है। क्लस्टर शुरू करने का आदेश है:

$ डोकर झुंड init --adistics-addr ip-address

यहाँ,--adistics-addr 'ध्वज का उपयोग अन्य नोड्स के लिए विज्ञापन के लिए किया जाता है जो क्लस्टर में शामिल होना चाहते हैं। प्रबंधक के आईपी पते को ध्वज के साथ निर्दिष्ट करने की आवश्यकता है। नीचे नमूना स्क्रीनशॉट है।

docker init कमांड - docker swarm - edureka

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

यह कैसा है? प्रबंधक के डॉक इंजन में उत्पन्न पूरे टोकन को कॉपी करें, नोड के डॉक इंजन में पेस्ट करें और इसे निष्पादित करें। ऊपर स्क्रीनशॉट का हाइलाइट किया गया भाग एक टोकन है। जब एक कार्यकर्ता नोड पर टोकन निष्पादित किया जाता है, तो यह नीचे स्क्रीनशॉट की तरह दिखाई देगा।

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

$ डोकर ज्वाइन करने वाले टोकन मैनेजर

और बाद के समय में, यदि आप नोड में क्लस्टर में शामिल होने के लिए टोकन चाहते हैं, तो नीचे कमांड चलाएं:

$ डोकर झुंड में शामिल होने वाले टोकन नोड

आगे बढ़ें, और क्लस्टर में शामिल होने के लिए अपने इच्छित प्रत्येक नोड पर टोकन निष्पादित करें। जब यह सब हो जाता है, तो आप यह जांचने के लिए एक नोड नोड सूची कमांड चला सकते हैं कि कितने नोड्स उनकी स्थिति के साथ क्लस्टर में शामिल हो गए हैं। आदेश है:

$ डोकर नोड एल.एस.

स्क्रीनशॉट नीचे है:

कोणीय ऐप के लिए एक डॉकटर छवि बनाना

यदि सब कुछ ठीक है, तो हम अपनी झुंड सेवा शुरू कर सकते हैं, बशर्ते कि डॉकर छवि बनाई गई हो। Docker छवि को Dockerfile से बनाया जा सकता है। एप्लिकेशन बनाने के लिए उपयोग किया जाने वाला डॉकरीफाइल नीचे है:

नोड से: 6 RUN mddir -p / usr / src / app WORKDIR / usr / src / app COPY package.json / usr / src / app RUN npm कैश स्वच्छ RUN npm इंस्टॉल COPY। / usr / src / app EXPOSE 4200 CMD ['npm', 'start']

Dockerfile का उपयोग एक बेस इमेज से एक कस्टम Docker छवि बनाने के लिए एक साथ कमांड के एक सेट को निष्पादित करने के लिए किया जाता है। जैसा कि आप देख सकते हैं, मेरे द्वारा उपयोग की गई आधार छवि the Node: 6 ’है। NodeJS I छवि डॉकटर हब से है जिसे 6 संस्करण के साथ टैग किया गया है।

मैं तब कंटेनर के अंदर एक नई डॉकर निर्देशिका बना रहा हूं और इसे मेरे कंटेनर के अंदर काम करने वाली निर्देशिका बना रहा हूं।

मैं अपने स्थानीय मशीन से कंटेनर की कार्यशील निर्देशिका में ‘package.json 'फ़ाइल की प्रतिलिपि बना रहा हूं। फिर मैं 'RUN npm कैश क्लीन' और 'RUN npm इंस्टॉल' कमांड्स निर्दिष्ट कर रहा हूं। npm स्थापित करें कमांड package.json फ़ाइल में उल्लिखित निर्भरता के संस्करण को डाउनलोड करता है।

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

अब, इस Dockerfile पर आधारित Docker छवि बनाने के लिए, नीचे दिया गया कमांड चलाएँ:

$ डोकर बिल्ड -t कोणीय-छवि।

ध्यान दें: क्लस्टर में सभी नोड्स में डॉकर इमेज बनाए जाने की आवश्यकता है। इसके बिना, कंटेनर को अन्य डॉकर इंजनों में नहीं देखा जा सकता है।

जावा में int के लिए डबल डाली

डॉकर झुंड सेवा शुरू करना

यह देखते हुए कि हमारी डॉकर छवि बनी है, हम एक कंटेनर को इस छवि से बाहर निकाल सकते हैं। लेकिन, हम कुछ बेहतर करेंगे: इसमें से एक डॉकर झुंड सेवा बनाएं। एक झुंड सेवा बनाने की कमान है:

$ docker सेवा बनाएँ --name 'Angular-App-कंटेनर' -p 4200: 4200 कोणीय-छवि

यहाँ,, नाम ’ध्वज का उपयोग मेरी सेवा को नाम देने के लिए किया जाता है और port p’ ध्वज का उपयोग कंटेनर पोर्ट को होस्ट पोर्ट में उजागर करने के लिए किया जाता है। Package.json फ़ाइल में, मैंने कंटेनर पोर्ट निर्दिष्ट किया है, जिस पर कोणीय एप्लिकेशन होस्ट किया जाना चाहिए। और इस कमांड में 4200 कंटेनर के पोर्ट 4200 को होस्ट के पोर्ट 4200 पर मैप करने में मदद करता है। 'एंगुलर-इमेज' मेरे द्वारा पहले बनाई गई इमेज का नाम है।

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

वो कैसे संभव है? क्योंकि झुंड आंतरिक रूप से क्लस्टर में हर दूसरे नोड द्वारा पहुंच योग्य पोर्ट संख्याओं को उजागर करता है। इसका मतलब है कि, पोर्ट नं। क्लस्टर में किसी भी नोड / प्रबंधक पर 4200 कोणीय आवेदन प्रस्तुत करना होगा।

अब क्या? क्या कंटेनर सक्रिय है?

आप यह सत्यापित कर सकते हैं कि क्या docker सेवा सूची कमांड चलाकर सेवा को कंटेनरीकृत किया गया है। लेकिन, कंटेनर को तैनात करने में एक मिनट लग सकता है। नीचे आदेश है:

$ डॉकटर सेवा एल.एस.

यह कमांड झुंड क्लस्टर द्वारा प्रबंधित सभी सेवाओं को सूचीबद्ध करेगा। हमारे मामले में, इसे एक सक्रिय कंटेनर प्रदर्शित करना चाहिए। संदर्भ के लिए नीचे स्क्रीनशॉट देखें।

यहाँ, 'REPLICAS = 1/1' इंगित करता है कि क्लस्टर में उस कंटेनर की एक एकल 'सेवा' है। और 'MODE = प्रतिकृति' इंगित करता है कि सेवा क्लस्टर में सभी नोड्स पर प्रतिकृति है।

अब, जिस पर नोड / प्रबंधक, ऐप को होस्ट किया गया है, की पहचान करने के लिए, हम कंटेनर नाम के बाद कमांड डॉकर सेवा पीएस कमांड चला सकते हैं। आदेश है:

$ docker सेवा ps कोणीय-ऐप-कंटेनर

उसी के लिए स्क्रीनशॉट नीचे है।

इसमें उस नोड के बारे में विवरण दिया गया है, जिस पर एप्लिकेशन को होस्ट किया गया है, जिसके साथ कमांड का उपयोग किया जाता है।

The docker ps 'कमांड सक्रिय कंटेनर के बारे में विवरण पर प्रकाश डालता है। आदेश है:

$ डॉकटर पी.एस.

संदर्भ के लिए नीचे स्क्रीनशॉट देखें।

लेकिन, यह कमांड केवल क्लस्टर प्रबंधक और नोड पर काम करेगा जहां सेवा वास्तव में होस्ट की गई है।

कितने नोड चल रहे हैं, यह जांचने के लिए, नोड सूची कमांड चलाएँ। कमांड है:

$ डोकर नोड एल.एस.

एक विशेष होस्ट में चल रहे कंटेनरों की जांच करने के लिए, नोड पीएस कमांड चलाएं। कमांड है:

$ डूकर नोड पीएस

यदि आपको याद है, तो मैंने पहले उल्लेख किया था कि वर्तमान में सेवा दोहराया MODE में चल रही है। इसका मतलब यह है कि इस सेवा को क्लस्टर के सभी नोड्स में दोहराया गया है। क्या आपको लगता है कि कोई विकल्प है?

पूर्ण रूप से! कुछ ऐसा है जिसे ग्लोबल MODE कहा जाता है। इस मोड में, क्लस्टर में प्रत्येक एकल / प्रबंधक पर इस कंटेनर की एक सेवा चल रही है। कंटेनर के दूसरे सेट को कताई करने से पहले वर्तमान सेवा / कंटेनर को रोकना याद रखें।

इसके लिए आदेश है:

$ docker सेवा rm कोणीय-ऐप-कंटेनर

ग्लोबल मोड में कंटेनर को स्पिन करने की कमांड है:

$ docker सेवा बनाएं --name 'Angular-App-कंटेनर' -p 4200: 4200 --mode वैश्विक कोणीय छवि

यह हमारे क्लस्टर में 3 नोड्स पर 3 सेवाओं का निर्माण करेगा। आप डॉकर सेवा सूची कमांड चलाकर इसे सत्यापित कर सकते हैं। इसका स्क्रीनशॉट नीचे है।

जब docker सेवा ps कमांड निष्पादित होती है, तो आपको कुछ इस तरह दिखाई देगा:

जैसा कि आप देख सकते हैं, यह कहता है कि मोड दोहराया गया है और इस कंटेनर की प्रतिकृतियां 3. अब इस ब्लॉग का सबसे अच्छा हिस्सा है।

तीन कंटेनरों के बीच चलने वाली सेवाओं की 2 प्रतिकृतियां होने के लिए, हम प्रतिकृतियां ध्वज का उपयोग कर सकते हैं। नीचे दिए गए आदेश को देखें:

$ docker सेवा बनाएं --name 'Angular-App-कंटेनर' -p 4200: 4200 --replicas = 2 कोणीय-छवि

आप देखेंगे कि ये 2 सेवाएं क्लस्टर में तीन नोड्स के बीच संतुलित हैं। सत्यापित करने के लिए docker सेवा प्रक्रिया कमांड चलाएँ, जिसमें नोड्स सक्रिय हैं। संदर्भ के लिए नीचे स्क्रीनशॉट देखें। कंटेनर एक प्रबंधक नोड और एक श्रमिक नोड में सक्रिय हैं।

वर्कर नोड से, आप सत्यापित कर सकते हैं कि कंटेनर ps docker ps 'कमांड को निष्पादित करके चल रहा है।

उच्च उपलब्धता के लिए डॉकर झुंड

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

$ डॉकटर ने कोणीय-ऐप-कंटेनर को रोक दिया

नोड पर उपरोक्त कमांड चलाएं: वर्कर -1 जहां कंटेनर चल रहा है।प्रबंधक से, कमांड चलाएँ:

$ docker सेवा ps कोणीय-ऐप-कंटेनर

अब आप देखेंगे कि कंटेनर अब नोड: कार्यकर्ता -2 और प्रबंधक में चल रहा है। हालाँकि, इसे नोड: वर्कर -1 से बंद कर दिया गया है। वही नीचे स्क्रीनशॉट से दिखाई दे रहा है।

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

सेवाओं के ऊपर स्केलिंग के बाद उच्च उपलब्धता

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

लेकिन अपनी बात पर वापस आते हुए, आइए देखें कि हमारे क्लस्टर में सेवाओं की संख्या बढ़ाना कितना आसान है। यह मानते हुए कि हमारे क्लस्टर में हमारे पास 2 या 3 प्रतिकृतियां हैं, हम केवल एक ही कमांड चलाकर सेवाओं को 5 तक बढ़ा सकते हैं। आदेश है:

$ डॉकटर सेवा पैमाने कोणीय-ऐप-कंटेनर = 5

इसका स्क्रीनशॉट नीचे है।

Docker सेवा सूची कमांड चलाकर, आप देख सकते हैं कि प्रतिकृतियों की संख्या अब 5 है। और सेवा नाम के साथ docker सेवा ps कमांड को चलाकर, आप देख सकते हैं कि कैसे 5 सेवाओं को 3 नोड्स पर संतुलित और वितरित किया जाता है । कमांड हैं:

$ docker सेवा l $ docker सेवा ps Angular-App-कंटेनर

और अंत में, एक डॉकर झुंड सेटअप में यदि आप नहीं चाहते कि आपका प्रबंधक कार्यवाही में भाग ले और केवल प्रक्रियाओं को प्रबंधित करने के लिए इसे अपने कब्जे में रखे, तो हम प्रबंधक को किसी भी एप्लिकेशन की मेजबानी करने से रोक सकते हैं। क्योंकि यह दुनिया में कैसे काम करता है, क्या यह नहीं है? प्रबंधक केवल अन्य श्रमिकों के प्रबंधन के लिए हैं। वैसे भी, ऐसा करने की आज्ञा है:

$ डॉक नोड अपडेट - अनुपलब्ध ड्रेन मैनेजर -1

आप यह सत्यापित कर सकते हैं कि क्या प्रबंधक अब डॉक नोड सूची कमांड और डॉक सेवा पीएस कमांड चलाकर क्लस्टर में भाग ले रहा है:

$ docker नोड ls $ docker सेवा ps Angular-App- कंटेनर

अब आप देख सकते हैं कि कंटेनर सेवाओं को कार्यकर्ता नोड्स के बीच विभाजित किया गया है और प्रबंधक नोड को वास्तव में किसी भी सेवा को कंटेनर से निकाला गया है। स्क्रीनशॉट नीचे है।

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

फुर्तीली और देवों के बीच अंतर

आप यह समझने के लिए नीचे दिए गए वीडियो को वैकल्पिक रूप से देख सकते हैं कि डॉकर झुंड कैसे काम करता है। ऊपर बताई गई सभी अवधारणाओं को वीडियो में कवर किया गया है।

उच्च उपलब्धता के लिए डॉकटर झुंड | डॉकटर ट्यूटोरियल | DevOps ट्यूटोरियल

अब जब आपने डॉकर के बारे में जान लिया है, तो देखें 250,000 से अधिक संतुष्ट शिक्षार्थियों के एक नेटवर्क के साथ एक विश्वसनीय ऑनलाइन शिक्षण कंपनी, एडुरेका द्वारा, दुनिया भर में फैली हुई है। यह एडुर्का डॉकर सर्टिफिकेशन ट्रेनिंग कोर्स शिक्षार्थियों को डोकर लागू करने और इसमें महारत हासिल करने में विशेषज्ञता हासिल करने में मदद करता है।

क्या आप हमसे कोई प्रश्न पूछना चाहते हैं? कृपया टिप्पणी अनुभाग में इसका उल्लेख करें और हम आपके पास वापस आ जाएंगे।