एक नई उत्पाद शाखा का विकास: कैसे अव्यावहारिक से छुटकारा पाने और उपयोगी रखने के लिए



नमस्कार, हेब्र! मेरा नाम दिमित्री है, मैं ISPsystem में एक डेवलपर हूं। हाल ही में, हमने बीटा परीक्षण में वर्चुअल मशीन कंट्रोल पैनल के एक नए संस्करण का विमोचन किया। आज मैं आपको बताऊंगा कि कैसे हमने फैसला किया कि एक पुराने उत्पाद से क्या लेना है, और क्या मना करना बेहतर है। मैं हमारे लिए सबसे महत्वपूर्ण मुद्दों के माध्यम से जाना होगा: libvirt के साथ काम करने के लिए एक पुस्तकालय, उत्पाद स्थापना के दौरान विभिन्न ऑपरेटिंग सिस्टमों के लिए समर्थन, मोनोलिथ से माइक्रोसर्विस में संक्रमण, और आभासी मशीनों की तैनाती।

लेख VMmanager के बारे में है। यह KVM और OVZ वर्चुअलाइजेशन पर आधारित आभासी मशीनों के प्रबंधन, तैनाती और निगरानी के लिए एक प्रणाली है। पांचवीं पीढ़ी 2012 में सामने आई। तब से, इंटरफ़ेस बहुत पुराना है, और केंद्रीकृत वास्तुकला ने उत्पाद के विकास को रोक दिया है। यह एक नया संस्करण बनाने का समय है।

पहली कहानी। हम घर के बछड़ों के काम का उपयोग करते हैं

Libvirt के साथ कार्य करें: विकल्पों पर विचार करें, पुस्तकालयों का चयन करें

KVM वर्चुअलाइजेशन के प्रबंधन के लिए एक उपकरण के रूप में, हमारा उत्पाद libvirt का उपयोग करता है। 2012 में, सी में लिखी गई एक लाइब्रेरी को इसके साथ काम करने के लिए चुना गया था, इसलिए यह उस विकास टीम के लिए अधिक सुविधाजनक था। परिणामस्वरूप - C ++ में बड़ी मात्रा में लिखा गया कोड, C-Library को कॉल करता है, जो libvirt के साथ प्रत्यक्ष कार्य को कार्यान्वित करता है।

और अब, एक नई परियोजना की दहलीज पर, हम अपने उत्पाद को वापस देखते हैं और जांचते हैं, तौलना कि क्या यह एक विशेष समाधान / प्रौद्योगिकी लेने के लायक है; क्या खुद को साबित किया है और क्या याद रखने की जरूरत है और कभी नहीं दोहराया।

हम बैठते हैं और उत्पाद के पिछले संस्करण पर कई वर्षों के कार्य का पूर्वव्यापीकरण करते हैं। हम धैर्य रखते हैं, स्टिकर लेते हैं और तीन प्रकार के कागज़ लिखते हैं:
  1. क्या उत्पाद में सफल रहा? यूजर्स ने क्या तारीफ की? क्या कभी शिकायत नहीं सुनी? आपको खुद क्या पसंद था?
  2. क्या हुआ असफल? लगातार समस्याएं क्या थीं? क्या काम में बाधा आई, और उन्होंने एक नई शाखा क्यों शुरू की?
  3. क्या बदला जा सकता है? उपयोगकर्ता क्या मांगते हैं? टीम के सदस्य क्या बदलना चाहते हैं?

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

कहानी पर वापस। हम कोड के एक टुकड़े की जांच करते हैं जहां C ++ 98 मानक शांतिपूर्वक सह-पुस्तकालय सी-लाइब्रेरी कॉल करता है। हमें याद है कि 2018 वर्ष है और उसे अकेला छोड़ने का फैसला किया है। लेकिन वर्चुअल मशीनों (वीएम) के साथ काम करने की कार्यक्षमता को कैसे दोहराएं, कोड को अधिक कॉम्पैक्ट और काम के लिए सुविधाजनक बनाते हैं?

हम इस मुद्दे का अध्ययन करते हैं, यह समझते हैं कि कोई भी समाधान और किस भाषा में हम चुनते हैं, यह सी-लाइब्रेरी पर एक आवरण होगा। एक दिलचस्प विकल्प के रूप में, यह DigitalOcean से Go पर लाइब्रेरी को ध्यान देने योग्य है, यह सीधे libvirt के साथ संवाद करने के लिए RPC प्रोटोकॉल का उपयोग करता है, लेकिन इसकी कमियां हैं। हम पायथन पुस्तकालय पर बस गए।

