क्या Nginx HAProxy के सामने या इसके विपरीत होनी चाहिए?


11

मुझे वेब साइट इंफ्रास्ट्रक्चर आर्किटेक्चर डिज़ाइन का बहुत कम अनुभव है। मुझे पता है कि यह स्थिति विशिष्ट हो सकती है। माना जाता है कि वेब साइट:

1) कुछ पृष्ठ (जैसे लॉगिन पृष्ठ) के लिए HTTPS समर्थन की आवश्यकता है जबकि अन्य सिर्फ HTTP पृष्ठ हैं।

2) कई वेब सर्वर की आवश्यकता है ताकि कुछ लोड संतुलन की आवश्यकता हो।

3) प्रदर्शन को बढ़ावा देने के लिए HTTP कैशिंग और संपीड़न की आवश्यकता है।

4) कुछ अनुरोधों (जैसे छवि अपलोड करना) को समर्पित बैकएंड सर्वर पर भेजा जाना चाहिए। तो, URL- आधारित संतुलन आवश्यक है।

मुझे पता है कि NginX और HAProxy दोनों अच्छे खुले खट्टे उल्टे प्रॉक्सी और / या लोड बैलेंसर हैं। चूंकि HAProxy SSL का समर्थन नहीं करता है, जबकि Nginx लोड संतुलन HAProxy जितना अच्छा नहीं है। मैं दोनों को ले जाऊंगा।

तो, क्या मुझे HAProxy (लोड बैलेंसर के रूप में) के विपरीत, या विपरीत Nginx (रिवर्स प्रॉक्सी के रूप में) रखना चाहिए?

धन्यवाद

जवाबों:


7

यदि आपके पास HTTPS से अधिक हर वेब सर्वर उपलब्ध है, तो आपको HAProxy के सामने Nginx स्थापित करने की आवश्यकता होगी। उस कॉन्फ़िगरेशन के साथ, आपका Nginx सभी SSL कार्य को संभाल लेगा और डिक्रिप्टेड HTTP ट्रैफ़िक को सीधे HAProxy फ़्रेंड पर भेज देगा, जो आपके द्वारा निर्दिष्ट नियमों के आधार पर आपके वेब सर्वर पर लोड-बैलेंस रिक्वेस्ट करेगा।

LVS का उपयोग करने का विचार, जैसा कि womble द्वारा उल्लेख किया गया है, यह कुछ हद तक कम घुसपैठ है क्योंकि यह आपके वेब सर्वर और साइट तक पहुँचने वाले क्लाइंट के बीच कोई संबंध नहीं रखता है। दूसरी ओर, LVS आपको केवल सरल लोड-संतुलन प्रदान करेगा और आपको फ़ाइल एक्सटेंशन, अनुरोधित URL, हेडर आदि के आधार पर अनुरोधों को अग्रेषित करने की अनुमति नहीं देगा, यही कारण है कि कई स्थितियों में HAProxy का उपयोग किया जाता है।

यदि आपको केवल एक सर्वर (गैर-लोड-संतुलित) पर एसएसएल की आवश्यकता है, तो आप निगनेक्स का उपयोग किए बिना सब कुछ के लिए HAProxy का उपयोग करने के लिए सुरक्षित हैं। दूसरी ओर आपके पास वेब सर्वर के HTTPS लॉग में क्लाइंट के स्रोत IP पते को देखने में असमर्थ होने के साथ एक समस्या होगी (क्योंकि HAProxy उस पते को फिर से लिखता है)। यदि आप इसे सक्षम करते हैं तो IP HAProxy लॉग में होगा;)


धन्यवाद। चूंकि "कुछ अनुरोध (जैसे छवि अपलोड करना) को समर्पित बैकएंड सर्वर पर भेजा जाना चाहिए। इसलिए, URL- आधारित संतुलन आवश्यक है।" (जैसा कि मैंने सवाल अपडेट किया है)। LVS मेरी आवश्यकताओं की पूर्ति नहीं कर सकता है।
मॉर्गन चेंग

BTW, HAProxy द्वारा आईपी पते को छुपाना सिर्फ HTTPS के लिए है, या HTTP के लिए भी है?
मॉर्गन चेंग

@ मॉर्गन, आईपी का छिपाना सिर्फ HTTPS के लिए है।

यह केवल टीसीपी-मोड बैकएंड के लिए है, इसलिए HTTP हैडर के रूप में भेजे जाने के बाद से कुछ भी जो HTTP नहीं है, वह IP पता नहीं देखेगा।

बिल्कुल नहीं। Haproxy क्लाइंट के IP पते का उपयोग करके सर्वर से कनेक्ट हो सकता है, लेकिन इसके लिए कर्नेल सहयोग की आवश्यकता होती है (जैसे: TPROXY सुविधा)। हालांकि जहाँ भी संभव हो इससे बचना चाहिए।
विली तरारेयू


1

तुम बस nginx का उपयोग करना चाहिए, यह सब कुछ आप एक दृश्य वेबर के रूप में की जरूरत है। यदि आपको फ्रंट-एंड लोड-बैलेंसिंग की आवश्यकता है, तो लिनक्स वर्चुअल सर्वर जैसे एल 3 लोड बैलेंसर का उपयोग करें , क्योंकि यह उस तरह से नहीं मिलता है जैसे कि HAproxy करता है। यदि बैकएंड वर्कर्स के पूल के लिए अनुरोधों को संतुलित करने के लिए, यदि आवश्यक हो तो लोड-ऑफ-द-सीन लोड बैलेंसिंग का उपयोग करें।


2
यह कहा जाता है कि NginX लोड संतुलन सरल है, बस राउंड रॉबिन दृष्टिकोण है। यही कारण है कि मैं HAProxy को ध्यान में रख रहा हूं।
मॉर्गन चेंग

1
ठीक ही कहा गया है; मैंने खुद कहा है। यही कारण है कि मैं नाज़िनक्स को एक लोड बैलेंसर के रूप में उपयोग करने की अनुशंसा नहीं करता हूं, और आपको मेरा (या किसी अन्य) उत्तर में लोड बैलेंसर के रूप में नागिनक्स का उपयोग करने का कोई उल्लेख नहीं मिलेगा।
Womble

यदि आप स्रोत (या FreeBSD पर पोर्ट) से अपने संकलन का उपयोग करने से डरते हैं, तो ही ऐसा होगा। कई तीसरे पक्ष के मॉड्यूल हैं जो लोड संतुलन में सुधार करते हैं: wiki.nginx.org/3rdPartyModules
मार्टिन फेजर्डवाल्ड

2
सुधारें, हां। पर्याप्त बनाओ, नहीं। इस पर मेरे विचार hezmatt.org/~mpalmer/blog/2011/07/24/… ("नहीं सुंदर" के लिए खोज) में मिल सकते हैं।
Womble
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.