मैंने हमेशा लोड-बैलेंसर के रूप में लंबे टीटीएल के साथ राउंड-रॉबिन डीएनएस का उपयोग किया है। यह ब्राउज़रों के साथ HTTP / HTTPS सेवाओं के लिए वास्तव में ठीक काम करता है ।
मैं वास्तव में ब्राउज़र के साथ बाहर तनाव क्योंकि अधिकांश ब्राउज़र किसी अन्य आईपी पर «रिट्री» को लागू करते हैं, लेकिन मुझे नहीं पता कि अन्य लाइब्रेरी या सॉफ्टवेयर्स कैसे कई आईपी समाधान को संभालेंगे।
जब ब्राउज़र को एक सर्वर से उत्तर नहीं मिलता है, तो यह स्वचालित रूप से अगले आईपी को कॉल करेगा, और फिर इसके साथ चिपकेगा (जब तक यह नीचे नहीं है ... और फिर एक और कोशिश करता है)।
2007 में वापस, मैंने निम्नलिखित परीक्षण किया है:
- मेरी वेबसाइट पर एक iframe जोड़ें, जैसे कि एक राउंड-रॉबिन प्रविष्टि की ओर इशारा करते हुए
http://roundrobin.test:10080/ping.php
- पृष्ठ को 3 PHP सॉकेट द्वारा परोसा गया, 3 अंतर IP पर सुनकर, सभी पोर्ट 10080 पर (मैं पोर्ट 80 पर परीक्षण नहीं कर सकता था, क्योंकि मेरी वेबसाइट उस पर चल रही थी)
- एक सॉकेट ( ए कहो ) यह जांचने के लिए था कि ब्राउज़र 10080 पोर्ट पर कनेक्ट हो सकता है (क्योंकि कई कंपनियां केवल मानक पोर्ट की अनुमति देती हैं)
- अन्य दो सॉकेट ( बी और सी कहते हैं ) को मक्खी पर सक्षम या अक्षम किया जा सकता है।
मैंने इसे एक घंटा चलने दिया, बहुत सारा डेटा था। परिणाम यह था कि सॉकेट ए पर हिट के 99.5% के लिए , मैं सॉकेट बी या सी पर हिट था (मैं एक ही समय में इन दोनों को अक्षम नहीं करता था, निश्चित रूप से)। ब्राउज़र्स थे: iPhone, क्रोम, ओपेरा, MSIE 6/7/8, ब्लैकबेरी, फ़ायरफ़ॉक्स 3 / 3.5 ... तो यह भी नहीं कि-संगत ब्राउज़र इसे सही तरीके से संभाल रहे थे!
आज तक, मैंने इसे फिर से कभी नहीं परखा, लेकिन शायद मैं एक दिन एक नया परीक्षण स्थापित करूंगा या जीथब पर कोड जारी कर दूंगा ताकि अन्य इसका परीक्षण कर सकें।
महत्वपूर्ण नोट: भले ही यह अधिकांश समय काम कर रहा हो, यह इस तथ्य को दूर नहीं करता है कि कुछ अनुरोध विफल हो जाएंगे । मैं POST अनुरोधों के लिए भी इसका उपयोग करता हूं, क्योंकि मेरा एप्लिकेशन काम नहीं करने की स्थिति में एक त्रुटि संदेश लौटाएगा, ताकि उपयोगकर्ता डेटा फिर से भेज सके, और संभवत: ब्राउज़र इस मामले में किसी अन्य आईपी का उपयोग करेगा और काम बचाएगा । और स्थैतिक सामग्री के लिए, यह वास्तव में बहुत अच्छा काम कर रहा है।
इसलिए यदि आप ब्राउज़रों के साथ काम कर रहे हैं, तो राउंड-रॉबिन डीएनएस का उपयोग करें, या तो स्थिर या गतिशील सामग्री के लिए, आप ज्यादातर ठीक रहेंगे। सर्वर एक लेन-देन के बीच में भी नीचे जा सकते हैं, और यहां तक कि सबसे अच्छे लोड-बैलेंसर के साथ भी आप इस तरह के मामले को संभाल नहीं सकते हैं। गतिशील सामग्री के लिए, आपको अपने सत्र / डेटाबेस / फ़ाइलों को समकालिक बनाना होगा, अन्यथा आप इसे संभाल नहीं पाएंगे (लेकिन यह वास्तविक लोड-बैलेंसर के साथ भी सही है)।
अतिरिक्त नोट: आप अपने स्वयं के आईपी का उपयोग करके व्यवहार का परीक्षण कर सकते हैं iptables
। उदाहरण के लिए, HTTP ट्रैफ़िक के लिए अपने फ़ायरवॉल नियम से पहले, जोड़ें:
iptables -A INPUT -p tcp --dport 80 --source 12.34.56.78 -j REJECT
( 12.34.56.78
जाहिर तौर पर आपका आईपी कहां है)
उपयोग न करें DROP
, क्योंकि यह फ़िल्टर किए गए पोर्ट को छोड़ देता है , और आपका ब्राउज़र टाइमआउट तक इंतजार करेगा। तो अब, आप एक सर्वर या दूसरे को सक्षम या अक्षम कर सकते हैं। सबसे स्पष्ट परीक्षण सर्वर ए को अक्षम करना है, पृष्ठ को लोड करना है, फिर सर्वर ए को सक्षम करना और सर्वर बी को अक्षम करना है। जब आप पृष्ठ को फिर से लोड करेंगे, तो आपको ब्राउज़र से थोड़ा इंतजार करना होगा, फिर यह सर्वर से लोड होगा एक बार फिर। क्रोम में, आप नेटवर्क पैनल में अनुरोध को देखकर सर्वर के आईपी की पुष्टि कर सकते हैं। के General
टैब में Headers
, आप एक नकली हेडर देखेंगे जिसका नाम है Remote Address:
। यह वह आईपी है जहां से आपको जवाब मिला है।
इसलिए, यदि आपको एक सर्वर पर रखरखाव मोड में जाने की आवश्यकता है, तो बस HTTP / HTTPS ट्रैफ़िक को एक iptables
REJECT
नियम से अक्षम करें , सभी अनुरोध अन्य सर्वर पर जाएंगे (एक छोटे से इंतजार के साथ, उपयोगकर्ताओं के लिए लगभग ध्यान देने योग्य नहीं)।