जब स्वतः एक्स्ट्रीम होस्टनाम बदल जाता है या बढ़ जाता है, तो नगनेक्स अपस्ट्रीम सर्वर सूची को स्वचालित रूप से कैसे अपडेट करें?


16

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

अमेज़ॅन में ऑटोस्कोपिंग ईसी 2 इंस्टेंस को मांग स्पाइक्स के दौरान प्रदर्शन को बनाए रखने के लिए बनाता है, और लागत को कम करने के लिए मांग की लोरी के दौरान स्वचालित रूप से घट जाती है।

चूंकि यह EC2 उदाहरण स्वचालित रूप से बनाए जाते हैं, इसलिए उनके होस्ट नाम NGINX के लिए अज्ञात हैं।

मुझे पता है और पहले से ही nginx में 10 EC2 उदाहरणों के लिए अपस्ट्रीम सेटअप है।

मैं अपने अपस्ट्रीम nginx कॉन्फ़िगरेशन में स्वचालित रूप से सर्वर नामों को जोड़ने / अपडेट / डिलीट करने में सक्षम होना चाहता हूं , जब ऑटोसालिंग EC2 इंस्टेंस को जोड़ता / अपडेट / हटाता है।


1
आपको अपने प्रश्न से "ऑटोसालिंग" को हटाने की आवश्यकता है। ऑटोकैसलिंग एक AWS शब्द है। मुझे लगता है कि आपके कहने का मतलब यह है कि आप अपने नॅगनेक्स को एलबी के रूप में कार्य करने के लिए अधिक अपस्ट्रीम नोड्स जोड़कर (क्षैतिज रूप से) स्वचालित रूप से स्केल करना चाहते हैं, और आप पूछ रहे हैं कि अपस्ट्रीम नोड्स जोड़े / हटाए जाने या संशोधित होने पर स्वचालित रूप से अपने नगीनक्स कॉन्फ़िगरेशन को कैसे संशोधित किया जाए। यदि ऐसा है, तो कृपया अपने प्रश्न को तदनुसार संपादित करें।
टेलोनक्स

ठीक है, वास्तव में, मुझे पता है कि ऑटोस्कोपिंग क्या है, और मैं यह कहना चाहता हूं। मैं दोनों को मिलाना चाहता हूं। मैं सवाल को अपडेट करूंगा।
लुइस लोबो बोरोबिया

1
सवाल अब साफ है, इसके इरादे में। मैं फिर से खोलने के लिए मतदान करना चाहता था, लेकिन मुझे कोई विकल्प दिखाई नहीं दे रहा है - लगता है कि मेरे पास अभी तक पर्याप्त प्रतिनिधि नहीं है।
टेलोंक्स

धन्यवाद @talonx मुझे आशा है कि अन्य लोग मेरे उत्तर को खोजने के लिए आगे बढ़ सकते हैं
लुइस लोबो बोरोबिया

1
मुझे लगता है कि आप AWS ऑटोसालिंग नोटिफिकेशन (SNS का उपयोग करके डिलीवर किया गया) को जोड़ सकते हैं - यह मानकर कि नए बनाए / समाप्त किए गए इंस्टेंस का होस्ट नाम लौटाया जाए - और अपने nginx कॉन्फ़िगरेशन को अपडेट करने और पुनः लोड करने के लिए तीसरे पक्ष के nginx API में से एक। अस्पष्ट होने के लिए क्षमा करें - मैं ऑटोसालिंग एपीआई से बहुत परिचित नहीं हूं।
टेलोंक्स

जवाबों:


7

यह अमेज़ॅन एसडीके (मैं लगभग इसके साथ कर रहा हूं, इसे जीथब पर डालूंगा) का उपयोग करके प्राप्त किया जा सकता है, एसएनएस, ईसी 2 और ऑटोसालिंग सेवा का उपयोग कर सकता है।

मैंने इसे प्राप्त करने के लिए निम्न चरणों का पालन किया है:

  1. HTTP सूचना सक्षम करें और मेरे वेबसर्वर की सदस्यता लें।
  2. 1 मिनट के दिल की धड़कन के साथ एक जीवनचक्र-हुक जोड़ा (समाप्त करने से पहले 1 मिनट तक प्रतीक्षा करने के लिए) समाप्ति सर्वर के लिए मेरे ऑटोसालिंग समूह में
  3. यह पता लगाने के लिए संदेश को पार्स करने के लिए कि यह किस प्रकार का संदेश है (यानी लॉन्च या समाप्त)
  4. एक बार जब इस प्रकार की घटना का निर्णय लिया जाता है, तो मैं उदाहरण के लिए निजी आईपी प्राप्त करने के लिए EC2 की पुष्टि करता हूं
  5. हेडर 200 तक लॉन्च प्रतीक्षा के मामले में राहत मिली है और फिर nginx config और पुनः लोड करने के लिए आईपी जोड़ें
  6. टर्मिनेट के मामले में IP को कॉन्फिगरेशन से हटा दें और nginx को फिर से लोड करें

कृपया स्क्रिप्ट यहां देखें https://github.com/singhupendra/aws-autoscale


