StackOverflow / ServerFault में कितने वेब सर्वर हैं?
यदि उत्तर 'एक से अधिक' है, तो क्या यह डीएनएस मतदान करते समय सत्र चिपचिपाहट को प्राप्त करता है ?
StackOverflow / ServerFault में कितने वेब सर्वर हैं?
यदि उत्तर 'एक से अधिक' है, तो क्या यह डीएनएस मतदान करते समय सत्र चिपचिपाहट को प्राप्त करता है ?
जवाबों:
कई मशीनों में बड़ी वेबसाइटें "लोड संतुलित" हो सकती हैं। कई लोड संतुलित सेटअपों में, उपयोगकर्ता सत्र के दौरान किसी भी बैकेंड मशीन को हिट कर सकता है। इसके कारण, कई मशीनें उपयोगकर्ता सत्रों को साझा करने की अनुमति देने के लिए मौजूद हैं।
चुना गया तरीका नियोजित लोड संतुलन की शैली पर निर्भर करेगा, साथ ही बैकएंड भंडारण की उपलब्धता / क्षमता:
केवल कुकीज़ में संग्रहीत सत्र जानकारी : सत्र जानकारी (न केवल एक सत्र पहचानकर्ता) उपयोगकर्ता की कुकी में संग्रहीत होती है। उदाहरण के लिए, उपयोगकर्ता की कुकी में उनकी खरीदारी टोकरी की सामग्री हो सकती है। सत्र डेटा के साथ छेड़छाड़ करने वाले उपयोगकर्ताओं को रोकने के लिए, कुकी के साथ एक HMAC प्रदान किया जा सकता है। यह विधि संभवतः अधिकांश अनुप्रयोगों के लिए कम से कम उपयुक्त है:
लोड बैलेंसर हमेशा उपयोगकर्ता को एक ही मशीन के लिए निर्देशित करता है : कई लोड बैलेंसर्स अपना स्वयं का सत्र कुकी सेट कर सकते हैं, यह दर्शाता है कि उपयोगकर्ता किस बैकेंड मशीन से अनुरोध कर रहा है और भविष्य में उन्हें उस मशीन पर निर्देशित कर सकता है। क्योंकि उपयोगकर्ता को हमेशा एक ही मशीन के लिए निर्देशित किया जाता है, कई मशीनों के बीच सत्र साझा करने की आवश्यकता नहीं होती है। यह कुछ स्थितियों में अच्छा हो सकता है:
साझा बैकएंड डेटाबेस या की / वैल्यू स्टोर : सत्र की जानकारी एक बैकएंड डेटाबेस में संग्रहीत होती है, जिसमें सभी वेबसर्वर्स के पास क्वेरी और अपडेट की पहुंच होती है। उपयोगकर्ता का ब्राउज़र सत्र जानकारी की ओर इशारा करते हुए एक पहचानकर्ता (जैसे सत्र आईडी) के साथ एक कुकी संग्रहीत करता है। यह शायद तीन में से सबसे साफ विधि है:
कुल मिलाकर, अधिकांश डायनेमिक वेब एप्लिकेशन कई डेटाबेस क्वेरी या की / वैल्यू स्टोर रिक्वेस्ट करते हैं, इसलिए डेटाबेस या की / वैल्यू स्टोर सेशन डेटा का लॉजिकल स्टोरेज लोकेशन है।
यदि आपका सवाल है कि कई फ्रंट-एंड वेब सर्वर पर सत्र कैसे बनाए रखा जाए, तो आमतौर पर उत्तर केंद्रीकृत डेटाबेस का उपयोग करना होता है। स्थानीय फ़ाइल सिस्टम पर सत्र फ़ाइलों को ट्रैक करने के लिए वेब सर्वर इंस्टेंसेस पर निर्भर होने के बजाय, आप सत्र आईडी और डेटा को केंद्रीय DB में लिखेंगे, और सभी वेब सर्वर इसके बजाय डेटा को पुनः प्राप्त करेंगे।
Nemcached का उपयोग करना एक अच्छा समाधान लगता है जैसा कि @David Pashley द्वारा उल्लेख नहीं किया गया है
इसका अर्थ है कि सभी सर्वरों द्वारा साझा किया गया रिमोट मेमकाटेड उदाहरण और मेकचे PECL एक्सटेंशन का उपयोग करके जो कि अपना सेशन हैंडलर प्रदान करता है।
यह केवल php विन्यास में दो मापदंडों को बदलने की आवश्यकता है!
यहाँ एक अच्छा ट्यूटोरियल है http://www.dotdeb.org/2008/08/25/storing-your-php-session-using-memcached/
IIRC, DotNetRocks # 440 में उन्होंने कहा कि एक सर्वर अवधि। नहीं पता है कि अभी भी मामला है।
संपादित करें: वास्तव में यह # 134 हैन्सेलमिन्यूट्स था । माफ़ कीजिये।
आप कुकी सेट कर सकते हैं।
आप दूरस्थ आईपी के एक हैश की गणना कर सकते हैं (इसके सरल, विषम संख्या वाले दूरस्थ होस्ट सर्वर ए पर जाते हैं, यहां तक कि गिने हुए होस्ट सर्वर बी पर जाते हैं)।
ऐसा लगता है कि आप इसे कुछ मूल्यों के माध्यम से भी कर सकते हैं जो स्रोत प्रणाली के साथ रहते हैं यदि आप एक ssl सुरंग का उपयोग कर रहे हैं।
आमतौर पर उपरोक्त प्रत्येक तंत्र को "रिवर्स प्रॉक्सी" सर्वर या किसी प्रकार के लोड बैलेंसर की आवश्यकता होती है। वह लोड बैलेंसर ट्रैफ़िक को स्वीकार करता है और फिर इसे निर्देश देता है कि जो भी सर्वर शुरू में ऊपर के मानदंडों में से एक पर आधारित हो।
मुझे यकीन नहीं है, हालांकि, आप "डीएनएस मतदान" से क्या मतलब है
a) आप उपयोगकर्ता कुकी में सत्र जानकारी संग्रहीत कर सकते हैं। स्टेटलेस हार्ड कुकीज देखें, जो सर्वर साइड पर कोई डेटा संग्रहीत नहीं करता है, लेकिन सत्र स्थिति http://www.cl.cam.ac.uk/~sjm217/papers/protocols08cookies.pdf को संरक्षित करता है । बी) आप सत्र बैकएंड स्टोरेज को डेटाबेस या मेमकेच्ड में बदल सकते हैं। विफलता के एकल बिंदु को खत्म करने के लिए, आप डेटाबेस प्रतिकृति या कई मेमोडेड नोड्स सेट कर सकते हैं। ध्यान दें, इस तरह के सेटअप में मेमेकैच्ड की सिफारिश की जाती है, जहां सत्र में उपयोगकर्ता राज्य खोना बड़ी त्रुटि नहीं है और इससे वह बहुत दुखी नहीं होता है। ऐसे मामलों के लिए जहां संरक्षण महत्वपूर्ण है, डेटाबेस का उपयोग करें। दोनों PHP, Django और रेल डेवलपर को कस्टम सत्र बैकएंड लिखने की अनुमति देता है।