2014-04-14 11 views
18

का उपयोग कर निरंतर तैनाती और एडब्ल्यूएस ऑटोस्केलिंग मेरा संगठन की वेबसाइट एक डीजेगो ऐप है जो फ्रंट एंड वेबसर्वर पर चल रही है + एडब्ल्यूएस में कुछ पृष्ठभूमि प्रोसेसिंग सर्वर।उत्तरदायी (+ डॉकर?)

वर्तमान में हम दोनों के लिए Ansible का उपयोग कर रहे हैं: (क नंगे ओएस छवि से)

  • सिस्टम विन्यास
  • अक्सर मैन्युअल रूप से शुरू हो रहा कोड की तैनाती।

ही Ansible प्लेबुक प्रावधान करने में सक्षम है या तो एक स्थानीय Vagrant देव वी एम, या खरोंच से एक उत्पादन EC2 उदाहरण।

अब हम ईसी 2 में ऑटोस्कलिंग को कार्यान्वित करना चाहते हैं, और इसके लिए "treat servers as cattle, not pets" दर्शन के लिए कुछ बदलावों की आवश्यकता है।

पहली शर्त एक गतिशील, ईसी 2 एपीआई-आधारित एक करने के लिए एक स्थिर रूप से प्रबंधित उत्तरदायी सूची से स्थानांतरित करना था।

अगला बड़ा सवाल यह है कि इस नई दुनिया में तैनाती कैसे करें जहां रात के मध्य में & फेंकने वाले उदाहरण सामने आते हैं। विकल्प के बारे में सोच सकते हैं:

  1. गरम एक नई पूरी तरह से तैनात एएमआई प्रत्येक तैनात, लॉन्च config के रूप में एक नया बना सकते हैं और उस के साथ के रूप में समूह अपडेट के लिए। साफ स्लेट दृष्टिकोण के कारण बहुत बोझिल, लेकिन बहुत विश्वसनीय लगता है, और यह सुनिश्चित करेगा कि किसी भी सिस्टम में कोड की आवश्यकता होती है, यहां आवश्यक होगा। इसके अलावा, उदाहरण बूटअप पर कोई अतिरिक्त कदम जरूरी नहीं है, इसलिए & अधिक तेज़ी से चल रहा है।
  2. आधार एएमआई का उपयोग करें जो अक्सर नहीं बदलता है, स्वचालित रूप से बूटअप पर गिट से नवीनतम ऐप कोड प्राप्त करता है, वेबसर्वर शुरू करता है। एक बार यह हो जाने के बाद बस आवश्यकतानुसार मैन्युअल तैनाती करें। लेकिन क्या होगा यदि नया कोड सिस्टम कॉन्फ़िगरेशन (नया पैकेज, अनुमतियां इत्यादि) में बदलाव पर निर्भर करता है? ऐसा लगता है कि आपको कोड संस्करणों और सिस्टम/एएमआई संस्करणों के बीच निर्भरताओं का ख्याल रखना शुरू करना है, जबकि "केवल एक पूर्ण उत्तरदायी रन" दृष्टिकोण अधिक एकीकृत और अधिक विश्वसनीय था। क्या यह अभ्यास में केवल एक संभावित सिरदर्द से अधिक है?
  3. डॉकर का उपयोग करें? मेरे पास एक मजबूत झटका है जो उपयोगी हो सकता है, लेकिन मुझे यकीन नहीं है कि यह हमारी तस्वीर कैसे फिट होगा। हम एक अपेक्षाकृत स्वयं निहित Django फ्रंट-एंड ऐप हैं जो केवल RabbitMQ + memcache सेवाओं के रूप में हैं, जिन्हें हम वही होस्ट पर कभी भी चलाने के लिए नहीं जा रहे हैं। तो उत्तरदायी का उपयोग करके डॉकर छवि बनाने में क्या फायदे हैं जिसमें सिस्टम पैकेज + नवीनतम कोड है, जवाब देने के बजाय इसे सीधे ईसी 2 इंस्टेंस पर करें?

आप यह कैसे करते हैं? कोई अंतर्दृष्टि/सर्वोत्तम प्रथाओं? धन्यवाद!

उत्तर

9

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

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

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

मेरे दो सेंट।

1

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

0

आप ऑटो स्केलिंग और अपने बिल्ड सर्वर के साथ एडब्ल्यूएस कोड डिप्लॉय का भी उपयोग कर सकते हैं। हम जेनकींस के लिए CodeDeploy प्लगइन का उपयोग करते हैं।

  1. सभी EC2s एक के बाद एक जो सौंपा एडब्ल्यूएस ऑटो स्केलिंग समूह का हिस्सा हैं को तैनात
  2. अपलोड S3 बाल्टी
  3. को जेनकींस में अपने निर्माण करते हैं:

    इस सेटअप करने की अनुमति देता ।

यह सब एक बटन के धक्का के साथ!

यहां एडब्लूएस ट्यूटोरियल है: Deploy an Application to an Auto Scaling Group Using AWS CodeDeploy