पंक रॉक बैंड की तरह लगता है। लेकिन यह एकदम नया ऑर्केस्ट्रेशन मैकेनिज्म है, या यूँ कहें कि डॉकर में उपलब्ध ऑर्केस्ट्रेशन में सुधार है। इसे छोटा और अच्छा रखने के लिए, यदि आप डॉकर के पुराने संस्करण का उपयोग कर रहे हैं, तो आपको डॉकर क्लस्टर बनाने के लिए झुंड को मैन्युअल रूप से सेटअप करना होगा। संस्करण 1.12 से शुरू होकर, डॉकर इंजन एक मूल कार्यान्वयन के साथ आता है जो एक सहज क्लस्टरिंग सेटअप की अनुमति देता है। हम यहां क्यों हैं इसका कारण है। पी>
इस ट्यूटोरियल में, मैं आपको यह बताने की कोशिश करूँगा कि जब ऑर्केस्ट्रेशन की बात आती है तो डॉकर क्या कर सकता है। यह लेख किसी भी तरह से सभी समावेशी (बिस्तर और नाश्ता) या सर्वज्ञ नहीं है, लेकिन इसमें वह सब कुछ है जो आपको अपनी क्लस्टरिंग यात्रा पर ले जाने के लिए आवश्यक है। मेरे बाद। पी>
पी>
प्रौद्योगिकी अवलोकन
मेरे लिए बहुत विस्तृत और अत्यधिक उपयोगी डॉकर प्रलेखन लेख को फिर से दोहराना शर्म की बात होगी, इसलिए मैं तकनीक के एक संक्षिप्त अवलोकन की रूपरेखा तैयार करूँगा। तो हमारे पास डॉकर है, ठीक है। अब, आप डॉकर होस्ट के रूप में एक से अधिक सर्वर का उपयोग करना चाहते हैं, लेकिन आप चाहते हैं कि वे एक ही तार्किक इकाई से संबंधित हों। इसलिए, क्लस्टरिंग। पी>
आइए एक के समूह से शुरू करें। जब आप एक मेजबान पर झुंड आरंभ करते हैं, तो यह क्लस्टर का प्रबंधक बन जाता है। तकनीकी रूप से बोलना, यह एक नोड का सर्वसम्मति समूह बन जाता है। पीछे का गणितीय तर्क रफ एल्गोरिथम पर आधारित है। शेड्यूलिंग कार्यों के लिए प्रबंधक जिम्मेदार है। एक बार और यदि वे झुंड में शामिल हो जाते हैं, तो कार्यों को कार्यकर्ता नोड्स को सौंप दिया जाएगा। यह नोड एपीआई द्वारा शासित है। मुझे एपीआई शब्द से नफरत है, लेकिन मुझे इसका इस्तेमाल यहां करना चाहिए। पी>
सेवा एपीआई इस कार्यान्वयन का दूसरा घटक है। यह प्रबंधक नोड्स को झुंड में सभी नोड्स पर वितरित सेवाएं बनाने की अनुमति देता है। सेवाओं को दोहराया जा सकता है, जिसका अर्थ है कि वे संतुलन तंत्र का उपयोग करके पूरे क्लस्टर में फैले हुए हैं, या वे वैश्विक हो सकते हैं, जिसका अर्थ है कि प्रत्येक नोड पर सेवा का एक उदाहरण चल रहा होगा। पी>
यहां काम करने के लिए और भी बहुत कुछ है, लेकिन यह आपको तैयार और पंप करने के लिए काफी अच्छा है। अब, आइए कुछ वास्तविक व्यावहारिक चीज़ें करते हैं। हमारा लक्ष्य प्लेटफ़ॉर्म CentOS 7.2 है, जो काफी दिलचस्प है, क्योंकि जब मैंने इस ट्यूटोरियल को लिखा था, तब रिपोज़ में केवल डॉकर 1.10 था, और मुझे झुंड का उपयोग करने के लिए फ्रेमवर्क को मैन्युअल रूप से अपग्रेड करना पड़ा। हम इस पर एक अलग ट्यूटोरियल में चर्चा करेंगे। फिर, हमारे पास एक अनुवर्ती मार्गदर्शिका भी होगी, जहां हम अपने क्लस्टर में नए नोड जोड़ेंगे, और हम फेडोरा के साथ असममित सेटअप का प्रयास करेंगे। इस बिंदु पर, कृपया मान लें कि सही सेटअप हो रहा है, और चलिए एक क्लस्टर सेवा शुरू करते हैं और चलते हैं। पी>
सेटअप छवि और सेवा
मैं एक लोड-संतुलित अपाचे सेवा सेटअप करने का प्रयास करूंगा, जिसमें एक ही आईपी पते के माध्यम से सामग्री परोसने वाले कई उदाहरण होंगे। सुंदर मानक। यह विशिष्ट कारणों पर भी प्रकाश डालता है कि आप क्लस्टर कॉन्फ़िगरेशन के साथ क्यों जाएंगे - उपलब्धता, अतिरेक, क्षैतिज स्केलिंग और प्रदर्शन। बेशक, आपको नेटवर्किंग के साथ-साथ भंडारण पर भी ध्यान देने की आवश्यकता है, लेकिन यह कुछ ऐसा है जो इस गाइड के तत्काल दायरे से परे है। पी>
वास्तविक डॉकरफाइल टेम्पलेट httpd के तहत आधिकारिक रिपॉजिटरी में उपलब्ध है। आरंभ करने के लिए आपको एक न्यूनतम सेटअप की आवश्यकता होगी। छवियों को कैसे डाउनलोड करना है, अपना खुद का कैसे बनाना है और इस तरह के विवरण मेरे इंट्रो गाइड में उपलब्ध हैं, जो इस ट्यूटोरियल की शुरुआत में जुड़ा हुआ है। पी>
डॉकर बिल्ड-टी माय-अपाचे 2।
डॉकर डेमॉन 2.048 केबी को बिल्ड कॉन्टेक्स्ट भेजा जा रहा है
चरण 1 :httpd:2.4 से
भंडार docker.io/library/httpd खींचने की कोशिश कर रहा है ...
2.4:docker.io/library/httpd
8ad8b3f87b37:पूरा खींचो
c95e1f92326d:पूरा खींचो
96e8046a7a4e:पूरा खींचो
00a0d292c371:पूरा खींचो
3f7586acab34:पूरा खींचो
डाइजेस्ट:sha256:3ad4d7c4f1815bd1c16788a57f81b413...a915e50a0d3a4
स्थिति:docker.io/httpd:2.4 के लिए नई छवि डाउनलोड की गई
---> fe3336dd034d
चरण 2 :कॉपी करें ../public-html/ /usr/local/apache2/htdocs/
... पी>
पी>
इससे पहले कि आप आगे बढ़ें, आपको एक उदाहरण शुरू करना चाहिए और देखना चाहिए कि आपका कंटेनर बिना किसी त्रुटि के बनाया गया है और आप वेब सर्वर से जुड़ सकते हैं। एक बार जब हम इसे स्थापित कर लेते हैं, तो हम एक वितरित सेवा बना लेंगे। पी>
docker run -dit --name my-running-app my-apache2
आईपी पता जांचें, ब्राउज़र में पंच करें, देखें कि क्या देता है। पी>
झुंड की शुरुआत और सेटअप
अगला कदम झुंड को चालू करना है। यहां सबसे बुनियादी आदेश दिए गए हैं जो आपको आगे बढ़ाएंगे, और यह डॉकर ब्लॉग में उपयोग किए गए उदाहरण के समान है:
डॉकर सर्विस क्रिएट --नाम फ्रंटएंड --प्रतिकृति 5 -p 80:80/tcp my-apache2:latest
यहाँ क्या हो रहआ हैं? हम पांच कंटेनर इंस्टेंस के साथ फ्रंटएंड नामक एक सेवा बना रहे हैं। हम अपने होस्टपॉर्ट 80 को कंटेनरपोर्ट 80 के साथ भी बांध रहे हैं। और हम इसके लिए मेरी ताज़ा बनाई गई अपाचे छवि का उपयोग कर रहे हैं। हालाँकि, जब आप ऐसा करते हैं, तो आपको निम्न त्रुटि मिलेगी:
डॉकर सर्विस क्रिएट --नाम फ्रंटएंड --प्रतिकृति 5 -p 80:80/tcp my-apache2:latest
डेमन से त्रुटि प्रतिक्रिया:यह नोड झुंड प्रबंधक नहीं है। इस नोड को झुंड से जोड़ने और पुनः प्रयास करने के लिए "docker swarm init" या "docker swarm join" का उपयोग करें। पी>
इसका अर्थ है कि आपने वर्तमान होस्ट (नोड) को झुंड प्रबंधक के रूप में सेट नहीं किया है। आपको या तो झुंड में प्रवेश करना होगा या किसी मौजूदा झुंड में शामिल होना होगा। चूँकि हमारे पास अभी तक एक नहीं है, अब हम इसे इनिशियलाइज़ करेंगे:
डॉकर झुंड init
झुंड आरंभीकृत:वर्तमान नोड (dm58mmsczqemiikazbfyfwqpd) अब एक प्रबंधक है।
इस झुंड में एक कार्यकर्ता को जोड़ने के लिए, निम्नलिखित कमांड चलाएँ:
डोकर झुंड शामिल हों \
--टोकन SWMTKN-1-4ofd46a2nfyvrqwu8w5oeetukrbylyznxla
9srf9vxkxysj4p8-eu5d68pu5f1ci66s7w4wjps1u \
10.0.2.15:2377
इस झुंड में एक प्रबंधक जोड़ने के लिए, 'डॉकर झुंड ज्वाइन-टोकन मैनेजर' चलाएं और निर्देशों का पालन करें। पी>
आउटपुट काफी आत्म व्याख्यात्मक है। हमने एक झुंड बनाया है। झुंड में शामिल होने के लिए नए नोड्स को सही टोकन का उपयोग करने की आवश्यकता होगी। यदि आपके पास फ़ायरवॉल नियमों की आवश्यकता है, तो आपके पास IP पता और पोर्ट की पहचान भी है। इसके अलावा, आप झुंड में प्रबंधकों को भी जोड़ सकते हैं। अब, सर्विस क्रिएट कमांड फिर से चलाएँ:
डॉकर सर्विस क्रिएट --नाम फ्रंटएंड --प्रतिकृति 5 -p 80:80/tcp my-apache2:latest
6lrx1vhxsar2i50is8arh4ud1
टेस्ट कनेक्टिविटी
अब, देखते हैं कि हमारी सेवा वास्तव में काम करती है या नहीं। एक तरह से यह वैसा ही है जैसा हमने वैग्रांट और कोरोस के साथ किया था। आखिरकार, अवधारणाएं लगभग समान हैं। यह एक ही विचार का अलग कार्यान्वयन है। सबसे पहले, docker ps को सही आउटपुट दिखाना चाहिए। बनाई गई सेवा के लिए आपके पास एकाधिक प्रतिकृतियां होनी चाहिए। पी>
डोकर पीएस
कंटेनर आईडी इमेज कमांड बनाया गया स्थिति पोर्ट
नाम
cda532f67d55 my-apache2:latest "httpd-अग्रभूमि"
2 मिनट पहले 2 मिनट तक 80/tcp frontend.1.2sobjfchdyucschtu2xw6ms9a
75fe6e0aa77b my-apache2:latest "httpd-अग्रभूमि"
2 मिनट पहले 2 मिनट तक 80/tcp frontend.4.ag77qtdeby9fyvif5v6c4zcpc
3ce824d3151f my-apache2:latest "httpd-अग्रभूमि"
2 मिनट पहले 2 मिनट तक 80/tcp frontend.2.b6fqg6sf4hkeqs86ps4zjyq65
eda01569181d my-apache2:latest "httpd-अग्रभूमि"
2 मिनट पहले 2 मिनट तक 80/tcp frontend.5.0rmei3zeeh8usagg7fn3olsp4
497ef904e381 my-apache2:latest "httpd-अग्रभूमि"
2 मिनट पहले 2 मिनट तक 80/tcp frontend.3.7m83qsilli5dk8rncw3u10g5a
मैंने अलग-अलग, गैर-डिफ़ॉल्ट बंदरगाहों के साथ भी परीक्षण किया, और यह अच्छी तरह से काम करता है। आप सर्वर से कैसे जुड़ सकते हैं और प्रतिक्रिया कैसे प्राप्त कर सकते हैं, इसमें आपके पास बहुत कुछ है। आप सही पोर्ट के साथ लोकलहोस्ट या डॉकर इंटरफेस आईपी एड्रेस का उपयोग कर सकते हैं। नीचे दिया गया उदाहरण पोर्ट 1080 दिखाता है:
पी>
अब, यह एक बहुत ही कठिन, बहुत सरल शुरुआत है। वास्तविक चुनौती अनुकूलित, स्केलेबल सेवाओं को बनाने में है, लेकिन उन्हें उचित तकनीकी उपयोग के मामले की आवश्यकता होती है। इसके अलावा, आपको अपने क्लस्टर के व्यवहार के बारे में अधिक जानने के लिए docker info और docker service (निरीक्षण | ps) कमांड का भी उपयोग करना चाहिए। पी>
संभावित समस्याएं
डॉकर और झुंड के साथ खेलते समय आपको कुछ छोटी (या इतनी छोटी नहीं) समस्याओं का सामना करना पड़ सकता है। उदाहरण के लिए, SELinux शिकायत कर सकता है कि आप कुछ अवैध करने का प्रयास कर रहे हैं। हालाँकि, त्रुटियों और चेतावनियों को आपको बहुत अधिक बाधित नहीं करना चाहिए। पी>
पी>
डॉकर सेवा डॉकर कमांड नहीं है
जब आप प्रतिकृति सेवा प्रारंभ करने के लिए आवश्यक कमांड चलाने का प्रयास करते हैं, तो आपको एक त्रुटि मिलती है जो कहती है कि docker:'service' is not a docker कमांड। इसका मतलब है कि आपके पास डॉकर का सही संस्करण नहीं है (चेक के साथ -v)। हम इसे अनुवर्ती ट्यूटोरियल में ठीक कर देंगे। पी>
डॉकर सर्विस क्रिएट --नाम फ्रंटएंड --प्रतिकृति 5 -p 80:80/tcp my-apache2:latest
डॉकर:'सेवा' डॉकर कमांड नहीं है। पी>
डॉकर टैग पहचाना नहीं गया
आप निम्न त्रुटि भी देख सकते हैं:
डॉकर सर्विस क्रिएट-नाम फ्रंटएंड-प्रतिकृति 5-पी 80:80/टीसीपी माय-अपाचे2:नवीनतम
डेमन से त्रुटि प्रतिक्रिया:आरपीसी त्रुटि:कोड =3 desc =कंटेनरस्पेक:"-नाम" एक मान्य रिपॉजिटरी/टैग नहीं है
इसे लेकर कई चर्चा सूत्र हैं। त्रुटि वास्तव में काफी निर्दोष हो सकती है। हो सकता है कि आपने किसी ब्राउज़र से आदेश की प्रतिलिपि बनाई हो, और हो सकता है कि हाइफ़न ठीक से पार्स न किए गए हों. इतना सरल है। पी>
और पढ़ना
इस विषय पर और भी बहुत कुछ कहा जा सकता है, जिसमें डॉकर 1.12 से पहले झुंड कार्यान्वयन, साथ ही डॉकर इंजन का वर्तमान संस्करण भी शामिल है। बुद्धि के लिए, कृपया आलसी न हों और कुछ समय पढ़ने में व्यतीत करें:
डॉकर झुंड अवलोकन (स्टैंडअलोन झुंड स्थापनाओं के लिए)
उत्पादन के लिए झुंड क्लस्टर बनाएं (स्टैंडअलोन सेटअप)
डॉकर झुंड (स्टैंडअलोन सेटअप) स्थापित करें और बनाएं
डॉकर इंजन झुंड अवलोकन (संस्करण 1.12 के लिए)
झुंड मोड के साथ आरंभ करना (संस्करण 1.12 के लिए)
निष्कर्ष
तुम वहाँ जाओ। इस बिंदु पर कुछ भी बड़ा नहीं है, लेकिन मुझे विश्वास है कि आपको यह लेख उपयोगी लगेगा। It covers several key concepts, there's an overview of how the swarm mode works and what it does, and we successfully managed to download and create our own Web server image and then run several clustered instances of it. We did this on a single node for now, but we will expand in the future. Also, we tackled some common problems. पी>
I hope you find this guide interesting. Combined with my previous work on Docker, this should give you a decent understand of how to work with images, the networking stack, storage, and now clusters. Warming up. Indeed, enjoy and see you soon with fresh new tutorials on Docker. I just can't contain [sic] myself. पी>
प्रोत्साहित करना। पी>