[अनुवाद] VMware CloudFoundry: PaaS in Ruby

छवि एक सेवा के रूप में प्लेटफ़ॉर्म (PaS) बनाने, तैनात करने और बनाए रखने के लिए सबसे तुच्छ वस्तु नहीं है: एक शुरुआत के लिए, आपको अंदर से सभी सेवाओं का प्रबंधन करने के लिए बहुत काम करना होगा, फिर आपको एक अच्छा इंटरफ़ेस लागू करने और लागू करने की आवश्यकता है, और अंत में, आपको एक सेवा की आवश्यकता है बेचने और कुशलता से समर्थन करते हैं। यह आश्चर्य की बात नहीं है कि आईटी बाजार में कुछ ही धनी खिलाड़ी ऐसी सेवाओं को बनाने के लिए निवेश का खर्च उठा सकते हैं।

इसलिए, यह देखना दिलचस्प था कि वीएमवेयर ने क्लाउडफ़ाउंड्री सेवा को कैसे तैनात किया, और यहां तक ​​कि ओपन सोर्स कोड (ईमानदारी से, यहां जीथब अकाउंट भी है )! पूर्ण-भाग वाले PaS, जिसे वे होस्टिंग के रूप में उपयोग करने की पेशकश भी करते हैं, सभी को अपनी कंपनी या डेटा सेंटर में लॉन्च करने के लिए उपलब्ध है - अब आप अपने सर्वर पर "मिनी हरोकू", या "EngineYard क्लाउड" चला सकते हैं! लेकिन विपणन की दिशा में, इस परियोजना के हुड के तहत देखना अधिक दिलचस्प है, क्योंकि यह पूरी तरह से रूबी में आयोजित किया गया है।



CloudFoundry: रेल, सिनात्रा, EventMachine


CloudFoundry कई प्लेटफार्मों और चौखटे (रेल, सिनात्रा, ग्रेल्स, नोड.जेएस) को चलाने की क्षमता प्रदान करता है, और यह बहुत जरूरी सहायक सेवाओं (MySQL, Redis, RabbitMQ) का भी समर्थन करता है। दूसरे शब्दों में, प्रणाली मॉड्यूलर और बहुत ही स्केलेबल है। सेवा का youtube पर एक पूरा चैनल है , जहाँ आप बुनियादी ढांचे के बारे में विस्तार से जान सकते हैं।

छवि रेल 3 (CloudController) मॉड्यूल के इस ऑर्केस्ट्रा का संचालन करता है और सभी उपयोगकर्ताओं, उपयोग की जाने वाली सेवाओं और अनुप्रयोगों के बारे में जानकारी संग्रहीत करता है, और प्रदान की गई सेवाओं को भी नियंत्रित करता है। जब आप स्थानीय मशीन पर कंसोल (CLI - कमांड लाइन क्लाइंट) शुरू करते हैं, तो आप वास्तव में CloudController तक पहुंचते हैं। दिलचस्प बात यह है कि रेल एप्लिकेशन स्वयं ही थिन वेब सर्वर में ऐड-ऑन है, रूबी 1.9 और अतुल्यकालिक डेटाबेस ड्राइवरों का उपयोग करता है - दूसरे शब्दों में, अतुल्यकालिक रेल का उपयोग किया जाता है जो कई प्रदर्शन समस्याओं को हल करते हैं।

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

CloudFoundry के बाकी हिस्से एक निश्चित पैटर्न के अनुसार काम करते हैं: प्रत्येक सेवा एक रूबी डेमॉन है जो अपने बूट की स्थिति पर JSON रिपोर्ट भेजने के साथ-साथ कुछ अन्य क्रियाओं को करते हुए CloudController'y अनुरोध को पहले बूट पर भेजती है। आश्चर्य की बात नहीं, EventMachine इस सब के पीछे है और इसलिए पतली और रैक समापन बिंदु का उपयोग करता है।

map '/healthz' do
run lambda { |env| [200, RACK_TEXT_HDR, Component.updated_healthz] }
end