नतीजतन, हमें कोड लिखने, उपयोग में आसानी और पढ़ने की गति मिली। यह सुंदर शब्दों को समझाने के लायक है।
  • गति । अब हम मुख्य एप्लिकेशन के पुनर्निर्माण के बिना, डिबग सर्वर पर कंसोल से सीधे डोमेन के साथ काम के एक निश्चित हिस्से को जल्दी से प्रोटोटाइप कर सकते हैं।
  • सादगी । एक निश्चित हैंडलर में कई C ++ विधियों को कॉल करने के बजाय, हमारे पास पैरामीटर पासिंग के साथ पायथन स्क्रिप्ट कॉल है।
  • डिबगिंग भी जितना जल्दी हो सके और दर्द रहित हो। मेरी राय में, लंबे समय में यह एक दिलचस्प उपयोगकर्ता अनुभव ले सकता है। कल्पना कीजिए, सिस्टम प्रशासक, दुखी है कि उसकी आभासी मशीनें नष्ट होने से पहले बंद होने की प्रतीक्षा कर रही हैं, होस्ट_स्टॉप विधि के लिए स्क्रिप्ट को फिर से परिभाषित करता है और फिर से परिभाषित करता है। क्या मैं आपके लिए एक पैनल भी लिख सकता हूँ?

नतीजतन, हमें सर्वर स्तर पर आभासी मशीनों के साथ काम करने के लिए एक सरल और सुविधाजनक उपकरण मिला।

दूसरी कहानी। एक अच्छी तरह से पैक किए गए उत्पाद को अतिरिक्त caresses की आवश्यकता नहीं है

उत्पाद वितरण: हम कई पैकेजों से इंकार करते हैं और हम डॉकर के पास जाते हैं


VMmanager 5 को लिनक्स पैकेज के एक सेट के रूप में वितरित किया जाता है। CentOS 6/7 और, हाल ही में, डेबियन 7 का समर्थन किया जाता है। इसका क्या मतलब है? इसका अर्थ है CI / CD के लिए अधिक बिल्ड सर्वर, अधिक परीक्षण, कोड पर अधिक ध्यान। हमें याद रखना चाहिए कि जब CentOS 7 qemu संस्करण 1.5.3 के आधिकारिक भंडार में, CentOS 6 में यह 0.12.1 है। उसी समय, उपयोगकर्ता रिपॉजिटरी का उपयोग कर सकता है जिसमें इस पैकेज का संस्करण बहुत अधिक है। इसका मतलब है कि वीएम के साथ काम करते समय आपको विशेष रूप से प्रवास के दौरान एपी के विभिन्न संस्करणों का समर्थन करने की आवश्यकता होती है। हमें इनिशियलाइज़र (init, systemd) के बीच का अंतर याद रखना चाहिए, पैकेज और उपयोगिताओं के नाम में अंतर को ध्यान में रखना चाहिए। जो उपयोगिताएँ CentOS पर काम करती हैं, वे डेबियन पर काम नहीं करेंगी, या आधिकारिक रिपॉजिटरी में उनके संस्करण व्यापक रूप से भिन्न होंगे। प्रत्येक धक्का के लिए, आपको सभी संस्करणों के लिए पैकेज एकत्र करने की आवश्यकता है, और यह भी सलाह दी जाती है कि उन्हें परीक्षण करना न भूलें।

नए उत्पाद में यह सब हमें शोभा नहीं देता। अलग-अलग तर्क का समर्थन नहीं करने के लिए, हम कई प्रणालियों को छोड़ देते हैं और केवल CentOS 7 छोड़ देते हैं। क्या समस्या हल हो गई है? वास्तव में नहीं।

हम स्थापना से पहले ऑपरेटिंग सिस्टम के संस्करण की भी जांच नहीं करना चाहते हैं, क्या आवश्यक उपयोगिताओं उपलब्ध हैं, SELinux में क्या नियम स्थापित हैं, और हम फ़ायरवॉल और रिपॉजिटरी सूचियों को फिर से कॉन्फ़िगर नहीं करना चाहते हैं। मैं एक बार - और यह सब करना चाहता हूं, पूरे पर्यावरण और उत्पाद को तैनात करने के लिए हर दूसरे को नष्ट करने के लिए क्लिक करके। यह कहा जाता है - किया, परियोजना एक डॉकटर कंटेनर में लपेटी गई है।

अब यह करना पर्याप्त है:
# docker pull vmmanager # docker run -d vmmanager:latest 

पैनल ऊपर और चल रहा है।

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

तथ्य यह है कि विकास को सरल बनाने के लिए यह कितना महत्वपूर्ण है, और सबसे महत्वपूर्ण बात, आपके उत्पाद की तैनाती, स्थापित करें। जो 2097 लाइनों पर कब्जा कर लिया है।

