DNS Ayarları İle Yük Dengeleme (Round Robin DNS Load Balance)
Merhaba arkadaşlar, bu yazımızda DNS tabanlı yük dengeleme (dns-based load balance) konusunda bilgi vermeye çalışacağız. Bahseceğimiz yöntem round robin dns olarakta bilinir (round robin algoritması wiki).
Nasıl Çalışır ?
Round robin dns aynı domain için birden fazla A (Host) Record girilmesi yöntemi ile çalışmaktadır. Ve sistem gelen istekleri sunuculara paylaştırır. Aslında paylaştırma dediğimiz kesinlikle o anki yük durumuna vs bakılıp değil round robin algoritmasıyla yapmasıdır. Algoritma sunucuları sıraya dizip gelen isteği ilk sıradaki sunucuya gönderir ve o sunucuyu en arkaya gönderir. Böylelikle istekler sunuculara dağılmış olur. Sunucu o an çalışmıyor olsa bile istek gönderilir.
Nasıl Yapılır ?
Öncelikle yeni sunucu (bu domain e ekleyeceğimiz sunucu) üzerinde domain tanımlaması gerekmektedir.
Domaininiz için varsayılan en az bir tane A (host) kaydınız bulunması gerekir. Siz buna ek olarak ikinci yada kaç tane sunucunuz varsa onlar için ekstra A (host) kayıtları girmeniz gerekmektedir.
Eğer hosting üzerinde bu işlemi yapıyorsanız bu kayıtları girerken sizden Host IP ve TTL bilgilerini isteyecekdir. Host kısmına önceki kaydınızda ne yazıyorsa (genellikle @ olur, bu tüm subdomainler demek oluyor) onu yazmanız gerekiyor, IP kısmı yeni sunucunun IP adresi, TTL ‘in önceki kayıtta olduğu gibi kalmasını öneriyoruz.
Bir örnek üzerinden gidelim. Biz sameurl.com domaini için round robin dns yapmak istiyor olalım. Bu kapsamda yeni bir hosting aldık yada yeni bir sunucu ekledik ve izleyeceğimiz adımlara bakalım.
sameurl.com için mevcut A (Host) Record:
sameurl.com IN A 173.201.166.19
Adım 1: Öncelikle yeni server üzerinde domain kaydı.
Adım2: Yeni A record.
sameurl.com için yeni A (Host) Record:
sameurl.com IN A 173.201.166.19
sameurl.com IN A 173.201.2.35
Bu ayarları yaptıktan sonra isteklerin her iki sunucuya da gittiğini göreceksiniz. Bu işlemi test etmek için Web Projeleri İçin Test Ortami Oluşturmak konulu yazımıza göz atmak isteyebilirsiniz.
Avantajları Nelerdir ?
- Sunucu yük paylaşımı
- Yük dengeleme için en ucuz yöntem olması
- Bir sunucu down olduğunda diğeri ile devam edebilme (down olanın kaydını silmek gerekebilir) dolayısıyla yedek sunucu özelliği
- Paylaşımlı hostinglerde rahatlıkla kullanabilme (eğer hosting firması size dns konusunda değişiklik imkanı veriyorsa)
Dezavantajları Nelerdir ?
- Sunucuların farklı ayar, program versiyonu vb durumlardan dolayı bir sunucuda normal çalışan kodun diğerinde çalışmama ihtimali (aynı site için birden fazla sunucuyla çalışan her sistemde olabileceği gibi)
- Access log kullanıyorsanız iki sunucuya ayrı ayrı log yazılması
- Session kullanıyorsanız ve session path disk ise bir sonraki istekte aynı sunucuya gitmeme ihtimali olduğundan session düşmesi (birden fazla sunucu ile çalışıldığında karşılaşılabilir)
- Tabi ki yapılan her değişikliğin her iki tarafa da yapılması ve dosyaların tamamen senkronize olması
- Diske yazılan verilerin sadece ilgili sunucuda olması (ekstra bir önlem almazsanız diğer sunucuya gitmemesi)
- Uzak lokasyonlar arasında kullanırsanız ortak database ‘e erişmede aynı sunucuya göre yavaşlık ihtimali
öncelikle kendi adıma teşekkür ederim.çok güzel bir paylaşım olmuş. uzun zamandır aradığım ve merak ettiğim konulardan birisi idi. ayrıca bu konu ve uzak lokasyonlara dağıtılmış uygulamalar için daha başka yöntemler ve yazılarınızın olacağını düşünüyorum.
merhaba bir sorum olacak bu roundrobin uygulamasını sunuculardan biri fail over olma durumunda kullanabilirmiyiz ? teşekkürler
Merhaba Nuknettin,
Hayır, “round robin dns” yöntemi sunucunun up olup olmadığını anlayamaz.
Bunu kendi sunucunuza (web hosting değil) yük dengeleme yazılım yada donanımı kurarak yapmanız gerekir. HAProxy, Citrix Net Scaler vb.
o zaman öncelikli bir fail olmayacak dns sunucusu kurup bunun üzerinde dediğiniz gibi bir uygulama geliştirmek gerek anladığım kadarıyla. peki cloudflare ile bunu yapabiliyormuyuz acaba bir bilginiz var mı bu konuda?
cloudflare bildiğim kadarıyla sadece CDN hizmeti veriyor. Bu aynı işi görmez.
cloudflare netscaller gibi bir cihaz ile bunu yapıyor diye biliyorum.
biraz daha açabilir misiniz?
Güzel bir yazı olmuş emeğinize sağlık. Hemen deneyeyim.
Şimdi aklımda ki soru şu;
İki farklı ip de hostingim var. bunları cloud flare ile A kayıtlarını tanımlasam, domain üzerinden giriş yapıldığından SQL verileri iki sunucuya mı yazılıyor yoksa birinde yazılırken diğerinde yazılmıyor mu?
Dosya yüklerken bir sunucuda yüklenir diğerinde yüklenmez demişsiniz ?
Yazı için teşekkür ederim.