स्पॉट और ऑन-डिमांड इंस्टेंस के साथ EC2 ऑटो-स्केलिंग?


13

मैं अपने ऑटो-स्केलिंग EC2 समूहों की लागत को ऑप्टिमाइज़ करना चाहता हूं ताकि ऑन-डिमांड इंस्टेंस के बजाय उन्हें स्पॉट इंस्टेंस लॉन्च किया जा सके।

मैं वास्तव में चाहता हूं कि समूह में कुछ सर्वरों को ऑन-डिमांड इंस्टेंस के रूप में रखने में सक्षम हो, चाहे स्पॉट इंस प्राइसिंग मार्केट में क्या हो। फिर मैं समूह में कोई भी अतिरिक्त सर्वर चाहता हूं, मेरे कॉन्फ़िगर न्यूनतम से ऊपर, स्पॉट इंस्टेंसेस होने के लिए। मैं स्पॉट अनुरोधों के माध्यम से सर्वर जोड़ने में देरी के साथ आम तौर पर ठीक हूं।

मुझे ऐसा करने का कोई तरीका नहीं मिल रहा है और मैंने AWS डॉक्यूमेंटेशन को खंगालने की कोशिश की है। ऐसा प्रतीत होता है कि एक ASG ऑन-डिमांड या स्पॉट हो सकता है, लेकिन हाइब्रिड नहीं।

मैं संभवतः ऑटो-स्केलिंग समूह को सौंपे गए इलास्टिक लोड बैलेंसर पर मैन्युअल रूप से ऑन-डिमांड उदाहरण जोड़ सकता हूं, लेकिन फिर उस सर्वर के लोड को ऑटो-स्केलिंग मापों और ट्रिगर्स में विभाजित नहीं किया जाएगा।

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

AWS डॉक्यूमेंटेशन अपने आप में ही है, क्योंकि एक स्थान पर यह कहा जाता है कि यदि आप किसी सर्वर में न्यूनतम प्रवेश करते हैं, तो यह संख्या वहां होना "सुनिश्चित" है। लेकिन तब जब आप स्पॉट इंस्टेंस के बारे में पढ़ते हैं, तो कोई आश्वासन नहीं मिलता है। स्पॉट के लिए मूल्य अंतर सम्मोहक है, इसलिए मैं इसका लाभ उठाना चाहूंगा जितना कि मैं अभी भी हमेशा एक आधारभूत आधार बनाए रख सकता हूं। क्या यह संभव है?

जवाबों:


1

फिलहाल आप ondemand और हाजिर उदाहरणों को एक ही ASG में मिला सकते हैं

अमेज़ॅन EC2 ऑटो स्केलिंग अब आपको पैमाने, प्रदर्शन और लागत का अनुकूलन करने के लिए एकल ऑटो स्केलिंग समूह (ASG) में खरीद विकल्प, उपलब्धता जोन (AZ) और उदाहरण के परिवारों में स्वचालित रूप से प्रावधान और स्वचालित रूप से स्केल करने देता है। अब आप एक ही ASG में ऑन-डिमांड और RI के साथ स्पॉट इंस्टेंस को शामिल कर सकते हैं , ताकि 90% तक की बचत हो सके।


हां - इस प्रश्न को अपडेट करने के लिए धन्यवाद। मैंने आपको इसके लिए नए विहित उत्तर के रूप में चिह्नित किया है।
प्लेटफ़ॉर्म

15

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


7

यह हाइब्रिड ऑटो स्केलिंग दृष्टिकोण वास्तव में दुर्भाग्य से उपलब्ध नहीं है।

हालाँकि, आप इस सीमा के आसपास काम करने में सक्षम हो सकते हैं (अप्रकाशित, बस एक सिस्टम डिज़ाइन जो मैं थोड़ी देर के लिए चारों ओर कर रहा हूँ):

संभावित समाधान

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

