2013-12-16 7 views
29

मैं हैप्रोक्सी के लिए नया हूं और मेरे पास हैप्रोक्सी कॉन्फ़िगरेशन के बारे में एक प्रश्न है जो मुझे सही दृष्टिकोण लेने में महत्वपूर्ण निर्णय लेने में मदद करता है। यह वास्तुकला का निर्णय लेने में मेरी मदद करेगा।हैप्रोक्सी - लोड संतुलन के साथ यूआरएल आधारित रूटिंग

मेरे पास 3 ऐप्स हैं। मान लें app1, app2, app3

Region 1 - app1, app2, app3 
Region 2 - app1, app2, app3 

मैं इस कॉन्फ़िगर करने के लिए 2 तरीकों देखें:

www.example.com/app1/123 -> app1 
www.example.com/app2/123 -> app2 
www.example.com/app3/123 -> app3 

2 विभिन्न क्षेत्रों में प्रत्येक अनुप्रयोग के 2 उदाहरण सामने आना योजना बना रहा हूँ:

प्रत्येक एप्लिकेशन के रूप में इस यूआरएल द्वारा विभेदित है लेकिन मुझे यकीन नहीं है कि यहां सबसे अच्छा अभ्यास कौन सा है:

  • विधि 1: यूआरएल पैटर्न का उपयोग कर अनुरोधों को पहले अलग करने के लिए HAPROxy1 है। HAPROxy1 से अनुरोधों को लोड संतुलन के लिए अलग-अलग ऐप्स (3 इस मामले में 3 हैप्रोक्सी सर्वर) सेट अप करने के लिए दूसरे HAProxy सर्वर पर भेजा जाएगा।

  • विधि 2: जो दोनों के रूप में विधि 1. है कि में कहा गया है करता है एक महान HAProxy सर्वर है, यूआरएल के आधार पर अनुरोध अलग और फिर पारित करने के लिए की स्थापना की चीजों की तरह अलग-अलग फिल्टर के माध्यम से प्रत्येक अनुरोध विन्यास है लोड संतुलन के लिए प्रत्येक ऐप के लिए।

मुझे यकीन नहीं है कि विधि 2 हैप्रोक्सी में समर्थित है या नहीं। किसी भी विचार या सुझाव की सराहना की है। कृपया कुछ प्रकाश डालें।

उत्तर

46

आप URL पर आधारित अनुरोधों को अलग कर सकते हैं और एक ही HAProxy सर्वर के साथ लोड संतुलन को अलग कर सकते हैं। आपका विन्यास कुछ इस तरह होगा:

frontend http 
acl app1 path_end -i /app1/123 #matches path ending with "/app/123" 
acl app2 path_end -i /app2/123 
acl app3 path_end -i /app3/123 


use_backend srvs_app1 if app1 
use_backend srvs_app2 if app2 
use_backend srvs_app3 if app3 

backend srvs_app1 #backend that lists your servers. Use a balancing algorithm as per your need. 
    balance roundrobin 
    server host1 REGION1_HOST_FOR_APP1:PORT 
    server host2 REGION2_HOST_FOR_APP1:PORT 

backend srvs_app2 
    balance roundrobin 
    server host1 REGION1_HOST_FOR_APP2:PORT 
    server host2 REGION2_HOST_FOR_APP2:PORT 

backend srvs_app3 
    balance roundrobin 
    server host1 REGION1_HOST_FOR_APP3:PORT 
    server host2 REGION2_HOST_FOR_APP3:PORT 

अधिक जानकारी homepage पर पाया जा सकता।

+7

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

+0

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

+1

ऐसा लगता है कि बैकएंड पहले पथ घटक के आधार पर भिन्न होते हैं, 'path_beg' इस मामले में' path_end' से बेहतर परीक्षण हो सकता है –

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