दस्तावेज़
डिजाइन अवलोकन
पृष्ठभूमि
कई बैच कार्यों को आसानी से उन कार्यों की इकाइयों में तोड़ दिया जा सकता है जिन्हें समानांतर में निष्पादित किया जा सकता है। Amazon EC2 जैसी क्लाउड सेवाओं पर 100 घंटे के लिए एक सर्वर चलाने के लिए 1 घंटे के लिए 100 सर्वर चलाने के समान खर्च होता है। दूसरे शब्दों में, उन समस्याओं के लिए जिन्हें समानांतर बनाया जा सकता है, इससे बैच को कई क्लाउड सर्वरों पर वितरित करने के लिए फायदेमंद हो जाता है, जैसा कि नौकरी के निष्पादन को समाप्त करने के लिए आवश्यक है। सिर्फ एक घंटे के नीचे। इन अर्थशास्त्र का पूरा लाभ उठाने के लिए एक आसान उपयोग, सर्वर उदाहरणों को फिर से शुरू करने और नष्ट करने के लिए स्वचालित प्रणाली, उनमें से काम की मांग और वितरण पर निर्भर है। आवश्यक है।
नियम और परिभाषा
- नौकरी: एक खोल आदेश काम की एक परमाणु इकाई का प्रतिनिधित्व करता है
- कार्य: नौकरियों का एक अनुक्रम
- कार्य टेम्पलेटA pre-configured work
- सत्र: किसी विशेष समय में किसी कार्य की स्थिति चली गई। इसमें कार्य विन्यास, कार्य निष्पादन की स्थिति और अभी भी लंबित निष्पादन की सूची शामिल है।
- विभाजन: श्रमिकों की संख्या कार्य की कार्य नौकरियों के बीच विभाजित हैं।
- कर्मचारीA सर्वर SSH चल रहा है जिस पर हम नौकरियों को निष्पादित करते हैं। यह एक लगातार सर्वर या गतिशील रूप से आवंटित EC2 क्लाउड सर्वर उदाहरण हो सकता है।
- TurnKey HubA: A वेब सेवा कि Cloudtask TurnKey सर्वर को लॉन्च करने और नष्ट करने के लिए उपयोग कर सकता है जो दिए गए कार्य को करने के लिए पूर्व-निर्मित किया गया है।
सुविधाएँ
-
नौकरियां सिर्फ सरल शेल कमांड हैं जो दूरस्थ रूप से निष्पादित किए गए हैं: कोई विशेष API नहीं है। शैल कमांड अच्छी तरह से समझा जाता है, भाषा का अनुज्ञप्तिपूर्ण और परीक्षण और विकास में आसान है।
-
कमांड लाइन विकल्प / पर्यावरण के माध्यम से एड-हॉक कार्य विन्यास: क्लाउडटास्क को सीधे कमांड लाइन से इस्तेमाल किया जा सकता है, जो एक-बंद कार्यों के लिए उपयोगी है, या एक नया नियमित कार्य करने / डीबगिंग करने के लिए।
-
पूर्व-configured कार्य टेम्पलेट: नियमित कार्यों के लिए विन्यास पैरामीटर को पूर्व- विन्यास कार्य टेम्पलेट के भीतर एम्बेडेड किया जा सकता है, जो स्वयं ही क्लाउडटास्क की तरह निष्पादन योग्य है, और इसके इंटरफ़ेस को विरासत में मिला है।
हुड के तहत एक कार्य टेम्पलेट को पाइथन वर्ग को परिभाषित करके कार्यान्वित किया जाता है जो कार्य को विरासत में देता है:
#!/usr/bin/python
from cloudtask import Task
class HelloWorld(Task):
DESCRIPTION = "This is a hello world cloudtask template"
COMMAND = 'echo hello world'
SPLIT = 2
REPORT = 'mail: cloudtask@example.com liraz@example.com'
HelloWorld.main()
-
वास्तविक समय लॉगिंग के साथ पारदर्शी निष्पादन: क्लाउडटास्क उपयोगकर्ता को कार्य की प्रगति का पालन करने के लिए इसे आसान बनाने के लिए वास्तविक समय में लॉगिंग प्रदान करता है। उदाहरण के लिए, SSH पर निष्पादित किसी भी कमांड की प्रगति के बाद कार्यकर्ता के सत्र लॉग को दर्ज करके अनुसरण किया जा सकता है:
cd ~/.cloudtask/$session_id/workers/ tail -f 1234
-
दोष सहिष्णुताक्लाउडटास्क को कई प्रकार की विफलताओं को फिर से जीवित रखने के लिए डिज़ाइन किया गया है। उदाहरण के लिए:
- कार्यकर्ता सर्वर को लगातार असफलता के लिए निगरानी की जाती है ताकि असफल सर्वर पर निष्पादन करने वाले नौकरी को एक कामकाजी सर्वर पर वापस ले जाया जा सके। जब तक एक कार्यकर्ता जीवित रहता है तब तक एक कार्य निष्पादन जारी रहेगा।
- उपयोगकर्ता प्रति-job टाइमआउट निर्दिष्ट कर सकता है ताकि नौकरी जो किसी भी कारण से रुकती है, वह अनिश्चित काल तक कार्यकर्ता को जमैके किये बिना कृपापूर्वक बाहर हो जाएगी।
- हब API विफलता क्लाउडटास्क के मामले में कुछ सेकंड इंतजार करेंगे और फिर से कोशिश करेंगे।
-
Abort and फिर से शुरू करने की क्षमता: Ctrl-C दबाने से किसी भी समय एक कार्य को गर्भपात किया जा सकता है, या TERM सिग्नल को मुख्य प्रक्रिया में भेज सकता है। सभी स्वचालित रूप से लॉन्च किए गए सर्वर उदाहरण नष्ट हो जाने के बाद, सत्र की स्थिति को बचाया जाता है ताकि बाद में इसे फिर से शुरू किया जा सके जहां से यह बंद हो गया।
-
रिपोर्टिंग हुकजब एक सत्र का निष्पादन समाप्त होता है तो एक रिपोर्टिंग हुक को एक मध्यस्थ कार्रवाई करने के लिए कॉन्फ़िगर किया जा सकता है (उदाहरण के लिए, एक अधिसूचना ई-मेल भेजना, डेटाबेस को अद्यतन करना आदि)। वर्तमान में तीन प्रकार के रिपोर्टिंग हैंडलर समर्थित हैं:
- मेल: सत्र लॉग के साथ एक या अधिक प्राप्तकर्ताओं को एक ई-मेल भेजें।
- sh: एक खोल आदेश निष्पादित करें। वर्तमान कार्य निर्देशिका सत्र पथ पर सेट की गई है और पर्यावरण सत्र संदर्भ के साथ आबादी है।
- Py: पाइथन कोड के एक मनमाने ढंग से स्निपेट को निष्पादित करें। सत्र और कार्य विन्यास स्थानीय चर के रूप में सुलभ हैं।
यह कैसे काम करता है
जब उपयोगकर्ता कार्य करता है, तो निम्नलिखित कदम किए जाते हैं:
-
एक अस्थायी SSH सत्र कुंजी बनाई गई है।
श्रमिकों के लिए प्रारंभिक प्रमाणीकरण मान लेता है कि आपने SSH एजेंट या समकक्ष (cloudtask पासवर्ड प्रमाणीकरण का समर्थन नहीं करता) स्थापित किया है।
अस्थायी सत्र कुंजी कार्य रन की अवधि के लिए कार्यकर्ता की अधिकृत कुंजी में जोड़ा जाएगा, और फिर हटा दिया जाएगा। हमें SSH एजेंट पर भरोसा किए बिना श्रमिकों तक पहुंच सुनिश्चित करने के लिए एक अस्थायी सत्र कुंजी को अधिकृत करने की आवश्यकता है।
-
श्रमिक आवंटित किए जाते हैं।
कार्यकर्ता क्लाउड सर्वर को अनुरोधित विभाजन को संतुष्ट करने के लिए स्वचालित रूप से क्लाउडटास्क द्वारा लॉन्च किया जाता है जब तक कि --workers विकल्प के माध्यम से पर्याप्त पूर्व-निर्धारित कार्यकर्ता प्रदान नहीं किए जाते हैं।
TKLBAM बैकअप आईडी को TurnKey Core के शीर्ष पर आवश्यक नौकरी निष्पादन निर्भरता (जैसे स्क्रिप्ट, पैकेज इत्यादि) स्थापित करने के लिए प्रदान किया जा सकता है।
-
कर्मचारी सेटअप
जब कर्मचारी अपने काम को पूरा कर लेते हैं तो उन्हें स्थापित किया जाता है। अस्थायी सत्र कुंजी अधिकृत कुंजी में जोड़ा जाता है, ओवरले को रूट फाइलसिस्टम (यदि उपयोगकर्ता ने ओवरले को कॉन्फ़िगर किया है) पर लागू किया जाता है और पूर्व कमांड को निष्पादित किया जाता है। (यदि उपयोगकर्ता ने एक पूर्व कमांड को कॉन्फ़िगर किया है)।
-
नौकरी निष्पादन
क्लाउडटास्क उन सभी नौकरियों की सूची को खिलाता है जो कार्य को एक नौकरी कतार में बनाते हैं। हर दूरस्थ कार्यकर्ता की एक स्थानीय पर्यवेक्षक प्रक्रिया है जो कतार से नौकरी कमांड पढ़ती है और इसे कार्यकर्ता पर SSH से अधिक निष्पादित करती है।
अगर --timeout को कॉन्फ़िगर किया गया है तो यह पूरा होने से पहले नौकरी का समय हो सकता है।
जबकि नौकरी निष्पादन कर रही है, पर्यवेक्षण प्रक्रिया समय-समय पर जांच करेगी कि यदि नौकरी किसी कंसोल आउटपुट उत्पन्न नहीं करती है तो कार्यकर्ता अभी भी हर 30 सेकंड जीवित है। यदि कोई कार्यकर्ता अब तक पहुंच योग्य नहीं है, तो यह नष्ट हो जाता है और गर्भपात की नौकरी को दूसरे कार्यकर्ता द्वारा निष्पादन के लिए नौकरी के कतार में वापस रखा जाता है।
-
कार्यकर्ता सफाई
जब इनपुट में कोई नौकरी कमांड नहीं छोड़ा जाता है तो क्यु को एक कार्यकर्ता प्रदान करने के लिए इसे पोस्ट कमांड चलाने से साफ किया जाता है, अधिकृत से अस्थायी सत्र कुंजी को हटा दिया जाता है। चाबियाँ।
यदि क्लाउडटास्क ने कार्यकर्ता को लॉन्च किया है, तो यह भी इस बिंदु पर वृद्धिशील उपयोग शुल्क को रोकने के लिए नष्ट हो जाएगा।
-
सत्र रिपोर्टिंग
एक रिपोर्टिंग हुक को कॉन्फ़िगर किया जा सकता है कि एक बार सत्र को निष्पादित करने के बाद एक कार्रवाई करता है। 3 प्रकार के रिपोर्टिंग हुक समर्थित हैं:
-
मेल: /usr/sbin/sendmail का उपयोग एक सरल अ एन्क्रिप्टेड ई-मेल भेजने के लिए किया जाता है जिसमें सत्र लॉग इन होता है।
-
sh: एक खोल आदेश को निष्पादित करता है, जिसमें पर्यावरण में एम्बेडेड कार्य विन्यास और वर्तमान कार्य निर्देशिका सत्र पथ पर सेट होती है। आप इस तरह के निष्पादन संदर्भ का परीक्षण कर सकते हैं:
--report='sh: env && pwd' -
Py: स्थानीय चर के रूप में सेट सत्र मूल्यों के साथ एक पायथन कोड स्निपेट को निष्पादित करता है। आप इस तरह के निष्पादन संदर्भ का परीक्षण कर सकते हैं:
--report='py: import pprint; pprint.pprint(locals())'
-