Her tarayıcının yuvarlak robin DNS'yi ele almak için kendi yöntemi vardır, bugün bu sorunu araştırmak için biraz zaman harcadım ve yanıtlarını davranışlarını gösteren tarayıcılara sınırlandıracak uygulama kanıtı bulduğumdan cevabımı güncellemeye devam edeceğim.
Google Chrome
Google Chrome (kullanılan v58), bir adres (A, AAAA, CNAME) için tüm ana bilgisayar girişlerini isteyecek ve bunları bir diziye ( adres_listesi ) koyacaktır . Daha sonra Chrome, ilk IP'den sonuncuya kadar her IP adresinde bir soket açmaya çalışır, krom en hızlı veya en yakın IP'yi denemez, ilk IP'nin (yukarı akış dns çözümleyicileriniz tarafından verilen) en iyi IP olduğunu varsayar. Testlerimde bind ve windows dns sunucuları arama başına farklı bir IP sırası verir ve her bir IP'ye bant genişliğinde 50/50 bölünmüş gibi bir şey verir. Bu işlevsellik,chrome://net-internals/#events&q=type:SOCKET%20is:active
Kıvrılma (libcurl / 7.54.0)
Curl ayrıca bu başarısızlık işlevine sahiptir, ancak --connect-timeout
kromdaki varsayılandan çok daha uzundur, krom hemen başarısız olur, Curl yoktur. Libcurl kullanırsanız ve bir IP'nin başarısız olduğu bir round-robin dns örneğinde hayatta kalmak istiyorsanız, (kromda çalışır ancak kodda değil) bu değeri daha düşük belirttiğinizden emin olun.
DEFAULT_CONNECT_TIMEOUT: 0 bana bunun curl ile mümkün olmadığını düşündürdü.
* After 149990ms connect time, move on!
Her iki tarayıcıda da IP yapışkan , DNS'de verilen TTL'yi takip ettiler ve ttl'nin süresi dolduğunda (krom bunu dahili olarak tutar, her istekte kıvrılma sorar), ip seçimi yukarıda açıklandığı gibi her seferinde gerçekleştirilir.
Ne anlama geliyor? DNS-RR bazı sistemler için uygundur, ancak yük devretme için tasarlanmamıştır. DNS görünümlü tüm sonuçların (gerçek bir kaynak) geçerli ve trafik sunmak için kullanılabilir olmasını beklemelisiniz. IP'nin kullanılabilirliğini sağlamanın sanal kayan IP'ler, BGP / Yönlendirme hileleri gibi birçok yolu vardır. . Bunları kullanın .
Yalnızca IPv4 ortamında yapılan tüm testler, test etmek için yeterli altyapı bulunduğunda çift yığınlı sonuçlarla geri dönecektir.
Bu değişikliklerin IPv6-Fallback RFC Happy Eyeballs'un bir yan etkisi olduğunu tahmin ediyorum
Güncelleme
Yararlı bir değerlendirme olan RR DNS, uygulama hatalarına değil, yalnızca yük dengelemesine yardımcı olabilir, düğümlerinizden birinin 503'ü varsa, trafiğiniz 503'lerde% 40-60 oranında hizmet verirsiniz. Listelenen tüm IP'lerin ulaşılabilir olması durumunda geçerli çalışma uç noktaları olduğu varsayılmıştır.