DNS sunucuları zaten anycast kullanıyor. Daha fazla IP eklemek ölçeklenebilirliği artıracak mı?


9

RFC 1034 , DNS sunucuları için en az iki IP adresi atamamızı gerektirir. Ancak, herhangi bir yayın adresi kullanırsak artıklık tek bir IP adresiyle elde edilebilir. BGP anycast, yüzlerce hatta binlerce sunucuya iyi ölçeklenmiş gibi görünüyor.

Öyleyse, neden DNS sunucuları için neden birden fazla IP adresine ihtiyacımız var? Halihazırda herhangi bir yayın varsa, artıklığı artırır (kullanılabilirliğe katkıda bulunur), yoksa sadece bir efsane midir?

Yalnızca tek bir IP adresi kullanırsak ne gibi sorunlarla karşılaşmayı bekleyebiliriz ?

Bununla, 1.2.3.4bazı kurulumlar en az iki tane gerektirdiğinde ikincil DNS adreslerini tamamen atlamak veya ikinci adres için sahte bir IP (örn. ) Kullanmak demek istiyorum .

Yanıtlar:


16

Tek bir anycast IP adresi, size farklı IP öneklerindeki iki tek noktaya yayın IP adresiyle aynı yedekliliği sağlamaz.

Çoğunlukla işten çıkarmanın en zor sorunu, bir şey tamamen başarısız olduğunda değil, sağlık kontrollerini hala geçecek kadar yanlış davranıyorsa, ancak aslında işlevsel değildir.

Bir DNS sunucusunun düştüğü bir anycast DNS kurulumu gördüm, ancak paketler yine de bu DNS sunucusuna yönlendirilecekti. Ön ekin reklamını yapan her şey, DNS sunucusunun çöktüğünün farkında olmayabilir.

Söz konusu DNS sunucusunun yetkili bir DNS sunucusu değil, özyinelemeli bir çözümleyici olması daha da zorlaşır.

Böyle bir özyinelemeli çözümleyicinin hem istemcilerden sorgu almak için anycast adresine hem de yetkili DNS sunucularını sorgulamak için tek noktaya yayın adreslerine sahip olması gerekir. Ancak tek noktaya yayın adresleri düşerse, yine de yönlendirilmiş sorgular olacak kadar sağlıklı görünebilir.

Anycast, ölçeklenebilirlik ve gecikmeyi azaltmak için harika bir araçtır. Ancak fazlalık için yalnız kalmamalıdır.

Birden fazla gereksiz anycast havuzu kullanılabilirlik için iyi bir çözümdür. İyi bilinen bir örnek 8.8.8.8 ve 8.8.4.4'tür. Her ikisi de her noktaya yayın adresleridir, ancak hiçbir zaman aynı fiziksel DNS sunucusuna yönlendirilmemelidir (Google'ın işlerini iyi yaptığını varsayarak).

10 fiziksel DNS sunucunuz varsa, bunları her havuzda 5 sunucu ile 2 havuz veya her havuzda 2 havuz ile 5 havuz olarak yapılandırabilirsiniz. Bir fiziksel DNS sunucusunun aynı anda birden çok havuzda olmasını önlemek istiyorsunuz.

Peki kaç IP ayırmalısınız? Birbirinden bağımsız olarak herhangi bir yayın olarak yapılandırılabilen IP'lere sahip olmanız gerekir. Bu genellikle her havuz için / 24 IPv4 adres alanı veya / 48 IPv6 adres alanı ayırmanız gerektiği anlamına gelir. Bu, sahip olabileceğiniz havuz sayısını çok iyi sınırlayabilir.

Ayrıca, yetkili sunuculardan bahsediyorsak, tüm NS kayıtlarınız ve A ve AAAA tutkalınızla birlikte DNS yanıtı tek bir 512 bayt pakete sığmalıdır. Kök sunucular için bu 13 adrese kadar çalıştı. Ancak bu tutkal ve IPv6'yı içermediğinden, ulaşacağınız sayı daha düşük olacaktır.

Her havuz mümkün olduğunca coğrafi olarak dağıtılmalıdır. Avrupa'da 5 sunucunuz ve Kuzey Amerika'da 5 sunucunuz ve 2 yayın IP'si varsa, her kıtayı kapsayan bir havuz oluşturmazsınız. Avrupa'dan 2, Kuzey Amerika'dan 3, diğer 5 ise diğer havuza koydunuz.

2'den fazla anycast havuzunuz varsa, fiziksel bir sunucunun geçici olarak birden fazla havuzda olmasına izin verebilirsiniz. Ancak fiziksel bir sunucunun tüm havuzlarda aynı anda olmasına asla izin vermemelisiniz.

Herhangi bir yayın ve tek noktaya yayın birleştirmek mümkündür, ancak dikkatli olunmalıdır. İki havuz için IP'niz varsa, birleştirmezdim. Ancak çalışmak için yalnızca tek bir yayın IP'niz varsa, tek noktaya yayın IP'lerini de dahil etmek mantıklı olabilir. Sorun, tek noktaya yayın IP'lerinin dahil edilmesinin size iyi bir gecikme ve yük dengelemesi vermemesidir.