परिणामस्वरूप:
  1. एक सजातीय उत्पाद स्थापना वातावरण कार्यक्रम कोड को सरल करता है और विधानसभा और परीक्षण लागत को कम करता है।
  2. डॉकटर के रूप में एप्लिकेशन का वितरण तैनाती को सरल और पूर्वानुमान योग्य बनाता है।

तीसरी कहानी। पहला संबंध माइक्रो सर्विस के साथ

वास्तुकला: हम मोनोलिथ को माइक्रोसर्विस के पक्ष में छोड़ देते हैं, या नहीं


उत्पाद का पांचवां संस्करण पुरानी C ++ मानक वाला एक बड़ा अखंड सिस्टम है। नतीजतन, नई प्रौद्योगिकियों का समस्याग्रस्त कार्यान्वयन और विरासत कोड को फिर से भरने की कठिनाई, खराब क्षैतिज स्केलिंग। नई शाखा में, उन्होंने इस तरह की समस्याओं से बचने के तरीकों में से एक के रूप में microservice दृष्टिकोण का उपयोग करने का फैसला किया।

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

सकारात्मक पक्ष


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

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

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

नकारात्मक पक्ष


संदर्भ का अनुरोध करें
मोनोलिथ में मेरे सभी डिबगिंग कंसोल में दो प्रश्नों के लिए नीचे आए:
 # tail -n 460 var/vmmgr.log | grep ERR # tail -n 460 var/vmmgr.log | grep thread_id_with_err 

हो गया! मैं संपूर्ण अनुरोध को ट्रैक कर सकता हूं, इसकी प्राप्ति से लेकर सिस्टम में त्रुटि होने तक।

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

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

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

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

शेष माइक्रोसर्विसेज के रूप में, सांख्यिकी सेवा में पंजीकरण की अक्षमता वर्चुअल मशीन के संचालन को प्रभावित नहीं करती है, और यह क्रिया हमेशा दोहराई जा सकती है। खैर, हम एक आँकड़े संग्रह microservice कर रहे हैं। लेकिन परिभाषित डोमेन सेवा (libvirt का उपयोग करके वर्चुअल मशीन बनाना) कभी भी प्रकाश को नहीं देखेगा, क्योंकि बिना किसी वास्तविक अस्तित्व के मशीन की खाली जरूरत होती है।

चौथी कहानी। ताजा अच्छे का दुश्मन है

VM परिनियोजन: किसी नेटवर्क पर इंस्टॉल करने के बजाय छवियों से इंस्टॉल करना

उत्पाद के पांचवें संस्करण में, एक वर्चुअल मशीन की तैनाती वास्तविक मानकों द्वारा काफी लंबा समय लेती है। इसका कारण नेटवर्क पर ऑपरेटिंग सिस्टम को स्थापित करना है।

Centos, Fedora के लिए, RedHat किकस्टार्ट विधि है :
1. किकस्टार्ट फ़ाइल बनाएँ।
2. कर्नेल मापदंडों में प्रतिक्रिया फ़ाइल के लिंक को निर्दिष्ट करें linux inst.ks = <किकस्टार्ट फ़ाइल के लिए लिंक>।
3. किकस्टार्ट संस्थापन चलाएँ।

किकस्टार्ट-फाइल काफी लचीली है, इसमें आप सभी संस्थापन चरणों का वर्णन कर सकते हैं, इसकी विधि से शुरू करके समय क्षेत्र की स्थापना, डिस्क और नेटवर्क सेटिंग्स के विभाजन के साथ समाप्त कर सकते हैं। हमारे टेम्पलेट्स में url पैरामीटर इंगित करता है कि स्थापना एक दूरस्थ सर्वर से है।

डेबियन और उबंटू के लिए, preseed विधि:
यह पिछले एक के समान है, इस पद्धति को कॉन्फ़िगरेशन फ़ाइल और इसकी सामग्री के आसपास भी बनाया गया है। इसमें, हमने नेटवर्क पर इंस्टॉलेशन को भी कॉन्फ़िगर किया है।

FreeBSD के लिए स्थापना समान है, लेकिन किकस्टार्ट फ़ाइल के बजाय, हमारे स्वयं के उत्पादन की एक शेल स्क्रिप्ट है।

दृष्टिकोण के सकारात्मक पहलू


यह स्थापना विकल्प आपको हमारे दो उत्पादों में एक टेम्पलेट का उपयोग करने की अनुमति देता है: VMmanager और DCImanager (समर्पित सर्वर का प्रबंधन)।

वर्चुअल मशीनों की तैनाती काफी लचीली है, पैनल प्रशासक ऑपरेटिंग सिस्टम टेम्पलेट को कॉपी कर सकता है और विन्यास फाइल को बदल सकता है क्योंकि वह फिट दिखता है।

