मैं AWS ऑटो स्केलिंग समूह में स्वचालित रूप से एक नई छवि कैसे बना सकता हूं?


21

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

क्या छवियों को स्वचालित रूप से चक्रित करने का एक तरीका है? अभी मैं एक स्केल अप शेड्यूल करता हूं और एक्शन डाउन करता हूं जो पुराने उदाहरणों से छुटकारा दिलाता है।


2
यह संभवतः अधिक कुशल है, यदि आप अपना नया लॉन्च कॉन्फ़िगर बनाते हैं और अपने ऑटोसालिंग समूह को अपडेट करते हैं, तो आप प्रत्येक इंस्टेंस को अस्वास्थ्यकर (उदाहरण का उपयोग करते हुए as-set-instance-health) के रूप में चिह्नित करते हैं , ताकि ऑटोसालिंग बस इसे एक नए इंस्टेंस के साथ बदल दे।
साइबरबरी

जवाबों:


10

मैं यह करने के लिए "AWS-HA-Release" का सुझाव देना चाहता हूं - AWS-HA-Release काम करता है:

  1. यदि वर्तमान ऑटोसैसलिंग समूह और ईएलबी 5 उदाहरणों की रिपोर्ट करते हैं जो स्वस्थ हैं,
  2. एडब्ल्यूएस-एचए-रिलीज़ उत्पादन में एक नया उदाहरण लाता है और ईएलबी के स्वस्थ होने के लिए इसकी प्रतीक्षा करता है (स्वस्थ उदाहरणों की कुल संख्या 6 पर लाएं)
  3. एक पुराना उदाहरण निकालता है (कुल नीचे 5)
  4. सेवा में एक और उदाहरण लाता है (कुल 6)
  5. एक पुराना उदाहरण निकालता है (कुल नीचे 5)
  6. और इसी तरह जब तक सभी उदाहरणों को प्रतिस्थापित नहीं किया गया है

इस स्थिति में, आप डाउनटाइम के बिना नए कोड या नए एएमआई संस्करणों को शिप कर सकते हैं और पूरी तरह से नए उदाहरणों का लाभ उठा सकते हैं। AWS-HA- रिलीज़ टूल https://github.com/colinbjohnson/aws-missing-tools पर उपलब्ध है ।


9

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

आप एडब्ल्यूएस सीएलआई मापदंडों और उदाहरणों को यहां देख सकते हैं: http://docs.aws.amazon.com/cli/latest/reference/autoscaling/update-auto-scaling-group.html


चीयर्स, यह एक सुपर सुविधाजनक, परेशानी मुक्त विधि है।
इलाद नवा

1
यह हमेशा एडब्ल्यूएस डॉक्स के अनुसार काम नहीं करेगा, यहां तक ​​कि एक कस्टम टर्मिनेशन पॉलिसी का चयन करते समय एएसजी टर्मिनेशन पॉलिसी को लागू करने से पहले AZ के संतुलित रखेगा। तो आकार को दोगुना और आधा करना आपको कुछ पुराने उदाहरणों के साथ छोड़ सकता है। कई उदाहरण प्रकार और खरीद विकल्पों के साथ एएसजी का उपयोग करते समय यह विशेष रूप से संभावना है, क्योंकि एएसजी 'ओल्डेस्टइन्स्टेंस' नीति लागू करने से पहले एएजी के संतुलित और बाजार विकल्प (स्पॉट बनाम मांग पर) संतुलित रखेगा: docs.aws.amod.com / ऑटोस्केलिंग / एक् 2 / यूजरगाइड /…
शहाद

6

जिस तरह से मैं इस परिदृश्य को प्रबंधित करता हूं वह एडब्ल्यूएस की अपडेटपॉलिशियल सुविधा का उपयोग करने के लिए है :: ऑटोसेक्लिंग :: ऑटोसेक्लिंगग्रुप ऑब्जेक्ट क्लाउड फॉर्मेशन में। जब बादल गठन स्टैक अपडेट किया जाता है तो यह इंस्टेंस के साइकल को प्रबंधित करेगा।

कुछ संदर्भ। http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html http://docs.aws.amazon.com/AWSCloudFormation/batest/UserGuide/aws-attribute-updatepolicy .html


धन्यवाद a tonne @graeme मुझे नहीं पता था कि Cloudform ने इस कार्यक्षमता की पेशकश की थी।
एजेबी

ठीक वही जो मेरे द्वारा खोजा जा रहा था। हम जेनकिन्स के माध्यम से अपने ढेर तैनात करते हैं क्योंकि एडब्ल्यूएस कंसोल के माध्यम से परिवर्तन बंद हो जाते हैं।
ग्रेग बील्स

3

इसके अलावा Netflix Asgard टूल पर एक नज़र डालें जो अब खुला स्रोत है। न केवल यह ऑटो स्केलिंग समूह स्थापित कर सकता है, यह उदाहरणों के समूह के लिए नई एएमआई छवियों के रोलिंग रिलीज भी कर सकता है।


आपका मतलब है "नेटफ्लिक्स


0

वहाँ वास्तव में यह ईमानदार होने का एक अच्छा तरीका नहीं है। मुझे यह करने का सबसे अच्छा तरीका एएसजी नाम में एक संस्करण डालना है। जब भी मैं एएमआई अपडेट करता हूं तो मैं नए संस्करण के साथ एक नया एएसजी + लॉन्च कॉन्फ़िगरेशन बनाता हूं ताकि यह दूसरे समूह के साथ संघर्ष न करे। फिर मैं पुराने समूह में सभी उदाहरणों को समाप्त करता हूं।

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


0

जैसा कि मैंने यहां पोस्ट किया है (इसी तरह का प्रश्न, बस टेराफॉर्म के साथ), यह एएसजी में किसी भी तरह से नहीं बनाया गया है, सिवाय इसके कि अगर आप क्लाउडफॉर्म का उपयोग करते हैं। मैंने इसके साथ संघर्ष किया, इसलिए एक "रोलर" लिखना समाप्त किया, जो कई एएसजी देखता है, उनके राज्य और अपडेट की जांच करता है। हमेशा प्रतिक्रिया लेने के लिए खुश। http://github.com/deitch/aws-asg-roller

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.