नार्नेक्स वार्निश नगनेक्स Django?


13

मेरे पास एक django ऐप है और मैं इसके सामने एक सर्वर पर वार्निश सेटअप करना चाहता हूं। में एक और serverfault धागा किसी वार्निश के सामने Nginx डालने का सुझाव दिया।

क्या मुझे कैशिंग सर्वर पर वार्निश के सामने Nginx रखना चाहिए? यदि हां, तो क्या मुझे ऐप सर्वर पर Nginx का उपयोग करना चाहिए?

जवाबों:


10

हम टियर के बीच लोड बैलेंसिंग के साथ एक बड़ा सर्वर फ़ार्म नहीं, कुल मिलाकर 1 - 3 फ्रंटेंड सर्वर बात कर रहे हैं?

विनेश के सामने नेगनेक्स रखने से आप मक्खी पर HTTP संपीड़न कर सकते हैं। यह एक प्रदर्शन का सबसे अच्छा अभ्यास है, लेकिन इसके साथ तिरस्कृत किया जा सकता है। (वार्निश में सामग्री को अक्सर असंपीड़ित रखा जाता है, ताकि ईएसआई में काम शामिल हो, और इसलिए आपको वैरी हेडर / ब्राउज़र मिलान के आधार पर एक ही ऑब्जेक्ट के कई कैश्ड संस्करणों से निपटने की आवश्यकता नहीं है।)

ऐप सर्वर पर nginx के बारे में - mod_wsgi के साथ Apache आजकल नए Django इंस्टॉलेशन को तैनात करने के लिए अनुशंसित और सबसे सामान्य तरीका नहीं है? मैं Django के लिए Apache / mod_wsgi पर nginx / fastcgi का उपयोग करने के लिए एक सम्मोहक कारण से अवगत नहीं हूं; लेकिन आपको एक Django विशेषज्ञ से सलाह लेनी चाहिए।

वार्निश के आकर्षक लोड बैलेंसिंग विशेषताओं के बारे में जो कि नग्नेक्स के पास नहीं है, मैं नहीं देखता कि वे क्या हैं? वार्निश में यादृच्छिक और गोल-रॉबिन संतुलन है। nginx में राउंड-रॉबिन, क्लाइंट IP और सुसंगत हैशिंग - मुझे वार्निश के लिए कोई महत्वपूर्ण लाभ नहीं दिखता है? क्या यह वीसीएल या वार्निश का सुंदर विन्यास पुनः लोड है या कुछ और?

एक छोटे से 1-3 सर्वर सेटअप के लिए मुझे लगता है कि मैं बस करूँगा

वार्निश -> अपाचे / mod_wsgi / Django

या हो सकता है

स्क्वीड -> अपाचे / mod_wsgi / Django

और सादगी के लिए HTTP कम्प्रेशन को अनदेखा करें, जब तक कि बैंडवीड महंगा न हो।

अपडेट करें:

ग्राहम डम्पल्टन ने नीचे एक बहुमूल्य टिप्पणी लिखी है। उन्होंने उदाहरण के लिए VPS पर एक ब्लॉग या कैशिंग के बिना एक छोटे से वेब फार्म के लिए एक बहुत ही सामान्य सेटअप का उल्लेख किया है:

nginx -> अपाचे / mod_wsgi / Django

यह एक बहुत अच्छा उपाय है, कुछ कारणों से:

  1. सरल सेटअप
  2. nginx, जिसमें उच्च गति और न्यूनतम ओवरहेड है, स्थिर फ़ाइल सेवारत और ब्राउज़र कनेक्शन को सुरक्षित रखता है।
  3. Django ग्रैहम डम्पलटन के उत्कृष्ट mod_wsgi में चलता है, जो Django के लिए अनुशंसित मंच है।

कारण यह है कि मैंने शुरू में इसका उल्लेख नहीं किया था कि ओपी को वार्निश की आवश्यकता थी, एक बहुत ही उच्च प्रदर्शन कैशिंग समाधान। नेगनेक्स / अपाचे / mod_wsgi कॉम्बो प्रदर्शन और लचीलेपन के स्तर के साथ कैशिंग नहीं कर सकता है जो वार्निश से मेल खाता है।


2
आप 'nginx -> Apache / mod_wsgi / Django' का भी उपयोग कर सकते हैं, क्योंकि कई लोग विभिन्न अच्छे कारणों के लिए करते हैं।
ग्राहम डम्पलटन

4
उस चीज़ के उपयोग के मामले में nginx प्रदान करने वाली दूसरी चीज़ जो कि कई लोगों को एहसास नहीं होगा कि nginx धीमी क्लाइंट से Apache को अलग करती है। ऐसा इसलिए है क्योंकि कुछ आकार तक की सामग्री nginx द्वारा स्ट्रीम नहीं की जाती है। इसके बजाय यह अनुरोध हेडर और सामग्री को बफर करेगा और केवल प्रॉक्सी अनुरोध जब यह सब होगा। इसका मतलब यह है कि यह केवल अपाचे को सौंप देता है जब अनुरोध को संभालने के लिए आवश्यक सभी जानकारी उपलब्ध होती है। इस प्रकार Apache / mod_wsgi कम से कम समय के लिए व्यस्त रहेगा और प्रक्रियाओं / थ्रेड्स को धीमी क्लाइंट द्वारा बंधे नहीं किया जाएगा। बफरिंग का एक उपाय रिवर्स पर होता है और साथ ही अपाचे भी जल्दी खत्म हो सकता है।
ग्राहम डम्पलटन ने

