2012-02-15 14 views
11

मैं बहुत यकीन है कि इस समस्या का समाधान कर दिया गया है, लेकिन मैं किसी भी जानकारी को कहीं भी इसके बारे में नहीं मिल सकता है ...प्रोग्रामेटिक रूप से एक लोड बैलेंसर जैसे हैप्रोक्सी में नोड्स जोड़ें?

कैसे sysadmins प्रोग्राम के रूप में एक मौजूदा और चल लोड संतुलन के लिए एक नया नोड जोड़ सकता हूँ? आइए मान लें कि मेरे पास लोड बैलेंसर चल रहा है और पहले से ही संतुलन दो ईसी 2 उदाहरणों के बीच मेरा एपीआई सर्वर कहता है, और अचानक एक ट्रैफिक स्पाइक है और मुझे लोड बैलेंसर में तीसरा नोड चाहिए लेकिन मैं सो रहा हूं ... अगर यह अच्छा होगा कुछ मॉनीटरिंग संभवतः राम उपयोग और कुछ प्रमुख प्रदर्शन संकेतक थे जो मुझे बताते हैं कि मेरे पास एक और नोड होना चाहिए, और इससे भी बेहतर अगर यह लोड बैलेंसर में एक नया नोड जोड़ सकता है ...

मुझे विश्वास है कि यह है node-http-proxy और distribute के साथ करने के लिए संभव और यहां तक ​​कि तुच्छ भी है, लेकिन मुझे यह जानना है कि HAproxy और/या Nginx के साथ ऐसा करना संभव है ... मुझे पता है कि अमेज़ॅन का लोचदार भार संतुलन शायद मेरी सबसे अच्छी शर्त है लेकिन मैं इसे करना चाहता हूं अपने आप पर (मैं रैकस्पेस, ईसी 2, जॉयेंट और शायद दूसरों के उदाहरणों को स्पष्ट करना चाहता हूं क्योंकि यह सुविधाजनक है)।

एक बार फिर, एक नोड फैलाना आसान है, मैं यह जानना चाहता हूं कि इसे haproxy.cfg या Nginx के साथ कुछ समान प्रॉक्सी को फिर से लोड किए बिना, और प्रोग्रामेटिक रूप से करने के बिना कैसे जोड़ना है। बैश स्क्रिप्टिंग इसके लिए मेरी सबसे अच्छी शर्त है लेकिन इसे अभी भी पूरी प्रॉक्सी को फिर से लोड करना होगा जो खराब है क्योंकि यह कनेक्शन खो देता है ...

उत्तर

8

आपके पास कुछ प्रश्न हैं। "इसे पुनरारंभ किए बिना haproxy में नोड्स जोड़ें" के लिए:

मैं इसी तरह की समस्या के लिए क्या करता हूं सर्वर नामों के साथ कॉन्फ़िगरेशन फ़ाइल को पूर्ववत करता है .. उदा। वेब01, web02 ... web20 भले ही मेरे पास केवल 5 वेब सर्वर हों। फिर मेरे मेजबान फ़ाइल में मैं उनको वेब सर्वर के वास्तविक ips पर मैप करता हूं।

नया सर्वर जोड़ने के लिए, आप बस मेजबान फ़ाइल में इसके लिए एक प्रविष्टि बनाते हैं और यह स्वास्थ्य जांच पास करना शुरू कर देगा और जोड़ा जाएगा।

स्वचालित ऑर्केस्ट्रेशन के लिए, यह वास्तव में आपके पर्यावरण पर निर्भर करता है और आपको शायद अपनी आवश्यकताओं के अनुरूप कुछ कस्टम लिखना होगा। ऑर्केस्ट्रेशन को संभालने के लिए भुगतान समाधान भी हैं (स्केलर दिमाग में आता है)।

+0

यह एक बहुत अच्छा विचार है! धन्यवाद! –

7

मुझे क्या करना:

# new webservers here 

और एक sed स्क्रिप्ट मैं की तरह कुछ के साथ haproxy.cfg अद्यतन के साथ:

sed -i -e "/new webservers here/a\ server $ip_address $ip_address:12080 check maxconn 28 weight 100" 
मैं जो कहता है haproxy.cfg में मेरी बैकएंड अनुभाग में एक लाइन है

और फिर haproxy पुनः लोड करें। पारदर्शी रूप से काम करता है।

+1

यह करने का एक अनुशंसित तरीका है? मेरे लिए व्यावहारिक प्रतीत नहीं होता है। हालांकि, यह काम करता है। – hugofcampos

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