Gereksinimler: bulut veya donanım yük dengeleyicilerine, BGP protokollerine ve diğer her şeye erişemeyen her türlü ortam için çalışan pratik bir çözüme sahip olun.
Bir uygulamanın gelir talebi numarası bilinmiyor, ancak artan yük beklentisini korkmadan karşılayacak kadar yüksek olmalıdır.
Benzer bir yükleme niteliğine sahip bir uygulama bulalım, örneğin günlük kaydı deposu ve arama uygulaması. Bulduğum tane .
Ne istiyorlar:
- Kolektörler arasındaki yükü dengeleyin
- Toplayıcılardan biri ölürse veya sorun yaşıyorsa veri almaya devam etmemize izin veren hata toleransı sunun
- Günlük hacimlerimizdeki büyümeyle yatay ölçeklendirme
ELB hakkında ne denediler ve öğrendiler:
- Beklendiği gibi çalışmıyor
- Artan yük nedeniyle gecikme sorunları
- Yeterli izleme tesisi yok
- Çok fazla sınırlama (açık bağlantı noktaları ve protokol sayısı)
Route53 ile neden seçtiler:
- "Round robin oldukça basit bir yük dengeleme, ama bizim için verimlilik açısından iyi çalışıyor"
- "Route 53 yük devretme sağlık denetimlerinden yararlanıyoruz."
- "Bir koleksiyonerle ilgili bir sorun varsa, Route 53 bunu otomatik olarak hizmet dışı bırakır; müşterilerimiz herhangi bir etki görmez."
- Route 53 ile Ön Isınma Gerekmez
Route 53, büyük kütük hacimlerimiz, öngörülemeyen varyasyonlarımız ve işimizdeki sürekli büyüme göz önüne alındığında, Loggly'nin yüksek performanslı koleksiyonculardan yararlanmasının en iyi yolu olduğu ortaya çıktı. Toplayıcıların temel amaçlarına uyum sağlar: Ağ hattı hızında sıfır kayıpla veri toplamak ve Loggly'de kullandığımız tüm AWS hizmetlerinin esnekliğinden yararlanmamızı sağlar.
Bu özel örnek, bazı senaryolarda (günlük toplayıcı, reklam servisi veya benzeri) yük dengeleyicinin gereksiz olduğunu ve "DNS sağlık kontrolü yuvarlak Robin çözümünün" işini çok iyi yaptığını gösterir.
AWS'nin DNS yük devretme konusunda ne dediğini görelim :
DNS Yük Devretme ile Route 53, web sitenizdeki bir kesintiyi tespit edebilir ve son kullanıcılarınızı belirttiğiniz alternatif veya yedek konumlara yönlendirebilir. Route 53 DNS Yük Devretme, uygulamanızın her bir uç noktasının yukarı veya aşağı olup olmadığını belirlemek için düzenli aralıklarla uygulamalarınıza dünyanın her yerinden uç noktalardan Internet istekleri yaparak sağlık kontrollerine dayanır.
Bu teknik aynı zamanda ELB'yi (sadece bir not için gerekli değildir) daha sağlam hale getirir, yine RR + Sağlık Kontrolü'ne dayanır:
Route 53 DNS Yük Devretme, bu hata senaryolarının tümünü ELB ile perde arkasına entegre ederek işler. Etkinleştirildiğinde, Route 53 her bir ELB düğümü için sağlık denetimlerini otomatik olarak yapılandırır ve yönetir.
Şimdi sahne arkasında nasıl çalıştığını görelim . Açık olan soru, DNS önbelleği ile nasıl başa çıkılacağıdır:
Ancak, TTL istemciniz ve Route 53 arasındaki tüm katmanlar tarafından saygı görmüyorsa, DNS önbelleğe alma burada yine de bir sorun olabilir ("uzun kuyruk" sorununun ele alındığı önceki yazımıza bakın). Sonra bir "önbellek bozma" tekniği uygulayabilirsiniz: benzersiz bir alan adına istek gönderme
("http://<unique-id>.<your-domain>")
ve joker karakter kaynağı tanımlayın
Record "*.<your-domain>" to match it.
Algolia , müşteriniz ( davanızdaki JS) bununla başa çıkabiliyorsa oldukça iyi çalışan "müşteri yeniden deneme stratejisi" ni tanıttı :
API istemcilerimizde temel bir yeniden deneme stratejisi uyguladık. Her API istemcisi üç farklı makineye erişebilmek için geliştirilmiştir. Her kullanıcıyı üç farklı DNS kaydı temsil eder: USERIDID-1.algolia.io, USERID-2.algolia.io veUSERID-3.algolia.io. İlk uygulamamız, kayıtlardan birini rastgele seçip başarısızlık durumunda farklı bir kayıt ile yeniden denemekti.