गर्म हो रहा है। टाइम स्लाइडर के कुछ दिनों के बाद, मैंने वैग्रांट को प्रदर्शित किया, एक वर्चुअलाइजेशन समाधान जो वर्चुअलबॉक्स, केवीएम और दोस्तों जैसे अन्य, कथित रूप से अधिक जटिल सॉफ़्टवेयर के लिए एक अच्छा, साफ आवरण होने के कारण बड़ा लक्ष्य रखता है। इसके अलावा, यह डॉकर कंटेनर सपोर्ट और क्लाउड सर्वर वातावरण की पेशकश करके सीनियर लीग में खेलता है। पी>
इस मॉडल पर विस्तार करते हुए, हम थोड़ा अलग उपयोगकेस पर चर्चा करेंगे, बहुत अधिक बादल छाए रहेंगे। कोरोस, जिसे हमने पिछले अभ्यास में इस्तेमाल किया है, एक अन्य खिलाड़ी है जो क्लाउड उन्माद को भुनाने की कोशिश करता है, और यह कुछ बहुत ही साफ-सुथरी क्लस्टर सुविधाएँ और स्वचालन प्रदान करता है। आज, हम सीखेंगे कि एक क्लस्टर कैसे लाया जाए और नेटवर्किंग के टुकड़े पर चर्चा की जाए, जो कुछ हद तक उपेक्षित है, और मूल दस्तावेज में भी बहुत अच्छी तरह से समझाया नहीं गया है। तो कृपया मुझे फॉलो करें। पी>
डिस्कवरी टोकन सेटअप
पिछली बार के विपरीत, जब मैंने उद्देश्यपूर्ण रूप से पॉवर्सशेल के माध्यम से विंडोज पर वैग्रांट की कोशिश की, सिर्फ एक नमूना देने के लिए कि यह कई अलग-अलग तरीकों से किया जा सकता है, हमारी वर्तमान कवायद अधिक सटीक होने के लिए लिनक्स, जुबांटु विविड में होगी। पी>
आधिकारिक गाइड के बाद, Vagrant के लिए CoreOS की स्थापना करना बहुत कठिन नहीं है, लेकिन यह उतना तुच्छ भी नहीं है जितना कि ऑनलाइन संदर्भ आपके पास होगा। आरंभ करने के लिए स्पष्ट अधीरता है, और यह हो जाती है। पी>
आपके द्वारा रिपॉजिटरी को क्लोन करने के बाद, आपके पास अपने निपटान में कई फाइलें होंगी, जिन्हें आपको आरंभ करने और Vagrant को शुरू करने में सक्षम होने के लिए थोड़ा संपादित करना होगा। सबसे पहले आपको user-data.sample फ़ाइल को संपादित करना होगा और उसका नाम बदलकर user-data करना होगा। सबसे विशेष रूप से, टोकन का टुकड़ा:
#बादल-विन्यास
कोरोस:
आदि:
# प्रत्येक अद्वितीय क्लस्टर के लिए एक नया टोकन उत्पन्न करें
https://discovery.etcd.io/new?size=3
# आकार =X के साथ अपने क्लस्टर का प्रारंभिक आकार निर्दिष्ट करें
# चेतावनी:हर बार जब आप 'आवारा नष्ट' करते हैं तो उसे बदलें
खोज:https://discovery.etcd.io/
मूल रूप से, CoreOS विशिष्ट पहचानकर्ताओं का उपयोग करता है - जिन्हें टोकन कहा जाता है - चल रहे उदाहरणों को एक दूसरे की पहचान करने में मदद करने के लिए। एक ही टोकन वाले सभी होस्ट एक ही झुंड के हैं, इसलिए उन्हें आदि साझा कॉन्फ़िगरेशन और खोज सेवा का उपयोग करके केंद्रीकृत तरीके से नियंत्रित किया जा सकता है। पी>
https://discovery.etcd.io/new?size=
ऊपर दिए गए URL पर जाकर और वांछित क्लस्टर आकार निर्दिष्ट करके आप अपना स्वयं का उपयोग कर सकते हैं, या एक नया उत्पन्न कर सकते हैं। डिफ़ॉल्ट कॉन्फ़िगरेशन तीन होस्ट है। जेनरेट किए गए टोकन को लिखें और इसे कॉन्फ़िगरेशन फ़ाइल में जोड़ें, जैसे:
https://discovery.etcd.io/21e4099c23b52a8403640c2d48cdca6f
हम बाद में देखेंगे कि यह क्यों महत्वपूर्ण है। पी>
क्लस्टर सेटअप
दूसरा टुकड़ा यह परिभाषित करना है कि Vagrant के शुरू होने पर हम CoreOS के कितने उदाहरण चलाना चाहते हैं। यह समग्र रूप से एक साधारण विन्यास है। परिवर्तन को क्लोन गिट निर्देशिका के अंदर config.rb.sample फ़ाइल में जोड़ा जाना चाहिए, और config.rb का नाम बदला जाना चाहिए। हम केवल अद्वितीय और विशेष होने के लिए, चार उदाहरणों के साथ प्रयास करेंगे। पी>
# Vagrant द्वारा बनाए गए CoreOS क्लस्टर का आकार
$num_instances=X
क्लस्टर शुरू करें
अब, आप वैग्रांट चला सकते हैं। यदि आपने ऑनलाइन रिपॉजिटरी को क्लोन किया है, तो आपके पास वर्तमान निर्देशिका में पहले से ही एक डिफ़ॉल्ट Vagrant कॉन्फ़िगरेशन फ़ाइल होगी, इसलिए यदि आप vagrant init का प्रयास करते हैं, तो आपको असफल होना चाहिए:
आवारा init
`Vagrantfile` पहले से ही इस निर्देशिका में मौजूद है। इसे पहले हटा दें
'आवारा init' चल रहा है। पी>
पी>
यदि आपके पास वर्चुअलबॉक्स या अन्य प्रासंगिक वर्चुअलाइजेशन सॉफ़्टवेयर स्थापित नहीं है, तो प्रोग्राम शुरू करने का प्रयास करने पर आपको एक और त्रुटि मिलेगी। सुनिश्चित करें कि आपने पहले ही इन छोटी-छोटी समस्याओं का समाधान कर लिया है। पी>
आवारा
प्रदाता 'वर्चुअलबॉक्स' जिसे मशीन वापस करने का अनुरोध किया गया था
'कोर-01' रिपोर्ट कर रहा है कि यह इस सिस्टम पर प्रयोग करने योग्य नहीं है।
कारण नीचे दिखाया गया है:
Vagrant VirtualBox का पता नहीं लगा सका! सुनिश्चित करें कि वर्चुअलबॉक्स ठीक से स्थापित है। Vagrant `VBoxManage` बाइनरी का उपयोग करता है जो VirtualBox के साथ शिप करता है, और इसके लिए PATH पर उपलब्ध होना आवश्यक है। यदि वर्चुअलबॉक्स स्थापित है, तो कृपया `VBoxManage` बाइनरी खोजें और इसे PATH पर्यावरण चर में जोड़ें। पी>
पी>
यदि आपने यह काम सफलतापूर्वक कर लिया है, तो Vagrant को शुरू करना चाहिए और एक-एक करके CoreOS उदाहरण बनाना चाहिए। इसमें कुछ समय लग सकता है, और आपको बड़े क्लस्टर को समायोजित करने के लिए अच्छे नेटवर्क बैंडविड्थ और ढेर सारी मेमोरी की आवश्यकता होगी। पी>
पी>
आवारा
मशीन 'कोर-01' को 'वर्चुअलबॉक्स' प्रदाता के साथ लाना...
मशीन 'कोर-02' को 'वर्चुअलबॉक्स' प्रदाता के साथ लाना...
मशीन 'कोर-03' को 'वर्चुअलबॉक्स' प्रदाता के साथ लाना...
मशीन 'कोर-04' को 'वर्चुअलबॉक्स' प्रदाता के साथ लाना...
==> कोर-01:बॉक्स 'कोरोस-अल्फा' नहीं मिला। खोजने और स्थापित करने का प्रयास कर रहा है...
कोर-01:बॉक्स प्रदाता:वर्चुअलबॉक्स
कोर-01:बॉक्स संस्करण:>=308.0.1
==> कोर-04:बेस बॉक्स 'कोरोस-अल्फा' आयात कर रहा है...
==> कोर-04:NAT नेटवर्किंग के लिए मैचिंग MAC एड्रेस...
==> कोर-04:चेक किया जा रहा है कि बॉक्स 'कोरोस-अल्फा' अप टू डेट है या नहीं...
==> कोर-04:वीएम का नाम सेट करना:coreos-vagrant_core-04_1431799934824_55775
==> कोर-04:22 => 2222 के लिए फिक्स्ड पोर्ट टक्कर। अब पोर्ट 2202 पर।
==> कोर-04:पहले से सेट किए गए किसी भी नेटवर्क इंटरफेस को साफ़ करना ...
==> कोर-04:कॉन्फ़िगरेशन के आधार पर नेटवर्क इंटरफेस तैयार कर रहा है ...
कोर-04:अडैप्टर 1:nat
कोर-04:अडैप्टर 2:होस्ट ओनली
==> कोर-04:बंदरगाहों को अग्रेषित करना ...
कोर-04:22 => 2202 (एडाप्टर 1)
==> कोर-04:'प्री-बूट' वीएम अनुकूलन चला रहा है...
==> कोर-04:वीएम बूट कर रहा है...
==> कोर -04:मशीन के बूट होने की प्रतीक्षा कर रहा है। इसमें कुछ मिनट लग सकते हैं...
कोर-04:एसएसएच पता:127.0.0.1:2202
core-04:SSH उपयोगकर्ता नाम:core
कोर-04:SSH प्रमाणीकरण विधि:निजी कुंजी
कोर-04:चेतावनी:कनेक्शन टाइमआउट। पुनः प्रयास कर रहा है...
==> कोर-04:मशीन बूट हो चुकी है और तैयार है!
==> कोर-04:होस्टनाम सेट करना ...
==> कोर-04:नेटवर्क इंटरफेस को कॉन्फ़िगर और सक्षम करना ...
==> कोर-04:रनिंग प्रोविजनर:फाइल...
==> कोर-04:रनिंग प्रोविजनर:शेल...
कोर-04:चल रहा है:इनलाइन स्क्रिप्ट
एक बार सभी सिस्टम बन जाने के बाद, आप मौजूदा मशीनों और उनकी वर्तमान स्थिति के बारे में सभी आवश्यक जानकारी प्राप्त करने के लिए vagrant status चला सकते हैं। पी>
पी>
नेटवर्किंग
अब वास्तव में दिलचस्प हिस्सा आता है। हमारे पास चार वर्चुअल मशीनें हैं। लेकिन हम उनसे कैसे जुड़ते हैं? डॉकर का परीक्षण करते समय हमें इसी तरह की दुविधा थी, लेकिन फिर हमने अपना रास्ता खोज लिया, और यहाँ भी यही तर्क लागू होता है। पी>
सबसे पहले, vagrant ssh कमांड का उपयोग करके चलने वाली मशीनों में से प्रत्येक को कनेक्ट करना संभव है, जो सभी चाबियों का ख्याल रखेगी और क्या नहीं। आपको इसे क्लोन की गई निर्देशिका से निष्पादित करना होगा, अन्यथा आपको एक त्रुटि होगी:
आवारा ssh core-02 -- -A
इसे चलाने के लिए एक आवारा वातावरण या लक्ष्य मशीन की आवश्यकता होती है
आज्ञा। एक नया आवारा वातावरण बनाने के लिए `vagrant init` चलाएँ। या, इस आदेश को चलाने के लिए `vagrant global-status` से लक्ष्य मशीन की एक आईडी प्राप्त करें। एक अंतिम विकल्प Vagrantfile के साथ एक निर्देशिका में बदलना और पुनः प्रयास करना है। पी>
लेकिन फिर, सही निर्देशिका में, यह ठीक काम करना चाहिए:
पी>
यदि आप ifconfig चलाते हैं, तो आप देखेंगे कि आपकी सभी मशीनों का एक ही IP पता माना जाता है, और आप उनके बीच रूट नहीं कर सकते। इसके अलावा, वर्चुअलबॉक्स इंटरफ़ेस 172.0.0.1 सेगमेंट पर चलता है, इसलिए यह चीजों को थोड़ा और कठिन बना देता है। फिर से, जैसा कि हमारे पास डॉकर के साथ था। पी>
पी>
आप हमेशा वर्चुअलबॉक्स आंतरिक नेटवर्किंग रेंज का उपयोग कर सकते हैं और फ़ायरवॉल नियमों और रूटिंग को तदनुसार समायोजित कर सकते हैं। हालाँकि, यह विधि वास्तव में आपको यह नहीं बताती है कि आपकी कौन सी वर्चुअल मशीन किस विशेष IP पते का उपयोग करती है, और यह आसानी से मक्खी पर निर्धारित नहीं होती है। दूसरे शब्दों में, आप इन नंबरों को कहीं से भी पार्स नहीं कर सकते हैं, और सही जानकारी प्राप्त करने के कुछ और शानदार तरीके हैं। पी>
लोकलहोस्ट द्वारा कनेक्ट करें
यदि आपको याद है, स्टार्टअप के दौरान, प्रत्येक वर्चुअल मशीन के लिए Vagrant सेटअप SSH, लोकलहोस्ट पर चलने के लिए, विभिन्न पोर्ट का उपयोग करते हुए, 2200 (या इसी तरह) से शुरू होता है। तो आपको अपने ग्राहकों में एसएसएच करने की आवश्यकता है, आप इस विकल्प का उपयोग कर सकते हैं:
एसएसएच 127.0.0.1 -पी 2202
होस्ट की प्रामाणिकता '[127.0.0.1]:2202 ([127.0.0.1]:2202)' स्थापित नहीं की जा सकती।
ED25519 कुंजी फिंगरप्रिंट 32:a0:57:58:b3:55:fc:03:c8:89:7d:7c:cc:6f:85:9d है।
क्या आप वाकई कनेक्ट करना जारी रखना चाहते हैं (हां/नहीं)? पी>
कहीं भी आईपी पते से कनेक्ट करें
हालाँकि, उपरोक्त विधि VM से VM संचार के लिए काम नहीं करती है, और हमें कुछ और चाहिए। यहीं पर डिस्कवरी पीस वास्तव में काम आता है। एक बार आपका क्लस्टर चलने के बाद, आप उस URL पर फिर से नेविगेट कर सकते हैं, और अब यह कुछ भद्दे लेकिन उपयोगी JSON सामग्री से आबाद होगा:
चाबियों और मूल्यों पर ध्यान दें। प्रत्येक प्रविष्टि का अपना IP पता होता है, e,g, 172.17.8.103, और आप इसे इस आउटपुट से पार्स कर सकते हैं। उत्कृष्ट। अब हम आंतरिक पते जानते हैं, और हम उनका उपयोग सीधे अपने ग्राहकों से जुड़ने के लिए कर सकते हैं, और इससे भी महत्वपूर्ण बात यह है कि उन्हें अपने साथियों के साथ संवाद करने की अनुमति मिलती है। पी>
पी>
पी>
एक छोटा सा गायब टुकड़ा यह है कि हमें कोर उपयोगकर्ता पासवर्ड नहीं पता है, इसलिए हम vagrant.d उप-निर्देशिका के अंदर स्थित प्रदान की गई कुंजी का उपयोग करेंगे। कुंजी जोड़ें, और फिर आप निर्बाध रूप से कनेक्ट कर सकते हैं। हमने इसे अपनी पहली गाइड में देखा है। पी>
पी>
पी>
पोर्ट फ़ॉरवर्डिंग
हमने वास्तव में अपने बक्सों के लिए विन्यास के हिस्से में ज्यादा दबिश नहीं दी है, लेकिन इस बिंदु पर, अब जब हम अपने चल रहे उदाहरणों के आईपी पते जानते हैं, तो हम वास्तव में रचनात्मक होना शुरू कर सकते हैं। उदाहरण के लिए, पोर्ट फ़ॉरवर्डिंग, जो सेवाओं को चलाने वाली आभासी मशीनों के लिए बहुत महत्वपूर्ण है। पी>
Vagrantfile के अंदर निर्देशों के रूप में आवश्यक परिवर्तन प्रदान करने की आवश्यकता है। आपके पास कई सेटअपों के लिए कई कॉन्फ़िगरेशन हो सकते हैं - बहुत कुछ डॉकरफाइल्स की तरह। उदाहरण के लिए, HTTPS पोर्ट को अग्रेषित करना होगा:
config.vm.forward_port 443, <होस्ट पोर्ट>
यदि आपने मेरे डॉकर लेखों का अनुसरण किया है, तो सब कुछ बहुत आसान है। होस्ट पोर्ट, क्लाइंट पोर्ट, और बॉब आपके चाचा हैं। आपके पास प्रत्येक बॉक्स के लिए कई घोषणाएँ हैं। फिर, यदि आपको अपने सिस्टम के पूर्ण और पूर्ण नियंत्रण की आवश्यकता है, तो आप मैन्युअल रूप से फ़ायरवॉल नियम भी कॉन्फ़िगर कर सकते हैं। दोबारा, यह सिर्फ एक टीज़र है, और हम भविष्य में इसके साथ और अधिक समय व्यतीत करेंगे। पी>
अब, निश्चित रूप से, अगला कदम डॉकटर को प्लग इन करना है, और समान डिफ़ॉल्ट रेंज के साथ, जो शायद दुर्घटना से नहीं है, आप क्लस्टर, कंटेनर, समानांतर निष्पादन और अन्य फैंसी अवधारणाओं के साथ खेलना शुरू कर सकते हैं। यही कारण है कि वैग्रांट प्लगइन्स के साथ आता है, जिसकी चर्चा हम एक अलग लेख में करेंगे। वैसे भी, एक बार जब आप अपना काम पूरा कर लें, तो बस उदाहरणों को नष्ट कर दें। पी>
पी>
और पढ़ना
Dedoimedo's फोर्ज से कुछ अतिरिक्त अच्छी चीजें:
यहाँ CoreOS क्विकस्टार्ट गाइड है; थोड़ा भारी हो सकता है
एक सुपरवाइज़र्ड ट्यूटोरियल, जो कुछ हद तक इसी तरह की क्षमता प्रदान करता है etcd
KVM और VirtualBox साथ-साथ कॉन्फ़िगरेशन ट्वीक
निष्कर्ष
आवारा, साथ ही कोरोस, दिलचस्प, जंगली, विद्रोही विचारों की तरह प्रतीत होते हैं। मैं अभी तक आश्वस्त नहीं हूं कि कारोबारी माहौल में उनके कितने मूल्य हैं, हालांकि आवरण प्रौद्योगिकियां जो वास्तविक काम के रक्तमय विवरणों को छिपाती हैं, हर समय बढ़ती और अधिक लोकप्रिय होती जा रही हैं। हर कोई फ्रंटएंड और ऑर्केस्ट्रेशन टूल चाहता है, एकमात्र समस्या यह है कि बाजार इतना चंचल, अस्थिर है, कोई मानक नहीं हैं, और लोग पायथन, रूबी और JSON जैसी बदसूरत चीजों का उपयोग करते हैं। लेकिन बुरा ना माने। पी>
हमने आतंक गुप्तता के एक और छोटे टुकड़े पर विजय प्राप्त की है, और आप Vagrant और CoreOS दोनों से कुछ अधिक परिचित हैं। यह अच्छा है, क्योंकि हमारा अगला भाग इन क्लस्टर सेवाओं में से कुछ के साथ खेलना शुरू करना होगा और क्या नहीं। और वह तो बस शुरुआत है। पी>
याद रखें, मुझे यह सब करना चाहिए, इसलिए आने वाले महीनों में, हम फ्लीट, कुबेरनेट्स, मेसोस, एच्च, और कई अन्य शानदार परियोजनाओं सहित, लेकिन इन्हीं तक सीमित नहीं, बहुत सारी चीजों का पता लगाएंगे। हम कोरोस और अन्य को क्लाउड प्रदाताओं में भी बांधेंगे, वितरित और समानांतर फाइल सिस्टम के साथ बेला, जेनकींस जैसे स्वचालन उपकरण, Ansible, अभी भी अधिक नाम छोड़ना और आपको उल्टी करना चाहते हैं, और फिर कुछ। बने रहें। पी>
प्रोत्साहित करना। पी>