Round Robin DNS को समझना
(blog.hyperknot.com)Round Robin DNS को समझना
-
Round Robin DNS क्या है?
- आम तौर पर जब किसी वेबसाइट को VPS पर होस्ट किया जाता है, तो DNS provider के कंट्रोल पैनल में एक single A record जोड़ा जाता है।
- Round Robin DNS में उसी subdomain के लिए कई servers निर्दिष्ट किए जाते हैं, जिससे load को कई servers में बाँटा जा सकता है और offline servers को अपने-आप पहचानकर online server चुना जा सकता है।
- यह load balancer का उपयोग किए बिना एक सरल और सुंदर समाधान देता है, और इसकी कोई लागत नहीं होती।
-
सिद्धांत रूप में यह कैसे काम करता है?
- RFC 8305 "Happy Eyeballs" के अनुसार, client को connection से पहले addresses को sort करना चाहिए।
- यह जाँच की जाती है कि server online है या offline, और online servers को ping time के आधार पर sort किया जाता है।
-
वास्तव में यह कैसे काम करता है?
- अमेरिका, यूरोप और सिंगापुर में 3 VPS बनाए जाते हैं, और Cloudflare में 3 proxy तथा non-proxy A records बनाए जाते हैं।
- हर server एक रंगीन image और host name प्रदान करता है।
Client के server चयन का व्यवहार
-
Chrome
- सभी locations में random चयन करता है, लेकिन एक बार चुनने के बाद उसी पर स्थिर हो जाता है।
- कुछ घंटों बाद फिर से मूल्यांकन करता है।
-
Firefox
- Chrome की तरह random चयन करता है और उसी पर स्थिर हो जाता है।
-
Safari
- हमेशा सही तरीके से सबसे नज़दीकी server चुनता है।
-
curl
- शुरुआत में सही नहीं हो सकता, लेकिन दूसरी बार चलाने पर सबसे नज़दीकी server पर ठीक हो जाता है।
-
Cloudflare
- client IP के आधार पर random location चुनता है और उसी पर स्थिर हो जाता है।
जब कुछ servers आंशिक रूप से offline हों तो client का व्यवहार
- सभी clients offline servers को पहचानते हैं और वैकल्पिक server चुनते हैं।
- Cloudflare offline servers को पहचान नहीं पाता, और अगर चुना गया server offline हो तो वही offline स्थिति में serve किया जाता है।
Cloudflare में सुधार के बिंदु
- Offline servers का पता लगाना चाहिए।
- सबसे कम latency वाले server को चुनने की क्षमता होनी चाहिए।
GN⁺ का सार
- Round Robin DNS कई servers में load बाँटने का एक तरीका है, जिसे load balancer के बिना भी सरलता से लागू किया जा सकता है।
- Browser और client के server selection के तरीके अलग-अलग होते हैं, और खासकर Safari सबसे नज़दीकी server चुनने में अच्छा है।
- Cloudflare के मामले में offline servers को पहचान न पाने की समस्या है, जिसे सुधारे जाने की ज़रूरत है।
- यह लेख Round Robin DNS के काम करने के तरीके को समझने में उपयोगी है, और server selection algorithm के अंतर को समझने के लिए दिलचस्प हो सकता है।
1 टिप्पणियां
Hacker News राय
DNS टीम से मौजूदा स्थिति के बारे में स्पष्टीकरण मांगा गया है, और जवाब मिलते ही साझा किया जाएगा। कोड अक्सर बदलता रहता है, इसलिए मौजूदा स्थिति को ठीक-ठीक समझना मुश्किल है। संभव है कि क्लाइंट IP और backend server के बीच connection persistence ही समस्या की वजह हो।
DNS load balancing जटिल समस्याएँ पैदा कर सकता है। golang HTTP2 client जब RR DNS का उपयोग करता है, तब समस्याएँ आ सकती हैं। कुछ मामलों में client नए server को खोज नहीं पाता।
MAX_CONNECTION_AGEसेट करके समय-समय पर client का connection काटा जा सकता है।service discovery के लिए कोई मानक समाधान पर्याप्त रूप से उपलब्ध नहीं है। request-based load balancer लागू करना और virtual IP का उपयोग करना, ताकि load balancer health check कर सके, शायद सबसे अच्छा तरीका हो सकता है।
SRV DNS record शुरुआती समाधान था, जिसमें सभी services को priority दी जा सकती थी, लेकिन राजनीतिक कारणों से HTTP client में इसका उपयोग नहीं हुआ। नए HTTPS और SVCB DNS record को load balancing के लिए नए समाधान के रूप में प्रस्तावित किया गया है।
जब server offline हो, तो connection refuse होने पर client अगले IP पर चला जाता है। लेकिन व्यवहार में server जवाब न दे सकता है, या connection बनने के बाद चुप रह सकता है। ऐसे में client timeout पर निर्भर रहना पड़ता है।
reliability का फैसला client side पर होता है। कुछ systems हमेशा सबसे कम IP address लौटाते हैं, जिससे समस्या हो सकती है। DNS-RR load balancer नहीं है; load balancer बेहतर समाधान है।
Perl में decoder लिखा गया है, और यह दावा किया गया है कि सब कुछ Perl में ही होना चाहिए।
RR-DNS सिर्फ load balancing के लिए उपयोगी है और अपने-आप server availability का पता नहीं लगाता। client में smart functionality जोड़नी पड़ती है।
अगर कोई server down हो जाए, तब भी दुनियाभर में फैले IP address होने से लोग जुड़े रह सकते हैं।
2000 के दशक में Amazon ने onsite host के लिए round robin DNS का इस्तेमाल किया था। उस समय यह load balancing का सबसे तेज़ तरीका था। लेकिन Wi‑Fi सबसे बड़ा bottleneck था।
Cloudflare Load Balancing का ज़िक्र है, हालांकि वास्तविक परीक्षण नहीं किया गया। Cloudflare offline server को अपने-आप detect करके दूसरे server पर switch कर सकता है।