Yuk Dengeliyici Olarak OpenBSD

Yoğun bir servisiniz var ve bu yükü birden fazla sunucuya dağıtmak istiyorsunuz. Bu sunucuların önüne bir adet PF koyarak gelen trafiği bu sunucular arasında dengeli dagitabilirsiniz.

—-
Ws_farm = “{ 192.168.0.2, 192.168.0.3, 192.168.0.4 }”

rdr on $ext_if inet proto tcp from any to any port 80 -> $ws_farm \
round-robin sticky-address

—-

Kuralı ile güvenlik duvarına gelen 80. port istekleri arkadaki 3 sunucuya round-robin algoritması kullanılarak dağıtılıyor.

Bu tip bir yük dengeleme yapısında arkadaki sunuculardan birinin devre dışı kalması durumunda PF bundan haberdar olmayarak paketleri o sunucuya da göndermeye devam edecektir. Eğer sağlıklı bir yük dengeleme istiyorsak böyle bir yapı çok işimizi görmeyecektir. Bunun yerine slbd ya da artık yeni sürüm OpenBSD sistemlerde(4.1 -Mayis 1 2007) hoststated kullanabilirsiniz.

PF’in yaptığı yük dengeleme ve hostated arasındaki temel fark PF katman 3’u baz alarak bir yük dengeleme imkanı sunar, hostated se Katman 7 seviyesinde bir yük dengemele imkanı sunar. Yani hostated kullanarak uygulama seviyesindeki bir servisi kontrollü bir şekilde yük dağıtımına dahil edebiliriz.

Biraz daha açalım konuyu;

Klasik yük dengeleme sistemlerinde temel bazı problemler vardır. Bunlardan ilki arkada servis veren sistemlerden birinin üzerindeki servisin devre dışı kalması ve öndeki dengeleyici sistemin bundan haberdar olmayışı ve gereksiz yere paketlerin bir kısmını devre dışı kalan sunucuya göndermesi.

Bunu çuğu Load balancer arkada çalışan servisin portunu kontrol ederek çözer. Yani arkada çalıan servisin portu belirli aralıklarla kontrol edilir ve eğer ulaşılamazsa o makineye paketlerin gönderilmesi servis yeniden ayağa kalkana kadar durdurulur.

Peki şöyle bir senaryoda ne olur?

Arkada çalışan web uygulaması başka bir veri tabanına bağlanıyor ve bazı işlemleri yapıyor. Veritabanı sunucusunda bir problem var fakat web sunucu çalışıyor, Load balancer sistem de web sunucunun portunu kontrol ettiği için sistemi ayakta zannederek istekleri göndermeye devam ediyor. Yine bir sunucu işlevsel olarak devre dışı ve kayıplar…

Bunun önüne geçebilmek için Load balancer sistemler genelde web sayfasından bir değeri kontrol etmemize olanak tanır, mesela web sunucu üzerinde basit bir kod yazarak sunucunun bağlı olduğu bileşenler(veritabanı, ldap vs)i test edip sonucunu bir dosyaya yazdırırız. Bu dosyanın içeriğine de sistemin sağlıklı olup olmadğını anlamak için 1 ya da 0 yazdıralım. Eğer Load balancer sistem web sunucudan bu url’i çekip içerisindeki değeri yorumlayabiliyorsa değer 0 olduğunda sunucu sistemde problem olduğunu düşünerek paketleri göndermeyecektir.

OpenBSD Loadbalancer* ozelliklieri;

• Ethernet-based layer 2 loadbalancing
• IP-based layer 3 loadbalancing
• TCP-based layer 4+ loadbalancing
• Session-based layer 7 loadbalancing
• Active health checking of server pools
• Multiple and optimized loadbalancing algorithms
• Multi-protocol operation and optimization (HTTP, SSL, TCP, DNS, …)
• Session persistence and sticky addressing
• Gigabit performance with thousands of concurrent sessions
• Hardware SSL acceleration
• Firewall interaction and attack prevention
• Validated for PCI-DSS operation
• Linkbalancing with dynamic routing (BGP and OSPF)
• Unlimited users/connections*

*http://www.vantronix.com adresinden alinmistir

This entry was posted in OpenBSD. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

four + 1 =