26

Elastic Beanstalk की मेरी समझ यह है कि जब आप अपने ऐप का एक नया संस्करण तैनात करते हैं, तो यह इसे एक समय में Amazon EC2 उदाहरणों में तैनात करता है (यदि आपके पास एक से अधिक हैं)। हालांकि, यहां तक ​​कि कम से कम दो उदाहरणों के साथ, जब मैं इसे तैनात कर रहा हूं, तो एक नया .war अपलोड करते समय मेरा एप्लिकेशन डाउनटाइम की थोड़ी सी मात्रा में पड़ता है, जैसे कि यह उन्हें दोनों को एक साथ अपडेट कर रहा है। क्या कोई तरीका है कि मैं सुनिश्चित कर सकता हूं कि कोई डाउनटाइम नहीं है और यह एक उदाहरण पूरी तरह से अपडेट हो गया है और अगली शुरूआत से पहले अनुरोध स्वीकार कर रहा है: यहां बताया गया है कि ईवेंट कैसा दिखता है। ध्यान दें कि यह ऐप पर शून्य लोड के साथ है, इसलिए यह केवल उत्पादन यातायात के साथ बदतर हो जाएगा।एडब्ल्यूएस लोचदार बीनस्टॉक एप के नए संस्करण की तैनाती के दौरान डाउनटाइम को कैसे रोकें?

INFO 
Environment update completed successfully. 

INFO 
New application version was deployed to running EC2 instances. 

ERROR 
The application did not respond at the health check URL. 

INFO 
Waiting for 8 seconds while EC2 instances download the updated application version. 

INFO 
Deploying version SomethingMore to 2 instance(s). 

उत्तर

19

Elastic Beanstalk में इस लक्ष्य को प्राप्त करने के लिए, आप एक से अधिक वातावरण की सुविधा के लिए (AWS Elastic Beanstalk Components देखें) अपने तैनाती प्रक्रिया का विस्तार करने की आवश्यकता होगी:

एक ऐसा वातावरण एक संस्करण है कि एडब्ल्यूएस पर तैनात किया जाता है है संसाधनों। प्रत्येक पर्यावरण केवल एक संस्करण चलाता है, हालांकि आप एक ही समय में पर कई वातावरण में संस्करण या विभिन्न संस्करण चला सकते हैं। [...] पर्यावरण और संसाधनों के बारे में अधिक जानकारी जो बनाई गई हैं, Architectural Overview देखें। [जोर मेरा]

यह सुविधा अलग-अलग संस्करण पहले से ही परीक्षण/डीबगिंग के लिए उपयोगी है, लेकिन विशेष रूप से इस वातावरण के गर्म गमागमन के साथ-साथ सक्षम बनाता है, एक संबंधित जानकारी के लिए, Deploying Versions With Zero Downtime देखें:

एडब्ल्यूएस के बाद से लोचदार बीनस्टॉक एक इन-प्लेस अपडेट करता है जब आप अपने एप्लिकेशन संस्करणों को अपडेट करते हैं, तो आपको कुछ डाउनटाइम का अनुभव होगा। हालांकि, अपने वातावरण के लिए CNAMEs को स्वैप करके इस डाउनटाइम से बचना संभव है। यह अनुभाग आपको AWS प्रबंधन कंसोल, कमांड लाइन इंटरफ़ेस या API का उपयोग करके CNAME स्वैप करने के तरीके के माध्यम से चलता है। [जोर मेरा]

+0

धन्यवाद, पर्यावरण सीएनएन स्वैपिंग वही है जो मैं ढूंढ रहा था। – Peter

+6

मैंने अपने उत्पादन ऐप पर यह कोशिश की और देखा कि सीएनएन को स्वैप करने और DNS टीटीएल की अवधि समाप्त होने के बाद भी, यातायात का एक बड़ा हिस्सा पुराने बीनस्टॉक पर्यावरण में जा रहा था। मुझे संदेह है कि ऐसा इसलिए है क्योंकि ग्राहक DNS कैश पर लंबे समय तक पकड़ रहे हैं। यदि टीटीएल का पालन करने के लिए ग्राहकों पर भरोसा नहीं किया जा सकता है, तो यह सीएनएन-स्वैपिंग तकनीक बीनस्टॉक के साथ जेडडीडी तैनाती करने का एक विश्वसनीय तरीका प्रतीत नहीं होता है। –

+0

@AaronIba यह एक बहुत अच्छा अवलोकन है। क्या आप कुछ वैकल्पिक तरीके से आए थे?मैं बस मौजूदा एप्लिकेशन संस्करण को ओवरराइट करने और मौजूदा उदाहरणों को मैन्युअल रूप से बंद करने की सोच रहा हूं (एएसजी को नए लोगों को रैंप करना चाहिए और अपडेट किए गए एप्लिकेशन संस्करण को खींचना चाहिए)। लेकिन यह मैन्युअल/धीमी/बोझिल प्रक्रिया है और एक हैक की तरह लगता है। –

6

मैं जानता हूँ कि यह एक पुराने सवाल है, लेकिन लोगों को (मेरे जैसे) googling के लिए, लचीला बीनस्टॉक रोलिंग आवेदन संस्करण की तैनाती आज (2014/11/02) का विमोचन किया।

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.rolling-version-deploy.html?sc_ichannel=em&sc_icountry=global&sc_icampaigntype=launch&sc_icampaign=em_125873140&sc_idetail=em_14124901705&ref_=pe_411040_125873140_8

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

+0

क्या यह केवल काम करता है यदि आप लोड बैलेंसर के पीछे कई उदाहरण चला रहे हैं? इसका वर्णन कैसे किया गया है, ऐसा लगता है कि एक ही उदाहरण अभी भी नीचे जायेगा। –

+1

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

+0

उपरोक्त कथन बस सच नहीं है। मैंने nginx के साथ एक मेजबान पर शून्य डाउनटाइम तैनाती की है। (लोचदार beanstalk पर नहीं।) –