हॉट क्लोन एक जीवित लिनक्स सेवा


14

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

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

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

तो, समस्या यह है कि क्या नोड सर्वर को सबसे अच्छे प्रदर्शन पर रखने के लिए लिनक्स सर्वर को गर्म करने का एक स्थिर तरीका है ताकि हम कम समय में इसे क्लोन कर सकें और इसे ऑनलाइन कर सकें?


मशीन की कल्पना करना, और "वार्म-अप" स्थिति का एक स्नैप शॉट लेने से कोई फायदा नहीं होगा?
ट्रिपहाउंड

13
क्या आप समझते हैं कि यह वार्म-अप क्यों होता है? उदाहरण के लिए, यह फ़ाइल कैश का साइड-इफ़ेक्ट हो सकता है। लेकिन क्लोनिंग मशीनों के कुछ जवाब फ़ाइल कैश को छोड़ देते हैं, क्योंकि परिभाषा के अनुसार कैश को अंतर्निहित मूल से फिर से बनाया जा सकता है।
17

कांटा () किसी भी मशीन पर अधिक प्रक्रियाएं बनाने का एक तरीका है, जो भी स्टार्टअप ओवरहेड को बचाता है।
फिर भी एक अन्य उपयोगकर्ता

धन्यवाद दोस्तों, @TripeHound, मैंने अपने एक दोस्त से पूछा है जो VMWare में काम करता है, और उन्होंने कहा कि उनके लिए "वार्म-अप" राज्य को स्नैप करना असंभव है, न ही कुछ दर्पण सामान। MSalters, मुझे 100% यकीन नहीं है कि वार्मिंग अप के दौरान क्या होता है, लेकिन ऐसा लगता है कि सेवा के बाद, गणना कार्य के बाद कुछ आलसी लोडिंग कार्य काम करता है
स्टीवन

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

जवाबों:


28

हो सकता है कि आप एक पूरे सर्वर को "गर्म क्लोन" नहीं कर सकते (आप कर सकते हैं, लेकिन केवल अगर यह एक वर्चुअल मशीन है), लेकिन आप किसी भी प्रक्रिया को फ्रीज और रिस्टोर कर सकते हैं, जिसमें क्रि , चेकपॉइंट / रिस्टोर इन यूज़र्स।

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

अपने इच्छित ऑपरेशन का समर्थन करने के लिए, आप सहेजे गए प्रोग्राम का प्रतिनिधित्व करने वाली फ़ाइलों को किसी अन्य सर्वर पर कॉपी कर सकते हैं, और इसे वहां पुनर्स्थापित कर सकते हैं।

criu में संकलित विभिन्न विशेषताओं के साथ हाल ही में कर्नेल की आवश्यकता होती है, इसलिए पुराने लिनक्स वितरण काम नहीं कर सकते हैं। आप यह criu checkनिर्धारित करने के लिए किसी विशेष मशीन पर चल सकते हैं कि क्रियु के लिए आवश्यक शर्तें मौजूद हैं या नहीं।


यह बहुत अच्छा लग रहा है और मैं इस पर कुछ परीक्षण करूँगा, धन्यवाद भाई
स्टीवन

आपके अनुभव से, व्यवहार में यह कितना अच्छा है? सीमाओं को देखते हुए क्रिउ सूचियां (जो बहुत अधिक हैं जिनकी मैं उम्मीद करूंगा - यह एक कठिन समस्या है), मुझे लगता है कि यह उन अनुप्रयोगों के साथ काम करने की संभावना नहीं है जो इस उपयोग के मामले को ध्यान में रखते हुए डिज़ाइन नहीं किए गए थे।
जेम्स_पिक

@James_pic शायद एक साल हो गया है क्योंकि मैंने इसे गंभीरता से देखा है, क्योंकि मेरे पास वर्तमान में इसके लिए कोई उपयोग नहीं है। एक डेमॉन के लिए, जो केवल कनेक्शन स्वीकार कर रहा है और कुछ गणना कर रहा है (जैसे ओपी की मशीन सीखने की नौकरी, या एक वेब सर्वर) यह अच्छी तरह से काम करता है।
माइकल हैम्पटन

12

यह आपके वर्तमान परिवेश के दायरे से बाहर हो सकता है, लेकिन ऐसा करने का उद्योग मानक तरीका आपके सर्वर का वर्चुअलाइजेशन करना है। कई वर्चुअलाइजेशन होस्ट (VMware, वर्चुअलबॉक्स, आदि) "स्नैपशॉट" की अनुमति देते हैं जो एक सर्वर की स्थिति को बचाते हैं, जिसे तब नए उदाहरणों में क्लोन किया जा सकता है। इन नए उदाहरणों में मूल रूप से वही स्थिति होगी, जो चल रही प्रक्रियाओं के नीचे है। बेशक, आप यह सुनिश्चित करना चाहेंगे कि जो सॉफ़्टवेयर आप चला रहे हैं वह अभी भी एक आभासी वातावरण (CUDA / GPU गणना स्प्रिंग्स को ध्यान में रखते हुए) सही ढंग से प्रदर्शन करेगा।


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

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

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

@chensteven मैं हाल ही में एक वर्चुअलबॉक्स वातावरण से आया हूं। यह कुछ समय पहले था, लेकिन जो मुझे याद है कि एक रनिंग स्नैपशॉट में vm की सटीक स्थिति होती है, जिस समय स्नैपशॉट लिया गया था, जिसमें रनिंग प्रोसेस और मेमोरी की सामग्री शामिल है। इस स्नैपशॉट को फिर से एक नई vm पर क्लोन किया जा सकता है, जिससे आपको एक ही स्थिति में दो मशीनें मिलेंगी।
cawwot

3

आपके द्वारा उल्लिखित प्रश्न एक लिंक, http://www.linuxfocus.org/English/March2005/article370.shtml का उल्लेख करता है , जिसमें उन सभी तरीकों का वर्णन है जो मैंने आपके अनुरोधों को करने के लिए कल्पना की थी।

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

यह बिल्कुल स्पष्ट नहीं है कि आपका क्या मतलब है "जब तक हम इसे कई बार खिलाते हैं"

लेकिन अगर मैं अच्छी तरह से समझता हूं कि आप क्या पूछते हैं, तो आपको यह विचार करना होगा कि किसी प्रणाली को क्लोन करने के लिए संसाधनों की प्रतिलिपि और गणना करने के लिए समय की आवश्यकता होती है।

"ON / OF" या बेहतर सक्रिय / बैकअप वातावरण कहा जाता है, करने के लिए सर्वर को क्लस्टर में ठीक से कॉन्फ़िगर किया जाना है।

मुझे खेद है कि यदि आप अपेक्षित जवाब नहीं दे रहे हैं, लेकिन आपके पास जो विकल्प हैं, वे हैं।


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

1

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

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

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

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

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

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

यह पाठ्यक्रम केवल एक उपयोग का मामला उदाहरण है, और आपके कॉन्फ़िगरेशन और कई चर के आधार पर, आपको अपने विशिष्ट मामले के आधार पर माइग्रेशन के लिए अपनी रणनीति बनाने की आवश्यकता हो सकती है।

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

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

आशा है कि यह मदद करता है, और अपने सर्वर चाल के साथ शुभकामनाएँ!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.