छवि
राउटर आवक अनुरोधों को पार्स करने और एप्लिकेशन (बूंदों) में से किसी एक पर ट्रैफ़िक पुनर्निर्देशित करने के लिए ज़िम्मेदार है। इसे पूरा करने के लिए, पंजीकृत URL और उनके संबंधित अनुप्रयोगों के मानचित्र का उपयोग किया जाता है। जब एप्लिकेशन के साथ एक नया सर्वर बनाया जाता है, तो राउटर मैप को अपडेट किया जाता है और अपडेट किए गए मार्गों के अनुसार ट्रैफ़िक पुनर्निर्देशित किया जाता है। आवेदनों की एक छोटी संख्या के लिए, एक राउटर पर्याप्त है। यदि उनमें से बहुत सारे हैं, तो ट्रैफ़िक को कई राउटरों के बीच वितरित किया जाता है।

DEA (Droplet Execution Agent) - नए एप्लिकेशन बनाने की प्रक्रिया का प्रबंधन। CloudController से उपयुक्त कमांड प्राप्त करने पर, यह आवश्यक स्क्रिप्ट और कमांड लॉन्च करता है और सर्वर को स्वयं शुरू करता है

एक ऐसी सेवा भी है जो MySQL, Redis, RabbitMQ, आदि जैसे संसाधनों तक सर्वर पहुंच को नियंत्रित करती है। इसकी वास्तुकला फिर से बहुत सरल है: माणिक डेमन- श्रोता आने वाले अनुरोधों को सुनता है और आवश्यक "स्टार्ट" / "स्टॉप" कमांड और उपयोगकर्ता कमांड को जोड़ने / हटाने को कहता है। प्रोविजनर क्लास को लागू करने के लिए एक नई या कस्टम सेवा जोड़ना उतना ही आसान है।

सभी टुकड़ों और NATS को जोड़ना


छवि ऊपर वर्णित प्रत्येक रूबी डेमॉन एक विशिष्ट पैटर्न का अनुसरण करता है: लोड होने पर, यह क्लाउडकंट्रोलर को एक अनुरोध भेजता है और HTTP समापन बिंदु के माध्यम से इसकी स्थिति और स्थिति के बारे में जानकारी देता है। लेकिन वे एक दूसरे के साथ कैसे काम करते हैं? स्वाभाविक रूप से, रूबी पर एक और सेवा की मदद से। NATS के माध्यम से, एक हल्का संदेश प्रकाशन और सदस्यता प्रणाली जो सब कुछ एक साथ लाती है। पहली शुरुआत में प्रत्येक रूबी डेमॉन NATS से जुड़ा हुआ है और इसके लिए आवश्यक संदेशों की सदस्यता लेता है, और अपनी सूचनाएं भी प्रकाशित करना शुरू करता है।

यह आर्किटेक्चर CloudFoundry को नए राउटर, DEA एजेंट, सर्विस कंट्रोलर आदि को आसानी से जोड़ने और हटाने की अनुमति देता है। कुछ भी एक मशीन पर, या अपने स्वयं के डेटा केंद्र में क्लस्टर पर ऊपर वर्णित सभी चरणों के निष्पादन को रोकता है।

तो, क्या रूबी में वितरित सिस्टम संभव हैं?


बेशक, हाँ! CloudFoundry के रूप में कई स्केलेबल कणों के साथ एक वितरित प्रणाली का निर्माण एक उपलब्धि है। रूबी को प्राथमिक भाषा के रूप में चुनकर, VMware ने इस तरह के गैर-तुच्छ प्रणालियों में विश्वास व्यक्त किया। इस विशाल कोलोसस के हुड के नीचे, आप रेल, साइनट्रा, रैक और बहुत सारे EventMachine कोड पा सकते हैं। इसलिए मैं निश्चित रूप से सभी रूबिस्टों को सलाह देता हूं कि वे अपने अवकाश पर स्रोत कोड पढ़ें।

Source: https://habr.com/ru/post/In118624/


All Articles