यह तुरंत मदद करने के लिए प्रतीत नहीं होता है, क्योंकि आप एक समय में केवल एक लॉन्च कॉन्फ़िगरेशन को ऑटो स्केलिंग समूह में संलग्न कर सकते हैं , निम्नलिखित (आंशिक रूप से पुरानी) बाधाओं के साथ ( लॉन्च कॉन्फ़िगरेशन देखें ):

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

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

ऑटो स्केलिंग को समाप्त करने के लिए एक उदाहरण का चयन करने से पहले, यह पहले उपलब्धता जोन की पहचान करता है जिसमें समूह द्वारा उपयोग किए जाने वाले अन्य उपलब्धता क्षेत्रों की तुलना में अधिक उदाहरण हैं। यदि सभी उपलब्धता क्षेत्रों में समान संख्याएँ हैं, तो यह एक यादृच्छिक उपलब्धता क्षेत्र की पहचान करता है। पहचाने गए उपलब्धता क्षेत्र के भीतर, ऑटो स्केलिंग समाप्ति की आवृत्ति का चयन करने के लिए समाप्ति नीति का उपयोग करता है[जोर मेरा]

जैसा कि आपका टर्मिनेशन पॉलिसी कैसे काम करता है , आप अब बता सकते हैं कि आप नवीनतम लॉन्च को निर्दिष्ट कर सकते हैं , यदि आप चाहते हैं कि अंतिम लॉन्च किया गया इंस्टेंस समाप्त हो जाए , जो हाल ही में लॉन्च किए गए स्पॉट इंस्टैंस में से एक होगा:

ऑटो स्केलिंग पिछले लॉन्च किए गए इंस्टेंस को पहचानने के लिए इंस्टेंस लॉन्च समय का उपयोग करता है।

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

चेतावनी

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

सौभाग्य!


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

1

मैंने https://github.com/ashwanthkumar/matsya के साथ आने वाले उत्तरों से प्रेरणा ली

यह आपको निम्नलिखित कार्य करने में मदद करता है

  • आपको हमेशा अपने Hadoop / Mesos / YARN क्लस्टर आवश्यकताओं के लिए मशीनों के बेड़े की आवश्यकता होती है
  • आप स्पॉट का उपयोग करके पैसा बचाना चाहते हैं, लेकिन OD से कमबैक भी कर सकते हैं क्योंकि आपको अपने SLA को पूरा करने के लिए प्रोसेसिंग पावर की आवश्यकता होती है
  • फिर से पैसे बचाने के लिए OD पर एक बार स्पॉट पर वापस जाएँ।


उत्तर को अच्छे इरादों के साथ साझा किया गया था कि यह उपयोगी हो सकता है। यदि आप इसे आत्म-प्रचार के रूप में पाते हैं तो मैं उत्तर हटा सकता हूं।
अश्वत्कुमार

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

समझ में आता है। इस नीति के प्रमुखों के लिए धन्यवाद।
अश्वत्कुमार

1

यदि आप केवल 1 ASG ऑन-डिमांड इंस्टेंस की स्थिर संख्या चाहते हैं, तो निम्न कार्य करना चाहिए:

  • स्पॉट इंस्टेंस लॉन्च कॉन्फ़िगरेशन के आधार पर ऑटो स्केलिंग समूह बनाएं।

  • ASG पर ऑटो स्केलिंग निलंबित करें

  • मैन्युअल रूप से ASG में ऑन-डिमांड इंस्टेंस (स्टैटिक बेस लोड) जोड़ें और उन इंस्टेंस के लिए इंस्टेंस प्रोटेक्शन को ऑन करें।

  • एएसजी पर ऑटोसालिंग को फिर से शुरू करें

  • डिफ़ॉल्ट ऑटो स्केलिंग नीति अब ऑन-डिमांड इंस्टेंस (सुरक्षा के कारण) को अनदेखा करेगी और समूह की वांछित संख्या प्राप्त करने के लिए ऑन-डिमांड इंस्टेंस के समान स्पॉट इंस्टेंसेस को समाप्त कर देगी। कोई भी स्केल-इन या आउट गतिविधियाँ केवल स्पॉट इंस्टेंसेस लॉन्च या समाप्त करेंगी।

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