यहाँ मेरी परिदृश्य (मेरे पूर्ववर्ती द्वारा डिजाइन) है:अपाचे प्रॉक्सी लोड संतुलन बैकएंड सर्वर विफलता का पता लगाने
दो Apache सर्वर मिश्रित बैकएंड वेब सर्वर (अपाचे, आईआईएस, बिलाव, आदि) के एक नंबर के लिए रिवर्स प्रॉक्सी कर्तव्य की सेवा । जिसके लिए हम कई बैकएंड वेब सर्वर है कुछ साइटों रहे हैं, और उन मामलों में, हम जैसे कुछ कार्य करें:
<Proxy balancer://www.example.com>
BalancerMember http://192.168.1.40:80
BalancerMember http://192.168.1.41:80
</Proxy>
<VirtualHost *:80>
ServerName www.example.com:80
CustomLog /var/log/apache2/www.example.com.log combined
<Location />
Order allow,deny
Allow from all
ProxyPass balancer://www.example.com/
ProxyPassReverse balancer://www.example.com/
</Location>
</VirtualHost>
इस उदाहरण में
तो, मैं में एक साइट (www.example.com) मिल गया है प्रॉक्सी सर्वर 'कॉन्फ़िगरेशन, और वह साइट दो बैकएंड सर्वरों में से एक या अन्य के लिए प्रॉक्सी हुई है, 1 9 2.168.1.40 और .41।
मैं यह सुनिश्चित करने के लिए इसका मूल्यांकन कर रहा हूं कि हम अपनी सभी वेब सेवाओं पर गलती सहनशील हैं (मैंने पहले से ही दो रिवर्स प्रॉक्सी सर्वर को इस कारण से साझा आईपी क्लस्टर में रखा है), और मैं यह सुनिश्चित करना चाहता हूं कि भार-संतुलित बैकएंड सर्वर भी गलती सहनशील हैं। लेकिन मुझे यह पता लगाने में परेशानी हो रही है कि बैकएंड विफलता का पता लगाना (और असफल बैकएंड सर्वर से बचने के लिए तर्क) mod_proxy_balancer मॉड्यूल में बनाया गया है ...
तो यदि 1 9 2.168.202.40 नीचे चला जाता है, तो अपाचे इस (I यह समझ जाएगा कि क्या यह पहले विफल विफलता लेता है) और स्वचालित रूप से सभी अनुरोधों को अन्य बैकएंड, 1 9 2.168.202.41 पर रूट करता है? या क्या असफल बैकएंड और परिचालन बैकएंड के बीच अनुरोधों को संतुलित करना जारी रहेगा?
मैं mod_proxy और mod_proxy_balancer के लिए अपाचे दस्तावेज में कुछ सुराग कि संकेत मिलता है कि विफलता पता लगाया जा सकता ("maxattempts = देने से पहले विफलता अधिकतम प्रयासों की संख्या।" "Failonstatus = एक एकल या कॉमा- लग पाया है HTTP स्थिति कोड की अलग सूची। यदि सेट किया गया है तो यह कार्यकर्ता को त्रुटि स्थिति में मजबूर कर देगा जब बैकएंड सूची में कोई स्टेटस कोड देता है। "), लेकिन खोज के कुछ दिनों के बाद, मुझे यह सुनिश्चित करने के लिए कुछ भी निर्णायक कह नहीं मिला है कि यह (या कम से कम "चाहिए") बैकएंड विफलता और वसूली का पता लगाएगा।
मैं कहूंगा कि अधिकांश खोज परिणाम संदर्भ बैकएंड सर्वर पर यातायात को पारित करने के लिए एजेपी प्रोटोकॉल का उपयोग करते हैं, और यह स्पष्ट रूप से विफलता का पता लगाने का समर्थन करता है - लेकिन मेरे बैकएंड अपाचे, आईआईएस, टोमकैट और अन्य का मिश्रण हैं , और मुझे पूरा यकीन है कि उनमें से कई एजेपी का समर्थन नहीं करते हैं। वे विंडोज 2k3/2k8 और लिनक्स (अधिकतर उबंटू ल्यूसिड) बक्से का मिश्रण भी विभिन्न विभिन्न आवश्यकताओं के साथ विभिन्न विभिन्न अनुप्रयोगों को चलाते हैं, इसलिए बैकहैंड और एलवीएस जैसे ऐड-ऑन मॉड्यूल मेरे लिए एक विकल्प नहीं हैं।
मैं भी अनुभव इस सुविधा का परीक्षण करने की कोशिश की है एक नया परीक्षण स्थल इस तरह बनाने के द्वारा:
<Proxy balancer://test.example.com>
BalancerMember http://192.168.1.40:80
BalancerMember http://192.168.1.200:80
</Proxy>
<VirtualHost *:80>
ServerName test.example.com:80
CustomLog /var/log/apache2/test.example.com.log combined
LogLevel debug
<Location />
Order allow,deny
Allow from all
ProxyPass balancer://test.example.com/
ProxyPassReverse balancer://test.example.com/
</Location>
</VirtualHost>
कहाँ 192.168.1.200 एक फर्जी पते है कि किसी भी वेब सर्वर नहीं चल रहा है है, अनुकरण करने के लिए एक बैकएंड विफलता। परीक्षण साइट को विभिन्न क्लाइंट मशीनों के समूह के लिए समस्या के बिना सेवा दी गई थी, लेकिन लॉगलेवल सेट को डीबग करने के लिए भी सेट किया गया था, मुझे यह इंगित करने के लिए लॉग इन कुछ भी नहीं मिला था कि यह पता चला है कि बैकएंड सर्वरों में से एक नीचे था ... और मैं 100% सुनिश्चित करना चाहता हूं कि मैं उत्पादन लोड को प्रभावित किए बिना रखरखाव के लिए हमारे भार-संतुलित बैकएंड को नीचे ले जा सकता हूं (एक समय में, एक समय में)।
देर से उत्तर दें, लेकिन इससे मेरी मदद मिली। मुझे अपग्रेड को 2.2.17 पर मजबूर करना पड़ा, क्योंकि सामान्य ल्यूसिड रेपो में केवल 2.2.14 है, जो "failonstatus" पैरामीटर का समर्थन नहीं करता है। अस्थायी रूप से जोड़ा गया natty repos, 2.2.17 को अद्यतन किया गया, और अब सबकुछ काम कर रहा है। धन्यवाद! –
@ डेविड न्यूकॉम एकमात्र समाधान जो मैंने पाया है वास्तव में काम करता है (हालांकि यह बदसूरत है) 'maxattempts' का उपयोग करना है (http://serverfault.com/questions/503531/apache2-proxy-tomcat6-prevent-503-error देखें -while-शुरू करने/503,539 # 503,539)। –