2014-10-24 12 views
14

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

समस्या:

मैं अमेज़न EC2 एक आवेदन चल रहा है। यह बिना किसी मुद्दे के काम करता है जब कोई एक उदाहरण नहीं होता है और कोई लोड बैलेंसर नहीं होता है।

लेकिन मेरे उत्पादन वातावरण में मेरे पास एक लोड-बैलेंसर के पीछे चलने वाले दो समान उदाहरण हैं और कुछ कार्य करते समय, एक फीचर जो पीडीएफ उत्पन्न करता है और इसे ईमेल से जोड़ता है, कुछ भी नहीं होता है, और Google डेवलपर का उपयोग करते समय नेटवर्क टैब के साथ टूल मुझे टाइमआउट हिट करने के बाद त्रुटि "504 गेटवे टाइमआउट" मिलती है (मैंने इसे 30 सेकंड में सेट किया है)।

मेरा डेटाबेस बाहरी है, अमेज़ॅन आरडीएस पर।

मुझे लगता है .... अगर मैं क्लाइंट को अपने शुरुआती सर्वर से जुड़े रहने के लिए मजबूर कर सकता हूं, तो वे इस समस्या को हल कर देंगे, क्योंकि यह मेरी समझ है कि 504 गेटवे टाइमआउट तब हो रहा है जब उदाहरण -1 प्रयास करता है कार्य करने के लिए उदाहरण -2 तक पहुंचने के लिए।

यह केवल लोड संतुलन का उपयोग करते समय होता है, लेकिन कभी भी मेरे दो सर्वरों में से किसी एक से कनेक्ट होने पर नहीं होता है।

लोड बैलेंसर सेटिंग्स:

  • लोड संतुलन मेरी रजिस्ट्रार पर एक CRECORD है ताकि app.myapplication.com myloadbalancerDNSname.elb.amazonaws.com
  • को अंक लोड संतुलन 2 स्वस्थ है उदाहरण, प्रत्येक एक ही क्षेत्र में लेकिन वे विभिन्न उपलब्धता क्षेत्रों में हैं।
  • लोड बैलेंसर एक ही सुरक्षा समूह का उपयोग उदाहरण के रूप में कर रहा है (पोर्ट्स 22, 80, और 443 पर सभी आईपी को अनुमति दें)
  • लोड बैलेंसर में क्रॉस-जोन लोड संतुलन चालू है।
  • CORS (अमेज़न S3 में) प्राप्त करने के लिए सक्षम किया गया है, पोस्ट, डाल, से * * करने के लिए DELETE (मुझे नहीं पता कि यह कैसे मेरी उदाहरणों साथ जुड़ा हुआ है, लेकिन वैसे भी मैंने किया के रूप में दिए गए निर्देशों का कहा)
  • लोड
    • लोड बैलेंसर प्रोटोकॉल:: संतुलन श्रोताओं इस तरह के रूप में विन्यस्त है HTTP लोड बैलेंसर पोर्ट: 80 उदाहरण प्रोटोकॉल: HTTP उदाहरण पोर्ट: 80
    • लोड बैलेंसर प्रोटोकॉल: HTTPS लोड बैलेंसर पोर्ट: 443 इंस्टेंस प्रोटोकॉल: HTTP इंस्टेंस पोर्ट: 80 (सिफर मेरी प्रमाणपत्र प्रदाता प्रति सही ढंग से चुना है, और एसएसएल क्षेत्रों 100% निश्चित रूप से सही)

कुछ और अधिक विचार:

कहा जा रहा है, मैं HTTPS के साथ परीक्षण नहीं कर रहा हूँ , लेकिन इसके बजाय सामान्य HTTP। मुझे विश्वास नहीं है कि एसएसएल ठीक तरह से सेटअप है, भले ही मेरा प्रमाणपत्र प्रदाता यह कहता है। कारण मुझे संदेह है कि जब मैं https://app.myapplication.com में कुंजी करने का प्रयास करता हूं तो मुझे नेटवर्क टैब में Google डेवलपर टूल्स में "(विफल) नेट :: ERR_CONNECTION_CLOSED" त्रुटि मिलती है।लेकिन यह लागू नहीं होना चाहिए क्योंकि मुझे नियमित HTTP का उपयोग करने में भी समस्या आ रही है। मैं बाद में एसएसएल की समस्या निवारण कर सकता हूं।

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