Fiziksel bir sunucu hem tek noktaya yayın hem de herhangi bir yayın tarafından kullanılabilir duruma getirilirse, kullanıcıların birincil ve ikincil sunucularla aynı sunucuya ulaşma riskini azaltabilir ve kapanırsa erişimi kaybedebilirsiniz. Bu, yalnızca herhangi bir yayın havuzunda olmayan sunucuların tek noktaya yayın adreslerini kullanarak veya kullanıcılara her zaman iki tek noktaya yayın adresi sağlayarak önlenebilir.

Karışıma ne kadar tek noktaya yayın adresi koyarsanız, anycast adresine daha az sorgu gönderilir ve gecikme ve ölçeklenebilirlik açısından anycast'ten daha az faydalanırsınız.


Ölçeklenebilirlik elde etmenin en iyi yolunun, herhangi bir yayın yerine birçok ikincil tek noktaya yayın adresi (ns1.alanadı, ns2.d, ns3.d ... ns300.d olarak adlandırmanın eski yolu) kullanmak olduğunu mu söylüyorsunuz?
Pacerier

@ Pacer Hayır, demek istediğim bu değil. Cevabımda bunu açıklığa kavuşturacağım.
kasperd

+1. Bir yönlendirme hatası, tek noktaya yayınınızı cehenneme (çıkmaz sokak) bile götürebilir. İkinci bir ayrı adrese sahip olmak, bunun için birden fazla "bilet" anlamına gelir;)
TomTom

2
+1 İkinci adres olarak sahte bir ip eklemenin korkunç bir fikir gibi geldiğini eklemek isterim
Reaces

1
@Pacerier birden fazla tek noktaya yayın adresi kullanarak yük dengeleme elde edersiniz. Sorun gecikme, istemciler hangi IP'lerin yakın ve hangilerinin uzak olduğunu bilmiyorlar. Aynı zamanda ölçeklendirilemez. A ve AAAA tutkal kayıtlarının 512 bayta sığmasını istiyorsanız, yalnızca yaklaşık 5 sunucuyu kullanabilirsiniz. Tek noktaya yayın ve birden çok tek noktaya yayının birleştirilmesi yük dengeleme için sorunludur, çünkü tek noktaya yayın adreslerinde herhangi bir noktaya yayın adresinden daha fazla yük alabilirsiniz.
kasperd

4

En iyi uygulama, farklı öneklerden en az iki adres kullanmak ve onlara iki farklı TLD altında bir ad vermektir. İsterseniz bu adreslerin ikisi de herhangi bir yerde yayınlanabilir. Yalnızca bir IP adresine sahip olmak size tek bir hata noktası verir. Bu adrese yönlendirme işe yaramazsa (yapılandırma hatası, herhangi bir yayın örneği düzgün çalışmıyor, önek ele geçirilmiş vb.), Tüm alanınıza erişilemez hale gelir.

Her yayın adresi, BGP'de yönlendirilebilmesi için en az bir /24IPv4 veya /48IPv6 önek gerektirir . Daha küçük (daha uzun) önekler genellikle birçok yerde genel yönlendirme tablosunda kabul edilmez.

Hiçbir zaman hiç bir DNS sunucusu olarak sahte bir IP adresine koydu. Çözücüler için ciddi gecikmelere neden olacaktır.


Daha da kötüsü, bu "sahte" IP adresi başka birinin adresidir. Sorguları alacaklardı. Tüm bu trafikten rahatsız olurlarsa, bir süre uzaklaşmak için yüksek bir TTL ile cevap gönderebilirler.
kasperd

@kasperd, special hakkında ne aittir hiç kimseye ait olan IP adreslerini?
Pacerier

1
@Pacerier RFC 1918, 4193 veya 6598 adres alanını kullanmak zararı sınırlar. Ancak yine de çözümün yavaşlamasına ve hatta başarısız olmasına neden olur.
kasperd

3

RFC 1034 yalnızca iki DNS sunucusuna ihtiyacınız olduğunu belirtir. Bu zorunlu bir gereklilik değil, bir öneri, bu yüzden ne yapacağınızı yapın. Ne olursa olsun, HA istiyorsanız, 2 DNS sunucunuza anycast kullanılarak aynı IP atanabilir ve bir DNS sunucusu başarısız olduğunda son kullanıcılarınızın fark edeceği tek şey, ağın geri dönüşü olarak anlık bir bağlantı eksikliğidir.

Özetle, evet anycast kullanmak RFC 1034 uyumlu olmak için yeterlidir.


Hmm, tek gereken tek bir IP adresi gerekiyorsa, Google neden DNS sunucuları için iki adres ( 8.8.8.8ve 8.8.4.4) sunuyor? Zaten herhangi bir yayınları var, neden sadece bir adres sunmuyorsunuz 8.8.8.8?
Pacerier

1
Tahminimce ağ yakınsaması sırasında bağlantıyı kesmemeliyim? Küresel bir oyuncu oldukları ve olası herhangi bir başarısızlık noktasını ortadan kaldırmak için mümkün olduğunca geniş kapsamlı olduklarından emin olmak istedikleri için mi? Tamamen emin değilim, ama hepimiz google olamayacağımızı biliyorum :)
Reaces
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.