2012-12-21 13 views
12

हमने सेटअप 3 सर्वर: Nginx + HAProxy साथHAProxy यादृच्छिक HTTP 503 त्रुटियों

  • सर्वर एक भार
  • बैकएंड सर्वर बी
  • बैकएंड सर्वर सी

यहाँ संतुलन प्रदर्शन करने के लिए हमारा /etc/haproxy/haproxy.cfg है:

global 
     log /dev/log local0 
     log 127.0.0.1 local1 notice 
     maxconn 40096 
     user haproxy 
     group haproxy 
     daemon 

defaults 
     log  global 
     mode http 
     option httplog 
     option dontlognull 
     retries 3 
     option redispatch 
     maxconn 2000 
     contimeout  50000 
     clitimeout  50000 
     srvtimeout  50000 
       stats enable 
       stats uri /lb?stats 
       stats realm Haproxy\ Statistics 
       stats auth admin:admin 
listen statslb :5054 # choose different names for the 2 nodes 
     mode http 
     stats enable 
     stats hide-version 
     stats realm Haproxy\ Statistics 
     stats uri/
     stats auth admin:admin 

listen Server-A 0.0.0.0:80  
     mode http 
     balance roundrobin 
     cookie JSESSIONID prefix 
     option httpchk HEAD /check.txt HTTP/1.0 
     server Server-B <server.ip>:80 cookie app1inst2 check inter 1000 rise 2 fall 2 
     server Server-C <server.ip>:80 cookie app1inst2 check inter 1000 rise 2 fall 3 
Message from [email protected] at Dec 21 18:27:20 ... 
haproxy[1650]: proxy Server-A has no server available! 

नोट: यह भी सर्वर के कंसोल पर 503 Service Unavailable - No server is available to handle this request.

और: +४६५१०४०३२१० तीन सर्वरों के सभी अनुरोधों

रैंडम HTTP जब ब्राउज़ कर 503 त्रुटियों को दिखाया जाता है संभाल करने के लिए एक अच्छा रैम और सीपीयू कोर की राशि है उस समय के 90% बार कोई त्रुटि नहीं है। ये त्रुटियां यादृच्छिक रूप से होती हैं।

+3

क्या आपको कभी जवाब मिल गया? हमारे पास कुछ समान है। – jeesty

+0

उत्तर मिला ... कृपया उत्तर स्वीकार करें। – Siten

उत्तर

0

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

0

यह संभव है कि आपके सर्वर साझा हो जाएं, शायद, एक सामान्य संसाधन जो कुछ समय पर समाप्त हो रहा है, और आपके स्वास्थ्य जांच अनुरोध एक ही समय में किए जा रहे हैं (और इस प्रकार बैकएंड सर्वर को एक ही समय में खींच रहे हैं) ।

आप स्वास्थ्य जांच को यादृच्छिक बनाने के लिए हैप्रोक्सी विकल्प spread-checks का उपयोग करने का प्रयास कर सकते हैं।

25

मुझे एक ही समस्या थी। मेरे बालों को खींचने के कुछ दिनों बाद मुझे समस्या मिली।

मेरे पास दो हैप्रोक्सी उदाहरण चल रहे थे। एक ज़ोंबी था कि किसी भी तरह से शायद एक अद्यतन या एक haproxy पुनरारंभ के दौरान कभी नहीं मारा गया था। मैंने यह देखा कि/haproxy आँकड़े पृष्ठ को रीफ्रेश करते समय और पीआईडी ​​दो अलग-अलग संख्याओं के बीच बदल जाएगा। संख्याओं में से एक के साथ पृष्ठ बेतुका कनेक्शन आंकड़े था। मैं

netstat -tulpn | grep 80 

किया था और बंदरगाह 80

को सुनने के मुद्दे मैंने किया था ठीक करने के लिए दो haproxy प्रक्रियाओं देखा पुष्टि करने के लिए एक जहां xxxx संदिग्ध आंकड़ों के साथ पीआईडी ​​है "xxxx मारने"।

+0

ओम, धन्यवाद। पोर्ट 80 को सुनकर 10 से अधिक प्रक्रियाएं थीं। जीज़। –

+0

धन्यवाद !! आपने अभी अपना जीवन बचाया है – hamou92

+0

निश्चित रूप से 2 दिनों के लिए मेरे बालों को फाड़ रहा है। धन्यवाद, धन्यवाद –

0

मैं एक ही मुद्दा है, 2 HAProxy linux बॉक्स में चलने वाली सेवाओं की वजह से था, लेकिन अलग नाम/पीआईडी ​​/ संसाधनों के साथ। जब तक मैं अवांछित एक बंद करो, आवश्यक उदाहरणों फेंकता 503 त्रुटि बेतरतीब ढंग से, 5 बार में कहना 1।

अधिक URL मार्ग के लिए एक linux बॉक्स का उपयोग करने की कोशिश कर लेकिन haproxy में एक सीमा या मैं परिभाषित किया है haproxy की कॉन्फ़िग फ़ाइल लग रहा था।

0

किसी और को जो इस सटीक एक ही समस्या का सामना करना पड़ता है, लेकिन ऊपर सूचीबद्ध से कोई भी समाधान लागू होते हैं के लिए यहाँ मेरा उत्तर जोड़ा जा रहा है। कृपया ध्यान दें कि मेरा उत्तर ऊपर सूचीबद्ध मूल कोड पर लागू नहीं होता है।

किसी और ने इस समस्या हो सकती है, अपने config जांच करें और देखें कि आपने गलती से अपने config के कई वर्गों में एक ही "बाँध" लाइन डाल सकता है के लिए

।Haproxy स्टार्टअप के दौरान यह जांच नहीं करता है, और मैं डेवलपर्स को अनुशंसित सत्यापन जांच के रूप में सबमिट करने की योजना बना रहा हूं। मेरे मामले में, मेरे पास कॉन्फ़िगर के 3 अलग-अलग अनुभाग हैं, और मैंने गलती से दो अलग-अलग स्थानों में एक ही आईपी बाइंडिंग डाली है। यह 50/50 शॉट था कि सही अनुभाग का उपयोग किया जाएगा या गलत अनुभाग का उपयोग किया गया था या नहीं। यहां तक ​​कि जब सही अनुभाग का उपयोग किया गया था, तब तक लगभग आधे अनुरोधों को अभी भी 503 मिल गया।

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