2012-07-23 18 views
51

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

क्या कुछ ऐसी सेवा है जो अमेज़ॅन (एडब्लूएस) ऑफर करता है जो अनुसूचित अंतराल पर एक पुनर्विक्रय नौकरी (वास्तव में एक webservice कॉल) चला सकता है? मैं वास्तव में समय/दिन विनिर्देश के संदर्भ में क्रॉन कार्यक्षमता को रखने में सक्षम होना चाहता हूं, लेकिन चालक के एचए को बाहर निकालना (चीज जो सही समय पर एंडपॉइंट्स को कॉल करती है) एडब्ल्यूएस को।

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

उत्तर

53

एडब्ल्यूएस announced लैम्बडा में अपने 2015 पुन: इन्वेंट सम्मेलन में अनुसूचित कार्यों के लिए समर्थन। इस सुविधा के साथ उपयोगकर्ता क्रोन-जैसी वाक्यविन्यास का उपयोग करके निर्धारित समय पर लैम्ब्डा फ़ंक्शंस निष्पादित कर सकते हैं। अनुसूचित घटनाओं को करने के लिए पायथन का उपयोग करने के Lambda docs show an example। फरवरी 2016 तक लैम्ब्डा कार्य वीपीसी के भीतर संसाधनों तक पहुंच सकते हैं।

वर्तमान में, न्यूनतम संकल्प जो एक निर्धारित लैम्ब्डा चला सकता है वह 1 मिनट (क्रॉन के समान है, लेकिन व्यवस्थित टाइमर के रूप में ठीक नहीं है)।

Lambder परियोजना लैम्ब्डा पर अनुसूचित कार्यों के उपयोग को सरल बनाने में मदद करती है।

λ Gordon's cron example शायद निर्धारित लैम्ब्डा कार्यों को तैनात करने के लिए सबसे सरल इंटरफ़ेस है।


मूल उत्तर, वंशावली के लिए सहेजा गया।

जैसे एरिक हैमंड और अन्य ने कहा है, निर्धारित कार्यों के लिए कोई मूल एडब्ल्यूएस सेवा नहीं है। जैसा कि अन्य उत्तरों में वर्णित केवल कामकाज और आधे समाधान हैं।

मौजूदा विकल्पों सारांश यह है:

  • एकल उदाहरण लपेटकर समूह है कि शुरू होता है और एक समय पर बंद हो जाता है, के रूप में एरिक हैमंड द्वारा वर्णित।
  • Using a Simple Workflow Service timer, जो कि सभी सहज नहीं है। यह case study उल्लेख करता है कि जेपीएल ने एक वितरित क्रॉन बनाने के लिए एसडब्ल्यूएफ का इस्तेमाल किया, लेकिन कोई कार्यान्वयन विवरण नहीं है। एसडब्ल्यूएफ कोड नमूने में दफन किए गए code example का संदर्भ भी है।
  • cronlock जैसे कुछ का उपयोग करके इसे स्वयं चलाएं।
  • शेड्यूल पर लैम्ब्डा फ़ंक्शन चलाने के लिए Unreliable Town Clock (UTC) जैसे कुछ का उपयोग करें। याद रखें कि लैम्ब्डा वर्तमान में वीपीसी

के भीतर संसाधनों तक पहुंच नहीं सकता है उम्मीद है कि जल्द ही एक बेहतर समाधान आएगा।

+0

अद्यतन विवरण प्रदान करने के लिए धन्यवाद। उम्मीद है कि अमेज़ॅन एक नई सेवा पर काम कर रही है जो भविष्य में इस समस्या को हल करेगी। – thatidiotguy

+2

@ थैटिडियोटुय अगर आपको घोषणा नहीं दिखाई दे रही है, तो एडब्ल्यूएस लैम्ब्डा अब इस अंतर को संबोधित करता है। जवाब तदनुसार अद्यतन किया गया। –

+2

लैम्ब्डा को काम नहीं करने की ज़रूरत है, अगर आपने एक एसक्यूएस बनाने के लिए लैम्ब्डा का इस्तेमाल किया जो आपके सर्वरों में से एक पर नौकरी ट्रिगर कर सकता है, तो आप वीपीसी में लैम्ब्डा चलाने में सक्षम नहीं होने के मुद्दे को प्राप्त कर सकते हैं। – ThomasRedstone

7

क्या कुछ ऐसी सेवा है जो अमेज़ॅन (एडब्लूएस) ऑफर करता है जो अनुसूचित अंतराल पर एक पुनर्विक्रय नौकरी चला सकता है?

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

एडब्ल्यूएस ऑटो स्केलिंग क्रॉन प्रारूप में निर्दिष्ट आवर्ती अनुसूची का उपयोग करके उदाहरण चला सकता है और समाप्त कर सकता है।

http://docs.amazonwebservices.com/AutoScaling/latest/APIReference/API_PutScheduledUpdateGroupAction.html

आप उदाहरण के लिए स्वचालित रूप से स्टार्टअप पर एक प्रक्रिया चला सकते हैं।

यदि आपको नहीं पता कि नौकरी कब तक चली जाएगी, तो आप चीजों को सेट कर सकते हैं ताकि आपका काम पूरा होने पर इंस्टेंस को समाप्त कर सके।

यहाँ एक लेख मैंने लिखा है कि इस की स्थापना के लिए आवश्यक सटीक आदेशों के माध्यम से चलता है है: एक पूरी उदाहरण शुरू ऑटो स्केलिंग
http://alestic.com/2011/11/ec2-schedule-instance

