प्रत्येक ईसी 2 उदाहरण पर चलने वाले कई अनुप्रयोगों के साथ ईएलबी स्वास्थ्य जांच कैसे सेट करें?


11

AWS में हम कई अनुप्रयोगों की मेजबानी करने वाले शेष EC2 उदाहरणों को लोड करने के लिए ELBs का उपयोग करना चाहते हैं। आदर्श रूप से हम आवेदन के लिए स्वास्थ्य जांच करवाना चाहते हैं।

हालाँकि, वर्तमान में AWS इलास्टिक लोड बैलेंसर केवल आपको स्वास्थ्य जांच के लिए एक स्थान पर पिंग करने की अनुमति देते हैं।

ईएलबी के साथ स्वास्थ्य जांच को लागू करने का सबसे अच्छा तरीका क्या होगा जो प्रत्येक ईसी 2 उदाहरण पर तैनात कई अनुप्रयोगों की स्थिति को ध्यान में रखता है?


4
एक तरीका यह होगा कि आप अपने आवेदन के दोनों चेक के आधार पर एक स्क्रिप्ट रिटर्न की स्थिति बनाकर अपनी स्वयं की स्वास्थ्य जांच को लागू करें।
नाथन सी

1
ईएलबी एक प्रबंधित सेवा है। अपने स्वयं के स्वास्थ्य की जांच के साथ दूसरे आवेदन के लिए एक और ईएलबी बनाएं। अधिकांश लागत प्रति अनुरोध है, इसलिए यह आपको 2 ईएलबी संचालित करने के लिए लगभग समान होगा।
गाय

मुझे लगता है कि @ नथानक का जवाब सबसे अच्छा समाधान है; मेरे पास ऐसा ही मामला है जहां अगर दो में से कोई भी स्थिति विफल होती है, तो स्वास्थ्य जांच विफल होनी चाहिए। एक और ELB जोड़ने से आप एक और स्वास्थ्य जांच करवा सकते हैं, लेकिन AFAIK केवल एक ELB का उपयोग ट्रैफ़िक (या नहीं) करने के लिए किया जा सकता है
टॉम हैरिसन जूनियर

@Guy वास्तव में, यह देखते हुए कि ELB- घंटों के अनुरोधों की परवाह किए बिना शुल्क लिया जाता है, यह है कि ~ 20 USD एक महीने (क्षेत्र के आधार पर), इसलिए अधिकांश लागत प्रति अनुरोध केवल तभी है जब आप पहले से ही प्रति माह 2.5 टीबी डेटा से अधिक की सेवा करते हैं ( $ 0.008 / GB पर)
जोसिप रॉडिन

जवाबों:


10

इसे हल करने के दो तरीके यहां दिए गए हैं;

पहला विकल्प मेजबान पर एक और स्वास्थ्य जांच को जोड़ना है जो स्वास्थ्य को मान्य करता है और HTTP 200s को ELB में लौटाता है यदि तर्क कहता है कि आप मेजबान को ऑनलाइन रखना चाहते हैं। वहाँ तर्क, ज़ाहिर है, आप पर निर्भर है। यहां नुकसान यह होगा कि अगर ऐप 2 को कुछ मेजबानों पर सफलतापूर्वक तैनात किया जाता है, तो सभी मेजबान अभी भी 'स्वस्थ' और यातायात प्राप्त करेंगे।

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

संपादित करें: कृपया ध्यान दें कि यह एक पुराना उत्तर है और ELB के लिए विशिष्ट है ALB नहीं। ALB एक मेजबान पर अलग-अलग लक्ष्य का समर्थन करता है।


7

प्रति ऐप एक एलबी का उपयोग करना यहां जाने का तरीका है।

सबसे पहले, आपको वैसे भी उनकी आवश्यकता हो सकती है यदि प्रत्येक एप्लिकेशन स्वयं के डोमेन पर है और आपको SSL का समर्थन करने की आवश्यकता है। अमेज़ॅन ELBs वर्तमान में केवल प्रत्येक SSL के लिए एक SSL प्रमाणपत्र की अनुमति देता है, प्रत्येक SSL-सक्षम डोमेन के लिए अलग ELBs की आवश्यकता होती है। (वाइल्डकार्ड SSL प्रमाणपत्र अपवाद हैं)।

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

यहां एक काम करने वाला उदाहरण कॉन्फ़िगरेशन है जिसे एक नगीनेक्स serverनिर्देश में जोड़ा जा सकता है । यह EC2 उदाहरणों में से प्रत्येक पर लोड संतुलित होने के लिए स्थापित किया जाएगा।

    # This goes in the `server` block noted by 'default_server', often /etc/nginx/sites-enabled/default

    # All AWS Health Checks from the ELBs arrive at the default server.
    # Forward these requests on the appropriate configuration on this host.
    location /health-check/ {
      rewrite ^/health-check/(?<domain>[a-zA-Z0-9\.]+) /api/v1/status break;
      # Lie about incoming protocol, to avoid the backend issuing a 301 redirect from insecure->secure,
      #  which would not be considered successful.
      proxy_set_header X-Forwarded-Proto 'https';
      proxy_set_header "Host" $domain;
      proxy_pass http://127.0.0.1;
    }

"First-application.com" के लिए ELB की "स्वास्थ्य जांच" सेटिंग में, आप "HTTP" और पोर्ट 80 का चयन करेंगे और इस तरह से एक पथ दर्ज करेंगे:

/health-check/first-application.com

होस्ट पर उपर्युक्त Nginx कॉन्फ़िगरेशन के साथ, डिफ़ॉल्ट डोमेन पर अनुरोध प्राप्त होगा और https://first-application.com/api/v1/status के लिए उसी होस्ट पर Nginx कॉन्फ़िगरेशन से प्रतिक्रिया को प्रॉक्सी करेगा

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


3
धन्यवाद। हालांकि यह चाल करने के लिए लग रहा था। मैं इस के साथ कई लोड शेष होने की आवश्यकता से बचने की उम्मीद कर रहा था।
टूरडाउनडाउन

6

11 अगस्त 2016 को, अमेज़ॅन ने एप्लिकेशन लोड बैलेंसर पेश किया । ये आपको कई प्रकार के लक्षित समूह निर्दिष्ट करते हैं, जिनमें से प्रत्येक का अपना स्वास्थ्य परीक्षण होता है। तो यह अब एक एकल लोड बैलेंसर का उपयोग करना संभव है!

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