2017-08-08 12 views
6

नहीं हैं, मैं अपने नोड अनुप्रयोग के लिए एक वीएम स्केल सेट का उपयोग करता हूं। मेरे ऐप में एक क्रिया है जो www.mydomain.com/api/healthcheck के माध्यम से सार्वजनिक पहुंच योग्य है और केवल कुछ जेसन प्रिंट करता है। जब मैं TCP प्रोटोकॉल का उपयोग करने के लिए अपनी स्वास्थ्य जांच को कॉन्फ़िगर करता हूं, तो सब ठीक काम करता है और मेरी एपीआई मुझे अपेक्षित जेसन (और स्थिति 200) देता है। हालांकि, जब मैं अब HTTP और पथ = /api/healthcheck उपयोग करने के लिए अपने स्वास्थ्य की जांच के लिए स्विच, मेरी वेबसाइट अब और नहीं पहुंच नहीं है (ERR_CONNECTION_TIMED_OUT ... मुझे लगता है कि loadbalancer सभी उदाहरणों बाहर ले जाता है क्योंकि स्वास्थ्य जांच उसे बताता है कि हर मामले अस्वस्थ है)स्वास्थ्य जांच अंक अस्वास्थ्यकर के रूप में उदाहरण हैं लेकिन

मैं अपने नोड ऐप के सामने nginx का उपयोग करता हूं, लेकिन मैंने अपने लोडबैंसर को पोर्ट 80 को बैकएंडपोर्ट 8080 में रूट करने के लिए (परीक्षण के लिए) (जहां मेरा नोड ऐप हर मशीन पर चल रहा है, इसलिए मैं nginx प्रॉक्सी से बच सकता हूं))। लेकिन मुझे वही व्यवहार मिलता है।

मुझे विचार है कि मेरा कस्टम स्वास्थ्य जांच क्यों काम नहीं करती है। आशा है कि आप मदद कर सकते हैं।


संपादित करें: परीक्षण के लिए, मैंने किया था निम्नलिखित:

  • रन हर वीएम, जो सिर्फ प्रिंट "हैलो दुनिया" पर पोर्ट 3000 पर एक और NodeJS एप्लिकेशन
  • (बिना nginx प्रॉक्सी!)
  • पोर्ट 3000 के लिए एक पौंड नियम बनाते हैं और यह भी मेरी एनएसजी कॉन्फ़िगर अनुमति देने के लिए: सभी
  • शुरुआत में
  • के लिए 3000, मेरे स्वास्थ्य जांच का उपयोग करने के tcp
  • resu कॉन्फ़िगर किया गया है lt: mydoamin.com:3000/hello उपलब्ध (प्रिंट हैलो और रिटर्न 200) है
  • अब मैं अपने स्वास्थ्य जांच http -protocol, बंदरगाह 3000 और स्थान /hello उपयोग करने के लिए कॉन्फ़िगर करें।
  • परिणाम: मेरे पूरे वेब अनुप्रयोग अब और
+0

HTTP स्वास्थ्य जांच भी पोर्ट 80 का उपयोग कर विफल होता है: निम्न आदेश का उपयोग? या केवल पोर्ट 8080 का उपयोग करते समय? साथ ही, क्या यह संभव है कि आपकी साइट पर http एंडपॉइंट से समकक्ष https समापन बिंदु पर रीडायरेक्ट हो? –

+0

यह पोर्ट 80 पर भी विफल रहता है। हाँ https पर रीडायरेक्ट था लेकिन मैंने परीक्षण नियमों के लिए इस नियम को हटा दिया लेकिन फिर मुझे वही व्यवहार मिलता है। – Munchkin

उत्तर

2

मैं अपने सर्वर का कोड नहीं देख सकते हैं यह पता लगाने की तो अपनी हार्ड उपलब्ध नहीं है। यदि आपने कुछ कोड साझा किया है तो यह आसान होगा।

तो स्थिति विश्लेषण करने की कोशिश कर सकते हैं:

प्रारंभिक चेक उदाहरणों को

कनेक्शन टाइम आउट हो गया है अपने मशीनों टर्मिनल

से निम्न आदेश प्रदर्शन करने के लिए

कोशिश

curl –I private-IP-address-of-the-instance:port/health-check-target-page 

अब ओ के आधार पर tucome हम विभिन्न संभावित कारणों है ...

प्रारंभिक चेक परिणाम: गैर 200 प्रतिक्रिया

  • कोई लक्ष्य पेज उदाहरण पर कॉन्फ़िगर किया गया है।
  • प्रतिक्रिया में सामग्री-लंबाई शीर्षलेख का मान सेट नहीं है।
  • एप्लिकेशन बैलेंसर से अनुरोध प्राप्त करने के लिए कॉन्फ़िगर नहीं किया गया है या 200 प्रतिक्रिया कोड वापस करने के लिए कॉन्फ़िगर नहीं किया गया है।

प्रारंभिक चेक परिणाम: उदाहरण

  • उदाहरण के लिए कॉन्फ़िगर प्रतिक्रिया समय समाप्ति की अवधि के भीतर जवाब देने विफल हो रहा है के लिए सीधे कनेक्ट करने में सक्षम।
  • उदाहरण महत्वपूर्ण लोड के तहत है और प्रतिक्रिया देने के लिए आपके कॉन्फ़िगर किए गए प्रतिक्रिया टाइमआउट अवधि से अधिक समय ले रहा है।
  • आप एक HTTP या HTTPS कनेक्शन और स्वास्थ्य जांच उपयोग कर रहे हैं पिंग पथ क्षेत्र (उदाहरण के लिए, HTTP: 80/index.html) में निर्दिष्ट लक्ष्य पेज पर प्रदर्शन किया जा रहा है, लक्ष्य पृष्ठ हो सकता है अपने कॉन्फ़िगर किए गए टाइमआउट से अधिक जवाब देने के लिए।

अन्य: उदाहरण लोड संतुलन से ट्रैफ़िक मिल रहा नहीं है

समस्या: उदाहरण के लिए सुरक्षा समूह लोड संतुलन से यातायात रोक रहा है।

समस्या को सत्यापित करने के लिए उदाहरण पर एक पैकेट कैप्चर करें।

tcpdump port health-check-port 
+0

धन्यवाद! मैं इन चरणों का पालन करूंगा और आपको बता दूं कि यह काम करता है (शायद कल) – Munchkin

+1

यह अब काम करता है! 'कर्ल- I निजी-आईपी-एड-द-इंस्टेंस: पोर्ट/हेल्थ-चेक-टार्गेट-पेज 'ने मुझे बताया, कि nginx सर्वर नाम की पहचान नहीं कर सका - क्योंकि मेरे सभी' सर्वर {}' -ब्लॉक्स में मेरे पास यह पंक्ति है: 'server_name * .mydomain.com;'। अब मैंने इसे अपने nginx कॉन्फ़िगरेशन में जोड़ा है: 'सर्वर {81 सुनें; स्थान =/मेरा/हेल्थ चेक {...}} ', पोर्ट 81 के लिए एक एनएसजी स्थापित किया गया है और पोर्ट' 81' और पथ '/ my/healthcheck' – Munchkin

+0

का उपयोग करने के लिए मेरी स्वास्थ्य जांच को कॉन्फ़िगर किया गया है! मुझे खुशी है कि आपने प्रबंधित किया:] – EMX

संबंधित मुद्दे