बेहतर या बदतर के लिए, हमने अपने संपूर्ण LAMP वेब एप्लिकेशन को समर्पित मशीनों से क्लाउड (Amazon EC2 मशीनों) पर माइग्रेट कर दिया है । यह अब तक बहुत अच्छा है लेकिन जिस तरह से हम क्रोन करते हैं वह उप-इष्टतम है। मेरे पास अमेज़ॅन-विशिष्ट प्रश्न है कि "अमेज़ॅन के रास्ते" का उपयोग करके क्लाउड में क्रोन नौकरियों का सर्वोत्तम प्रबंधन कैसे किया जाए।
समस्या : हमारे पास कई वेबसर्वर हैं, और बैच नौकरियों के लिए क्रोन चलाने की जरूरत है जैसे कि आरएसएस फीड्स बनाना, ईमेल ट्रिगर करना, वास्तव में कई अलग-अलग चीजें। लेकिन क्रोन जॉब्स को केवल एक मशीन पर चलने की आवश्यकता है क्योंकि वे अक्सर डेटाबेस में लिखते हैं इसलिए यदि कई मशीनों पर चलाया जाता है तो वे परिणाम को दोहराएंगे।
अब तक, हमने एक वेबसर्वर को "मास्टर-वेबसर्वर" के रूप में नामित किया है और इसमें कुछ "विशेष" कार्य हैं जो अन्य वेबसर्वर के पास नहीं हैं। क्लाउड कंप्यूटिंग के लिए व्यापार बंद विश्वसनीयता है - हम "मास्टर-वेबसर्वर" नहीं चाहते हैं क्योंकि यह विफलता का एक बिंदु है। हम चाहते हैं कि वे सभी समान हों और मास्टर-वेबसर्वर को क्लस्टर से बाहर न निकालने के लिए याद किए बिना उतार-चढ़ाव में सक्षम हों।
हम लिनक्स क्रोन नौकरियों को क्षणभंगुर कार्य वस्तुओं में परिवर्तित करने के लिए अपने आवेदन को कैसे नया कर सकते हैं जिसमें विफलता का एक भी बिंदु नहीं है?
मेरे विचार अब तक:
- एक मशीन है जो केवल चल रहे क्रोन को समर्पित है। यह थोड़ा अधिक प्रबंधनीय होगा, लेकिन अभी भी एक एकल-बिंदु-विफलता होगी, और कुछ पैसे बर्बाद कर देगा एक अतिरिक्त उदाहरण।
- कुछ कामों को निश्चित रूप से लिनक्स क्रोन से MySQL ईवेंट में ले जाया जा सकता है लेकिन मैं इस विचार का बहुत बड़ा प्रशंसक नहीं हूं क्योंकि मैं डेटाबेस लेयर में एप्लिकेशन लॉजिक नहीं डालना चाहता।
- शायद हम सभी मशीनों पर सभी क्रोन चला सकते हैं लेकिन हमारी क्रोन लिपियों को बदल सकते हैं, इसलिए वे सभी तर्क के साथ शुरू करते हैं जो एक लॉकिंग तंत्र को लागू करता है इसलिए केवल एक सर्वर वास्तव में कार्रवाई करता है और अन्य सिर्फ छोड़ देते हैं। मैं इस विचार का प्रशंसक नहीं हूं क्योंकि यह संभावित रूप से छोटी गाड़ी लगती है और मैं अपने रोल को करने के बजाय अमेज़ॅन के सर्वोत्तम अभ्यास का उपयोग करना पसंद करूंगा।
- मैं ऐसी स्थिति की कल्पना कर रहा हूं जहां नौकरियां कहीं निर्धारित हों, एक कतार में जोड़ा जाए और फिर वेबसर्वर प्रत्येक एक कार्यकर्ता हो सकते हैं, जो कह सकते हैं "अरे, मैं इसे ले जाऊंगा"। अमेज़ॅन सिंपल वर्कफ़्लो सर्विस वास्तव में इस तरह की बात लगती है, लेकिन मुझे वर्तमान में इसके बारे में ज्यादा जानकारी नहीं है, इसलिए कोई भी विवरण सहायक होगा। यह एक क्रोन के रूप में कुछ के लिए भारी वजन की तरह लगता है? क्या यह सही सेवा है या अधिक उपयुक्त अमेज़न सेवा है?
अद्यतन: प्रश्न पूछने के बाद से मैंने YouTube पर अमेज़ॅन सिंपल वर्कफ़्लो सर्विस वेबिनार देखा है और 34:40 पर देखा है ( http://www.youtube.com/watch?v=lBUQiek8Jqk#t=34m40s ) मैंने एक झलक देखी एक नमूना आवेदन के रूप में क्रोन नौकरियों का उल्लेख स्लाइड। अपने प्रलेखन पृष्ठ में, " एडब्ल्यूएस फ्लो फ्रेमवर्क सैंपल्स फॉर अमेज़ॅन एसडब्ल्यूएफ ", अमेज़ॅन का कहना है कि उनके पास क्रोन के लिए नमूना कोड है:
... > क्रोन नौकरियां इस नमूने में, एक लंबे समय तक चलने वाला वर्कफ़्लो समय-समय पर एक गतिविधि को निष्पादित करता है। नए निष्पादन के रूप में निष्पादन जारी रखने की क्षमता ताकि निष्पादन बहुत विस्तारित अवधि के लिए चल सके। ...
मैंने जावा ( http://aws.amazon.com/sdkforjava/ ) के लिए AWS SDK डाउनलोड किया और निश्चित रूप से फ़ोल्डरों की हास्यास्पद परतों के भीतर पर्याप्त दफन है कुछ जावा कोड ( aws-java-sdk-1.3.6/samples/AwsFlowFramework/src/com/amazonaws/services/simpleworkflow/flow/examples/periodicworkflow
) है।
समस्या यह है, अगर मैं ईमानदार हूं, तो यह वास्तव में मदद नहीं करता है क्योंकि यह ऐसा कुछ नहीं है जिसे मैं अपने कौशल के साथ आसानी से पचा सकता हूं। पीएचपी एसडीके से एक ही नमूना गायब है और इस प्रक्रिया के बावजूद चलने वाला एक ट्यूटोरियल नहीं लगता है। इसलिए मूल रूप से, मैं अभी भी सलाह या सुझावों के लिए शिकार कर रहा हूं।