साथ नियमित शेड्यूल पर

चल रहा है EC2 उदाहरण सिर्फ नौकरियों का एक सेट बंद करने के लिए थोड़ा अधिक लगता है, लेकिन अगर यह एक t1.micro है, तो यह केवल कुछ पैसा खर्च करता है।

कि t1.micro को वास्तविक कार्य करने की आवश्यकता नहीं है। आपका उदाहरण एसक्यूएस में या एसएनएस के माध्यम से संदेशों को इंजेक्ट कर सकता है ताकि अन्य अनावश्यक सर्वर कार्य उठा सकें।

+0

यह एक क्रॉन के लिए काम करेगा। लेकिन जब आप अलग-अलग अंतराल पर चलने के लिए ऐसी कई नौकरियां करते हैं तो यह जटिलता और लागत को जोड़ देगा। – Wasif

+0

हाँ मैं एरिक से सहमत हूं। यह एडब्ल्यूएस के साथ चलने वाली सबसे आम समस्याओं में से एक है, उनके पास बहुत अच्छी सेवाएं हैं लेकिन यह एक चीज है जो वास्तव में एडब्ल्यूएस में कमी है। यह कहना नहीं है कि किसी भी अन्य क्लाउड प्रदाता बेहतर विकल्प प्रदान करते हैं। – bwight

+0

हाँ मैंने कुछ ऐसा करने का विचार किया है, लेकिन यह उतना मजबूत नहीं है जितना मुझे चाहिए/चाहता हूं। उत्सुक, क्या आप एडब्ल्यूएस पावर उपयोगकर्ता एक सॉफ्टवेयर के लिए भुगतान करने के इच्छुक हैं जो इस समस्या को हल करता है? मुझे पता है कि मैं कुछ ऐसा कर सकता था जिसमें कुछ अतिरिक्त विशिष्ट विशिष्ट एकीकरण था, बस सोच रहा था कि क्या समय/$ में निवेश के लायक है।मैं सोच रहा था कि मूल्य निर्धारण/बस मॉडल pingdom.com – rynop

3

ऐसा लगता है कि यह आप के लिए उपयोगी हो सकता है: http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-using-task-runner.html

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

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

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

  • कार्य धावक के बजाय एक कस्टम कार्य एजेंट का विकास और स्थापित करें। ऐसा करने के लिए प्रक्रियाएं कस्टम कार्य एजेंट के कार्यान्वयन पर निर्भर करती हैं।

+0

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

-1

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

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

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

दूसरे शब्दों में: ईएलबी पिंग्स अपने EC2 उदाहरण ... लंबित नौकरियों के लिए EC2 उदाहरण चेक और यदि कोई हो पाए जाते हैं एसएनएस को संदेश भेजता है ... एसएनएस के माध्यम से HTTP ... HTTP अपने अनुप्रयोग को सूचित करता है एसएनएस से कॉल क्या वास्तव में क्रॉन जॉब

+4

मशीन पर क्रॉन, क्रोनोस या क्वार्ट्ज को बस सेट करना आसान होगा। – eSniff

+1

हाँ, अच्छा बिंदु। चाहे ईएलबी या क्रॉन नियमित रूप से गोलीबारी कर रहा हो, अप्रासंगिक है। आप सही हे। मेरे जवाब का रास्ता एक समाधान बहुत जटिल है। :-) –

0

ऐसा लगता है कि इस एडब्ल्यूएस बीनस्टॉक से एक अपेक्षाकृत नया विकल्प है:

https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features-managing-env-tiers.html#worker-periodictasks

असल में, वे नियमित SQS रिसीवर की तरह काम करते हैं, लेकिन वे एक क्रोन शेड्यूल पर बजाय एक SQS के जवाब में कहा जाता है संदेश।

0

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

http://milindparikh.blogspot.com/2015/07/introducing-diksha-aws-lambda-function.html एसडब्ल्यूएफ के खिलाफ लिखा गया एक स्केलेबल शेड्यूलर है।

3

अमेज़ॅन ने पिछले साल लम्बेडा को नोडजेएस के लिए शुरू किया है, yesterday अमेज़ॅन ने अनुसूचित कार्य, वीपीसी समर्थन, और पायथन समर्थन सुविधाओं को जोड़ा।

अनुसूचित कार्य का लाभ उठाकर - सीआरओएन के लिए उचित प्रतिस्थापन प्राप्त किया जा सकता है।

अधिक जानकारी - http://aws.amazon.com/lambda/details/

enter image description here

+0

इसके लिए धन्यवाद, अनुसूचित कार्यों का उपयोग करने के लिए कोई नकारात्मक पक्ष है? –

+0

अनुसूचित कार्य? @AdegokeObasa क्या आप कृपया विस्तृत कर सकते हैं कि अनुसूचित कार्यों से आपका क्या मतलब है? –

+0

क्षमा करें मेरा मतलब अनुसूचित घटनाक्रम –

7

परिचय Events in AWS Cloudwatch

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

मैंने बस अपने एएसपीनेट वेब एपीआई (HTTP पोस्ट) को एसएनएस HTTP एंडपॉइंट का उपयोग करके हर मिनट निष्पादित करने के लिए निर्धारित किया है और यह पूरी तरह से काम कर रहा है।

enter image description here

+0

यह लैम्ब्डा फ़ंक्शन का आह्वान करने के लिए बहुत अच्छा लगता है। – Athar

+0

@ अदर हां, यह है। मैं इसे अपने उत्पादन में https://www.agenty.com पर उपयोग कर रहा हूं – Vicky