Skip to content

November 20, 2010

10

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
Toplam 10 Yorum Yorum Yaz
  1. nuknettin
    Jan 27 2012

    ö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.

    Reply
  2. nuknettin
    Feb 22 2012

    merhaba bir sorum olacak bu roundrobin uygulamasını sunuculardan biri fail over olma durumunda kullanabilirmiyiz ? teşekkürler

    Reply
    • Feb 22 2012

      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.

      Reply
    • nuknettin
      Feb 22 2012

      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?

      Reply
    • Feb 22 2012

      cloudflare bildiğim kadarıyla sadece CDN hizmeti veriyor. Bu aynı işi görmez.

      Reply
      • Kayhan KAYIHAN
        Jul 25 2012

        cloudflare netscaller gibi bir cihaz ile bunu yapıyor diye biliyorum.

        Reply
        • mustafa
          Dec 8 2012

          biraz daha açabilir misiniz?

          Reply
  3. Ahmet KAPIKIRAN
    Sep 25 2012

    Güzel bir yazı olmuş emeğinize sağlık. Hemen deneyeyim.

    Reply
  4. mustafa
    Dec 18 2012

    Ş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 ?

    Reply
  5. mesut
    Apr 10 2017

    Yazı için teşekkür ederim.

    Reply

Sizin fikriniz nedir? Lütfen aşağıdaki formu kullanarak yorum yapın.

(gerekli)
(gerekli)