यदि दूरस्थ सर्वर पर समयबद्ध तरीके से अपडेट किया जाता है तो सभी उपयोगकर्ताओं के पास हमेशा ऑपरेटिंग सिस्टम के अद्यतित संस्करण होते हैं।



नकारात्मक पक्ष


जैसा कि अभ्यास से पता चला है, VMmanager उपयोगकर्ताओं द्वारा इंस्टॉलेशन लचीलेपन की आवश्यकता नहीं थी: समर्पित सर्वरों की तुलना में, कुछ लोग वर्चुअल मशीनों के लिए विशिष्ट किकस्टार्ट फ़ाइल सेटिंग्स के बारे में चिंतित थे। लेकिन ओएस की स्थापना के लिए इंतजार करना वास्तव में एक दुर्गम लक्जरी था। ऑपरेटिंग सिस्टम की प्रासंगिकता का फ्लिप पक्ष यह है कि इंस्टॉलर का एक हिस्सा नेटवर्क पर है, और भाग स्थानीय initrd के लिए है । और उनके संस्करणों को मेल खाना चाहिए।

ये हल करने योग्य समस्याएं हैं। आप स्थापित मशीनों का एक पूल बना सकते हैं और ऑपरेटिंग सिस्टम के लिए अपना स्वयं का भंडार बना सकते हैं, लेकिन यह अतिरिक्त लागतों को पूरा करता है।

रिपॉजिटरी और पूल बनाए बिना इन समस्याओं को कैसे हल किया जाए? हमने ऑपरेटिंग सिस्टम छवि फ़ाइलों का चयन किया। अब स्थापना प्रक्रिया इस तरह दिखती है:
1. OS इमेज को वर्चुअल मशीन डिस्क में कॉपी करना।
2. नकल के बाद मुक्त स्थान के आकार से छवि के मुख्य भाग को बढ़ाएं।
3. मूल सेटिंग (एक पासवर्ड, समय क्षेत्र, आदि की स्थापना)।

सब कुछ नया पुराना भूल गया है। हमने VDSmanager-Linux, VMmanager के पूर्वज में OS छवियों का उपयोग किया।

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

बदले में, हमें एक तैयार-निर्मित आभासी मशीन मिलती है, जिसकी तैनाती डिस्क की प्रतिलिपि बनाने, डिस्क विभाजन को बढ़ाने और ऑपरेटिंग सिस्टम शुरू करने पर ही निर्भर करती है। मशीनों के साथ काम करने के लिए इस दृष्टिकोण का कार्यान्वयन हमें अपनी खुद की छवियां बनाने और उन्हें साझा करने का अवसर देता है। उपयोगकर्ता वर्चुअल मशीन पर एक LAMP बंडल या कुछ जटिल वातावरण स्थापित कर सकता है, फिर इस मशीन की एक छवि बना सकता है। अब, अन्य लोगों को आवश्यक उपयोगिताओं को स्थापित करने में समय बर्बाद नहीं करना पड़ेगा।

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

 command = "/usr/bin/virt-customize --root-password password:{password} --domain '{domain_name}'".format(password=args.password, domain_name=args.domain_name) 

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

आभासी मशीनों को तैनात करने के लिए हमें अधिक लचीला दृष्टिकोण मिला, जिसके आधार पर आवश्यक वातावरण के साथ अपनी खुद की छवियां बनाना सुविधाजनक है।

आपने क्या करने का प्रबंधन किया?


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

अंत में, मैं यह कहना चाहता हूं कि नए उत्पाद अन्य विकास दृष्टिकोणों, नई प्रौद्योगिकियों की कोशिश करने का एक अच्छा अवसर है। यह याद रखने योग्य है कि आप ऐसा क्यों कर रहे हैं, यह आपके और आपके उपयोगकर्ताओं के लिए क्या नई चीजें लाएगा। इसके लिए जाओ!

हमन समुदाय को VMmanager 6 के बीटा संस्करण को देखने और अपनी प्रतिक्रिया छोड़ने के लिए आमंत्रित करते हैं। ऐसा करने के लिए, my.saasvm.com पर जाएं , लॉग इन करें और एक समर्पित सर्वर कनेक्ट करें (CentOS 7 x64, इंटरनेट एक्सेस, सार्वजनिक आईपी पता)।

यदि आपके पास सर्वर नहीं है, तो हमें help@ispsystem.com पर लिखें या साइट पर चैट करें, हम अपने साथी, Selectel से परीक्षण उपकरण प्रदान करेंगे।

ISPsystem वेबसाइट पर समाचार में और पढ़ें।

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


All Articles