2
@ ग्राहम डम्पलटन: आपके यहाँ होना बहुत अच्छा है, मुझे उम्मीद है कि आप आस-पास रहेंगे। :-) Nginx HTTP मल्टीप्लेक्सिंग / स्मार्ट कनेक्शन हैंडलिंग के बारे में, मैं पूरी तरह से सहमत हूं।
जेस्पर एम

इस तरह की व्यापक प्रतिक्रियाएँ लिखने के लिए समय निकालने के लिए सबसे पहले और धन्यवाद, जेस्पर और ग्राहम। मैं दो ऐप सर्वर के सामने लोड बैलेंसिंग सर्वर लगाने की योजना बना रहा हूं। एक सर्वर दूसरे के साथ ज्यादातर ट्रैफिक को संभाल लेगा जिसका इस्तेमाल ज्यादातर फेल ओवर और बीटा टेस्टिंग के नए फीचर्स के लिए किया जाएगा।
एनरिको

वार्निश अपील कर रहा है क्योंकि यह मुझे पूरा नियंत्रण देता है कि कौन से अनुरोध किस बैकेंड को भेजे जाते हैं। वार्निश स्वास्थ्य बैकएंड सर्वरों की भी जांच करता है, फेलओवर सेटअप के लिए सरल है और यह धीमे / मृत बैकेंड को इनायत से संभालता है (यदि दोनों सर्वर मर जाते हैं)।
एनरिको

4

आप वार्निश के बिना nginx का उपयोग प्रॉक्सी से कर सकते हैं और सामग्री को कैश कर सकते हैं।


2
वार्निश में कुछ आकर्षक लोड बैलेंसिंग विशेषताएं हैं जो कि नग्नेक्स बॉक्स से बाहर नहीं निकलती हैं
Enrico

4
उदाहरण के लिए क्या सुविधाएँ?
मौन

4

मैं Nginx, वार्निश और Apache / mod_wsgi / Django का सफलतापूर्वक उपयोग कर रहा हूं। मैंने निम्नलिखित विन्यास के साथ शुरुआत की:

नेगनेक्स -> अपाचे / mod_wsgi / Django

एक बार जब मैंने अपाचे पर महत्वपूर्ण भार देखना शुरू किया, तो मैंने वार्निश को जोड़ा:

नेगनेक्स -> वार्निश -> अपाचे / mod_wsgi / Django

मैं एक प्रकार का "URL राउटर" के रूप में Nginx का उपयोग करता हूं। Django व्यवस्थापक अनुरोध को सीधे Nginx से Apache पर भेजा जाता है। क्लाइंट अनुरोधों को नगनेक्स से वार्निश में भेजा जाता है जो अपाचे के अनुरोधों को कैश करता है और ऐप सर्वर के अनुपलब्ध होने पर कैश से "ग्रेडेड" आइटम भी प्रदान करता है।

मेरा Nginx सर्वर भी कुछ स्थिर सामग्री को सीधे कार्य करता है (जैसे चित्र, CSS और जावास्क्रिप्ट फ़ाइलें)।

सामान्य तौर पर, प्रदर्शन उत्कृष्ट रहा है। मैंने देखा है कि मुझे जिन दो कैविएट का उल्लेख करना चाहिए:

  1. एक व्यस्त साइट पर, वार्निश को फिर से शुरू करने से ऐप सर्वर पर स्पाइक लोड हो सकता है, इसलिए वार्निश पुनरारंभ को न्यूनतम रखना सबसे अच्छा है। (वार्निश को नगनेक्स / अपाचे की तरह "पुनः लोड" नहीं लगता है, जहां यह अपनी वीसीएल फ़ाइलों को फिर से लोड करता है)। इसके विपरीत, Nginx कॉन्फ़िगरेशन को फिर से लोड करने से न्यूनतम प्रभाव पड़ता है। इस कारण से, मैं ज्यादातर URL पुनर्लेखन और Nginx में "रूटिंग" करता हूं।
  2. वार्निश Nginx और Apache के बीच गिरना आसान है। यदि आप अपने ऐप सर्वर पर उच्च लोड की सूचना देना शुरू करते हैं, तो डिफ़ॉल्ट डिफ़ॉल्ट के साथ वार्निश को जोड़ने से भी वास्तव में फर्क पड़ सकता है।
  3. यदि आप वार्निश का उपयोग करते हैं, तो आपको निश्चित रूप से यह सोचने की ज़रूरत है कि आप कैश अमान्यकरण को कैसे संभालेंगे।
  4. मेरा अनुभव रहा है कि वार्निश के हैंडल नेग्नेक्स की तुलना में थोड़ा अधिक सुंदर रूप से विफल हुए हैं (जैसा आपने पहले बताया था)।

मैंने कभी किसी और चीज के पीछे वार्निश नहीं देखा। वार्निश आमतौर पर लोड बैलेंसर है जो यूआरएल राउटर करता है। तो आपको 2 वेबसर्वर और 1 प्रॉक्सी या 2 प्रॉक्सी और 1 वेबसर्वर मिल गया है? Q
ioanb7

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.