कोई मौका आप इस github पर पोस्ट? मैं एक ही काम करने की कोशिश कर रहा हूं और किसी भी सहायता की सराहना की जाएगी।
एरोन

कृपया उपयोग करें - github.com/singhupendra/aws-autoscale
उपेंद्र

2

धन्यवाद @talonx, मैंने कुछ शोध किया है, अमेज़न ऑटोस्कोल ने वर्तमान ऑटोसैसलिंग समूह की स्थिति को क्वेरी करने के लिए एक एपीआई है, और इसके सदस्यों की गणना करता है। यह इंस्टेंस आईडी ( http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/api_requests.html#query-example ) देता है, फिर आप सर्वर नाम ( http: // docs) प्राप्त करने के लिए वर्णन टूल का उपयोग कर सकते हैं .aws.amazon.com / AWSEC2 / latest / CommandLineReference / ApiReference-cmd-DescribeInstances.html ) और अंत में अपस्ट्रीम को फिर से बनाना फ़ाइल शामिल हैं। मैं इन कार्यों को करने वाली एक प्रक्रिया को लॉन्च करने के लिए ऑटोस्कोलिंग सूचनाओं को समझ सकता हूं।

मैंने अभी भी इसे लागू नहीं किया है लेकिन इसका एक रास्ता है।

SNS http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/ASGettingNotifications.html के साथ ऑटोकैलिंग का भी उपयोग किया जा सकता है


यह मूल रूप से मैंने क्या किया है। मैंने एक रूबी स्क्रिप्ट लिखी जो हर N मिनट चलती है। एडब्ल्यूएस एसडीके का उपयोग करके यह एएसजी के सदस्यों के लिए पूछताछ करता है और ईआरबी टेम्पलेट का उपयोग करके यह एक नया कॉन्फ़िगरेशन उत्पन्न करता है। यदि नया कॉन्फिगर मौजूदा कॉन्फिगरेशन से अलग है, तो वह इसे कॉपी करता है और अपने कॉन्टेक्ट को फिर से लोड करने के लिए डेमन (मेरे मामले में हैप्रोक्सी) को बताता है। ध्यान दें कि उदाहरण ASG में थोड़े समय के लिए रहते हैं क्योंकि वे समाप्त हो जाते हैं इसलिए सुनिश्चित करें कि उदाहरण .status ==: चल रहा हो। यह भी ध्यान दें कि यदि अनुरोध के बाद इसे शुरू करने के लिए N मिनट लगते हैं, तो यह अनुरोध करने के लिए उपयोग नहीं किया जाता है अब इसे एकरूप में उपयोग करें> example.launch_time + N.
मार्क वैगनर

साभार @MarkWagner क्या कोई संभावना है कि आप उस स्क्रिप्ट को कहीं साझा कर सकते हैं? जीस्ट, गिथब? धन्यवाद!
लुइस लोबो बोरोबिया

क्या आपको इस लिपि से कोई वास्ता था? क्या गीथूब या अन्यत्र इसका कोई उदाहरण है?
हारून

नहीं, लेकिन अभी nginx-plus (सशुल्क संस्करण) यह अधिक अनुमति देता है।
लुइस लोबो बोरोबिया

1

मैं यह अभी तक अपने आप को लागू नहीं किया है, लेकिन मैं का उपयोग कर रहा हूँ ऑन-द-मक्खी पुनः कॉन्फ़िगर की nginx प्लस । मैं सोच रहा हूं कि या तो एएमआई, या कॉन्फ़िगरेशन प्रबंधन (कठपुतली, नमक, या ऐसा) जो एक ऑटो स्केलिंग समूह उदाहरण सेट करता है, NGINX reconfiguraiton API तक पहुंच सकता है (शायद, एक आंतरिक मार्ग 53 डोमेन के माध्यम से ताकि कोई निश्चित आईपी न हो। उपयोग करने की आवश्यकता है), और रिवर्स प्रॉक्सी के लिए अपस्ट्रीम क्लस्टर में खुद को जोड़ें। उसके बाद NGINX की अंतर्निहित स्वास्थ्य जांच फिर उस [अतिरिक्त] उदाहरण के लिए ले जाएगी, और इसे अनुपलब्ध होने की स्थिति में छोड़ देगी। यह सबसे साफ समाधान लगता है और उदाहरण को जोड़ने में कोई देरी नहीं है, और शायद ही इसे छोड़ने में कोई देरी हुई है क्योंकि NGiNX प्लस में आउट-ऑफ-बैंड स्वास्थ्य जांच की सुविधा है।

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

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

2015-12-07 संपादित करें: ngx_openresty का बैलेंसर-बाय-लुआ ( यह GitHub धागा देखें ) NGINX अपस्ट्रीम समूह से सर्वरों को जोड़ने / हटाने के लिए एक और संभव खुला स्रोत समाधान प्रदान करता है। मैंने अभी तक खुद इसके साथ प्रयोग नहीं किया है, लेकिन इस पोस्ट में ठोकर खाने वाले किसी भी व्यक्ति के लिए यहां एक उल्लेख जोड़ना चाहता हूं।

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