Yük dağıtıcıların yedekliliği nasıl sağlanır?
--
Bu flood’da Load Balancer - Yük Dağıtıcı
ların yedekliliğini sağlama yöntemlerinden biri olan VRRP - Virtual Router Redundancy Protocol
'u kısaca anlatacağım.
Sürekli olarak yük dağıtıcıların web ve uygulama sunucularının yüksek erişilebilirliğini sağlamakta kullanıldığını söyleriz fakat aslında yük dağıtıcılar SPoF - Single Point of Failure
riski taşırlar çünkü yük dağıtıcı işlev görmediğinde verilen servis bütünüyle erişilmez olur.
Her yönüyle yüksek erişilebilir bir sistem tasarlanmak isteniyorsa yük dağıtıcılardan başlanarak sisteme dahil olan bütün ağ elemanlarının da hataya karşı dayanıklı yani yedekli çalışması gerekmektedir. Neyse ki bunu sağlamaya yönelik mekanizmalar mevcuttur.
Yük dağıtıcılarda yüksek erişilebilirlik sağlayan mekanizmalardan biri olan VRRP
mimarisini daha iyi anlamak için önceki flood'da anlatılan Virtual IP
ve ARP
kavramlarına aşina olmak gerekmektedir. Virtual IP
için https://medium.com/@gokhansengun/f5750feaa530
ARP - Address Resolution Protocol
için ise yine aşağıdaki önceki flood'a göz atabilirsiniz. https://medium.com/@gokhansengun/45824b166908
İki yük dağıtıcı ile yüksek erişilebilir bir sistem kurmak için cluster IP’si olarak bu iki yük dağıtıcının IP’sinden farklı bir Virtual IP
(Floating IP
) kullanılır. İstemciler sisteme Floating IP
'den erişirler. Floating IP
, Master
- Aktif
yük dağıtıcıya atanır. Master
yük dağıtıcı istemcilerden Floating IP
için gelen ARP
isteklerine kendi MAC Adresi
ile cevap verir böylece trafik Master
yük dağıtıcıya gönderilir. Sistemdeki diğer yük dağıtıcı ise Backup
- Pasif
olarak adlandırılır üzerinden trafik akmaz ancak hazır bekler.
Yukarıda anlatılan durum aşağıdaki şekilde görselleştirilmiştir.
VRRP
ile yüksek erişilebilirliği sağlanan ağ elemanları birer Priority
numarası ile yapılandırılır. Yüksek erişilebilirliği sağlanan bütün ağ elemanları ulaşılabilir (normal) durumdayken trafik, Priority
'si en yüksek olan ağ elemanına yönlendirilecek şekilde aksiyon alınır. Bu sayede ağda aynı işlevi görebilen elemanlardan donanım olarak en güçlü olanının sürekli olarak Master
ya da Aktif
durumda olması garanti altına alınır. Diğer ağ elemanları ancak Priority
'si yüksek ağ elemanları ulaşılabilir değilse kontrolü alabilirler.
Yüksek erişilebilirlik sağlamak adına aynı işlevi görmek üzere bir araya gelen ağ elemanları birbirlerinin sağlık durumlarını VRRP
için ayrılmış 224.0.0.18
multicast IP üzerinden test ederler. Master
olarak belirlenmiş ağ elemanı multicast paketlere belirli bir süre cevap vermezse Backup
ya da Pasif
olarak belirlenmiş ağ elemanları birbirlerine multicast paketler göndererek yeni Master
'ı seçerler. Sadece iki ağ elemanının olduğu durumda kontrol Backup
olarak belirlenen ağ elemanına geçmiş olur.
Master
değişimi olduğunda ağda bulunan diğer elemanların Floating IP
ya da VIP
'in MAC
adresinin değişiminden haberdar edilmesi gerekir. Bu noktada Unsolicited ARP
veya Gratuitous ARP
adı verilen paketler ARP
tablolarının güncellenmesi için ağa broadcast
edilir.
Son olarak Linux’taki bir VRRP
uygulaması olan keepalived
programı ile üzerinde nginx
kurulu iki sunucuyu yüksek erişilebilir yaparak sistemin nasıl çalıştığını pratik olarak gözlemleyelim. Aşağıda Master
ve Backup
sunucuların keepalived
konfigürasyonu verilmiştir.
Yukarıdaki konfigürasyondan görüleceği üzere Floating IP
adresi 172.29.44.200
olarak belirlenmiştir. Master
ve Backup
olarak belirlenen web sunucuların adresleri de sırasıyla 172.29.44.101
ve 172.29.44.102
'dir.
Aşağıdaki ekran görüntüsü ilgili iki web sunucuya ulaşabilen başka bir bilgisayarın ARP
tablosunu göstermektedir. Görüleceği üzere 172.29.44.200
Floating IP
'nin MAC
adresi Priority
'si yüksek olan sunucunun MAC
adresi ile aynıdır, yani trafik bu sunucuya gelmektedir.
Master
'daki nginx
durdurulduğunda dışarıdaki bilgisayarın ARP
tablosunda meydana gelen değişim gösterilmiştir. Bu kez Floating IP
'nin MAC
adresi ikinci sunucunun MAC
adresi ile eşit hale gelmiştir, böylece Floating IP
'ye gelen trafik ikinci sunucuya yönlenecektir.