मुझे नहीं पता कि कौन सा प्रश्न पूछना है, क्योंकि मैंने टी, डबल और ट्रिपल में हर दस्तावेज़ का पालन किया है, पूरे वेब पर सभी सुझावों और कुछ भी नहीं।

उत्तर

2

सबसे पहले, आपके ईएलबी के लिए निष्क्रिय टाइमआउट क्या है? आप इसे अपने लोड बैलेंसर के लिए "विवरण" टैब के बहुत नीचे पाएंगे। आप निष्क्रिय टाइमआउट here in the ELB documentation के बारे में अधिक पढ़ सकते हैं। डिफ़ॉल्ट साठ सेकण्ड है। आपको अपने वेब सर्वर में रख-रखाव रखने या बढ़ाने पर भी विचार करना चाहिए। आप यह कैसे करेंगे कि आप किस वेब सर्वर का उपयोग कर रहे हैं इस पर निर्भर करेगा।

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

+0

----> ईएलबी पर निष्क्रिय टाइमआउट डिफ़ॉल्ट मान, 60 सेकंड है। मेरे 2 उदाहरणों पर (कॉन्फ़िगरेशन फ़ाइल /etc/apache2/apache2.conf के अंदर वेबसर्वर अपाचे है, इसलिए मुझे उम्मीद है कि यह प्रासंगिक फ़ाइल है) मैंने यह भी पाया कि जीवित रहना है, मैक्सकिपएलिव रिक्वेस्ट 100 है, मैक्सलिवटाइमआउट 5. मैंने ईएलबी पर सत्र स्थिरता को "लोड बैलेंसर जेनरेटेड कुकी स्टिकनेस सक्षम करने" के लिए भी संपादित किया है, इसलिए इसके लिए धन्यवाद। लेकिन अंत में अंतिम परिणाम अभी भी वही है, "504 गेटवे टाइमआउट"। – user3035649

+0

उस स्थिति में आप यहां संभावनाओं की सूची से गुजरना चाहेंगे: http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/ts-elb-error-message.html –

+2

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

8

आप किस वेब सर्वर का उपयोग कर रहे हैं? मुझे nginx और एडब्ल्यूएस भार संतुलन के साथ एक बहुत ही समान मुद्दा था। मैंने keepalive_timeout 75s; को मेरी nginx कॉन्फ़िगरेशन फ़ाइल में http ब्लॉक में जोड़ा और तब से समस्या नहीं देखी है।

सुनिश्चित करें कि आप nginx पुनः आरंभ आप (तब /path/to/nginx/executable ubuntu sudo service nginx restart पर। Redhat रोक nginx /path/to/nginx/executable -s stop पर nginx शुरू करने) जोड़ सकते हैं और है कि रेखा को बचाने के बाद

इस सुधार में उनकी मदद के पेज AWS Load balancer troubleshooting

पर एडब्ल्यूएस की सिफारिश की थी बनाओ
+2

अपाचे के लिए एक समान फिक्स 'KeepAlive On'' KeepAliveTimeout 75' है। – singh1469

3

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

127.0.0.1 localhost 
127.0.1.1 ubuntu-server 
42.139.126.191 app.myapp.com 

यह वही दिखता है, इसलिए मैंने उस तीसरी पंक्ति को हटा दिया और सभी गियर्स फिर से चालू हो गए। : पी

1

हम अमेज़ॅन ईएलबी के पीछे अमेज़ॅन ईसी 2 उदाहरणों का उपयोग करते हैं और हमें 504 GATEWAY_TIMEOUT त्रुटियां मिल रही थीं। हम उबंटू वेब सर्वर पर अपाचे और PHP का उपयोग करते हैं।

हमारे मामले में, त्रुटि स्मृति से बाहर चल रहे सर्वरों के कारण थी। हमने हमारे अपाचे त्रुटि लॉग में "स्मृति से बाहर" नहीं देखा। अपाचे एक्सेस लॉग में 504 लाइन एंट्री थी। हमने syslog फ़ाइल (/ var/log/syslog) को देखकर "स्मृति से बाहर" की पुष्टि की और स्मृति समस्या को ठीक किया।

इससे हमारे लिए 504 त्रुटि हल हुई।

0

सुरक्षा समूह सेटिंग्स की जांच करें। पोर्ट 80 तक पहुंच के लिए प्रतिबंधित किया जा सकता है।

+0

तो यह कैसे काम कर सकता है? –

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