HAProxy ile Yük Dengeleme: Başlangıç Rehberi

Aralık 10, 2024
Haproxy

Modern web uygulamalarının artan trafik yükünü tek bir sunucu ile yönetmek neredeyse imkansız hale geldi. Bu sorunu yakından biliyoruz ve çözümü için HAProxy gibi güçlü bir yük dengeleme aracına ihtiyaç duyuyoruz.

HAProxy, sunucularımız arasında trafiği akıllıca dağıtarak performans ve güvenilirlik sorunlarını çözmemize yardımcı oluyor. Yapılandırması basit, performansı yüksek ve enterprise seviyesinde güvenlik özellikleri sunuyor.

Bu rehberde, HAProxy kurulumundan başlayarak, yük dengeleme stratejilerini, sunucu sağlık kontrollerini ve SSL terminasyonunu adım adım inceleyeceğiz. Temel kavramlardan başlayarak, production ortamında kullanabileceğiniz pratik örnekler ve çözümler sunacağız.

HAProxy Kurulum ve Temel Yapılandırma

HAProxy kurulumuna başlamadan önce sistemimizin gereksinimlerini kontrol etmeliyiz. Temel bir HAProxy kurulumu için minimum donanım gereksinimleri oldukça mütevazıdır – 1 CPU çekirdeği ve 1 GB RAM yeterli olacaktır.

Sistem gereksinimleri ve kurulum adımları

Ubuntu sistemimizde HAProxy’yi kurmak için aşağıdaki adımları takip ediyoruz:

  1. Sistem paketlerini güncelleme
  2. HAProxy paketini yükleme
  3. Servisi etkinleştirme

Kurulum için terminal üzerinden şu komutu çalıştırıyoruz: sudo apt-get update && sudo apt-get install haproxy

Temel yapılandırma dosyası oluşturma

HAProxy Access Logs Dashboard

HAProxy’nin yapılandırma dosyası /etc/haproxy/haproxy.cfg konumunda bulunuyor. Temel bir yapılandırma için global ve defaults bölümlerini oluşturmamız gerekiyor. Global bölümünde log ayarları ve güvenlik parametrelerini, defaults bölümünde ise timeout değerleri gibi varsayılan ayarları belirliyoruz.

İlk yapılandırma testi ve doğrulama

Yapılandırmamızı test etmek için haproxy -c -f /etc/haproxy/haproxy.cfg komutunu kullanıyoruz. Bu komut, yapılandırma dosyasını kontrol eder ve herhangi bir hata varsa bizi bilgilendirir. HAProxy’yi başlatmadan önce bu test kritik önem taşır.

Yapılandırmamız doğruysa, servisi başlatmak için şu komutu kullanıyoruz: sudo systemctl start haproxy

Servisin durumunu kontrol etmek için: sudo systemctl status haproxy

Sistemin yeniden başlatılması durumunda HAProxy’nin otomatik olarak başlaması için: sudo systemctl enable haproxy

Linux terminal komutlarına dair daha fazla bilgi için Linux Komutları Rehberi yazımıza göz atabilirsiniz.

Yük Dengeleme Stratejileri

Yük dengeleme stratejileri, HAProxy’nin en güçlü özelliklerinden biridir. Biz bu bölümde en etkili üç stratejiyi inceleyeceğiz.

Round Robin algoritması implementasyonu

Round Robin Algoritması ile Load Balancer

Round Robin, en basit ve anlaşılır yük dengeleme algoritmamızdır. Bu algoritma gelen istekleri sırayla sunuculara dağıtır. Yapılandırmamızda balance roundrobin parametresini kullanarak bu algoritmayı aktif hale getiriyoruz. Round Robin’in güzelliği, tüm sunucuları eşit kullanması ve implementasyonunun basit olmasıdır.

Least Connection yöntemi kurulumu

Daha dinamik bir yaklaşım arıyorsak, Least Connection metodunu tercih ediyoruz. Bu yöntem, en az aktif bağlantıya sahip sunucuya yeni istekleri yönlendirir. Yapılandırmada balance leastconn direktifini kullanıyoruz. Bu algoritma, özellikle değişken işlem sürelerine sahip uygulamalarda Round Robin’den %4 daha iyi performans gösteriyor.

Oturum yönetimi (Session Persistence)

Oturum yönetimi, kullanıcıların aynı sunucuya bağlı kalmasını sağlayan kritik bir özelliktir. İki temel yöntem sunuyoruz:

  1. Cookie Tabanlı Persistence: HTTP modunda çalışırken kullanılır. Backend yapılandırmamıza cookie direktifini ekleyerek, kullanıcının tarayıcısına bir çerez yerleştiririz.
  2. IP Tabanlı Persistence: Hem TCP hem de HTTP modunda çalışır. Backend bölümüne stick-table ve stick on src direktiflerini ekleyerek, kullanıcının IP adresine göre oturum devamlılığını sağlarız.

Oturum yönetimi özellikle e-ticaret siteleri ve kullanıcı oturumu gerektiren uygulamalar için vazgeçilmezdir. Sunucu çökmesi durumunda HAProxy, kullanıcıyı otomatik olarak başka bir sunucuya yönlendirir.

Sunucu Sağlık Kontrolleri

Sunucularımızın sağlığını sürekli izlemek, yük dengeleme stratejimizin başarısı için kritik önem taşır. HAProxy’de sağlık kontrolleri, yalnızca sağlıklı sunucuların trafiği karşılamasını sağlar.

Sağlık kontrolü parametreleri

HAProxy’de aktif sağlık kontrolleri, sunucularımıza düzenli aralıklarla bağlantı kurmayı dener. Başarısız kontroller belirli bir eşiği aştığında, sunucu otomatik olarak devre dışı bırakılır. Temel parametrelerimiz şunlardır:

  • check: Sunucu satırına eklenerek basit TCP kontrollerini etkinleştirir
  • inter: Kontroller arası süreyi belirler (varsayılan 10 saniye)
  • rise: Sunucunun tekrar aktif edilmesi için gereken başarılı kontrol sayısı
  • fall: Devre dışı bırakılması için gereken başarısız kontrol sayısı

Özel kontrol scriptleri oluşturma

HTTP uygulamalarımız için daha detaylı kontroller yapmak istediğimizde, özel HTTP kontrolleri oluşturabiliriz. Bunun için:

  1. Backend bölümüne option httpchk ekleriz
  2. HTTP metodu ve URL’yi http-check send ile belirleriz
  3. Beklenen yanıt kodunu http-check expect ile tanımlarız

Ayrıca, sunucularımızın sistem kaynaklarını daha yakından izlemek için harici agent programları kullanabiliriz. Bu programlar, sunucu üzerinde çalışarak detaylı sistem bilgilerini HAProxy’ye iletir.

Hata durumu yönetimi

Hata yönetiminde pasif sağlık kontrollerini de kullanırız. Bu kontroller, canlı trafiği izleyerek hataları tespit eder. Bir sunucu başarısız olduğunda:

  • Sunucu otomatik olarak devre dışı bırakılır
  • Trafik sağlıklı sunuculara yönlendirilir
  • Kontroller devam eder ve sunucu iyileştiğinde tekrar devreye alınır

error-limit parametresi ile art arda kaç başarısız isteğin sunucuyu devre dışı bırakacağını belirleriz. on-error parametresi ise hata durumunda yapılacak işlemi tanımlar.

SSL Terminasyonu ve Güvenlik

Güvenlik, yük dengeleme çözümümüzün en kritik bileşenlerinden biridir. HAProxy’nin güçlü SSL terminasyonu ve güvenlik özellikleriyle sistemlerimizi nasıl koruyabileceğimizi inceleyelim.

SSL sertifikası yapılandırması

SSL terminasyonu sayesinde, tüm şifreleme işlemlerini HAProxy üzerinde gerçekleştiriyoruz. Bu yaklaşım, backend sunucularımızın yükünü önemli ölçüde azaltır. OpenSSL entegrasyonu ile güvenli veri transferini sağlıyoruz.

SSL sertifikamızı yapılandırmak için şu adımları izliyoruz:

  1. PEM formatında sertifika dosyası oluşturma
  2. Özel anahtar ve sertifikayı birleştirme
  3. HAProxy yapılandırma dosyasına SSL direktiflerini ekleme
  4. TLS versiyonunu minimum TLSv1.2 olarak belirleme

Güvenlik başlıkları ve ACL kuralları

ACL’ler (Access Control Lists) sistemimizin güvenlik duvarı gibi çalışır. Bu kurallarla istenmeyen trafiği engelleyebilir ve güvenlik politikalarımızı uygulayabiliriz. Güvenlik başlıklarımızı şu şekilde yapılandırıyoruz:

  • X-Frame-Options: Clickjacking saldırılarına karşı koruma
  • X-XSS-Protection: Cross-site scripting saldırılarını engelleme
  • X-Content-Type-Options: MIME-type sniffing’i önleme

ACL kurallarımızla HTTP 1.0 protokolü üzerinden gelen şüpheli istekleri otomatik olarak engelliyoruz. Ayrıca, kullanıcı ajanı (User-Agent) kontrolü yaparak potansiyel kötü niyetli botları tespit ediyoruz.

DDoS koruması implementasyonu

DDoS saldırılarına karşı çok katmanlı bir koruma stratejisi uyguluyoruz. PacketShield teknolojisi ile paket selini kontrol altına alıyor ve kernel seviyesinde işlenmeden önce zararlı paketleri engelliyoruz.

Global Rate Limiting özelliğimiz ile hem bağlantı hem de uygulama katmanında eşik değerleri belirleyebiliyoruz. Global Profiling Engine sayesinde yük dengeleyici kümelerimiz genelinde istemci davranış kalıplarını izliyor ve anormal aktiviteleri tespit ediyoruz.

Güvenlik katmanlarımızı şöyle sıralıyoruz:

  • Erişim Kontrol Listeleri (Layer 1)
  • İstemci Parmak İzi (Layer 2)
  • Gerçek Zamanlı Küme Çapında İzleme (Layer 3)
  • Web Uygulaması Güvenlik Duvarı (Layer 4)

Bu çok katmanlı güvenlik yaklaşımı, sistemlerimizi modern siber tehditlere karşı güçlü bir şekilde korur. HAProxy Enterprise ile gelişmiş bot yönetimi ve istemci parmak izi özellikleri sayesinde, zararlı trafiği legitim kullanıcılardan ayırt edebiliyoruz.

Sonuç

HAProxy, modern web uygulamalarımızın vazgeçilmez bir bileşeni haline geldi. Kurulumdan güvenliğe kadar incelediğimiz tüm özellikler, HAProxy’nin neden lider yük dengeleme çözümü olduğunu açıkça gösteriyor. Sağlam yapılandırma seçenekleri, akıllı yük dengeleme stratejileri ve güçlü güvenlik özellikleriyle sistemlerimizi hem performanslı hem de güvenli tutmamızı sağlıyor.

Başarılı bir HAProxy implementasyonu için sağlık kontrollerini düzenli yapılandırmayı ve güvenlik önlemlerini sürekli güncellemeyi unutmayın. Sunucularınızın performansını yakından izleyin ve trafik desenlerinize en uygun yük dengeleme stratejisini seçin. SSL terminasyonu ve DDoS koruması gibi güvenlik özelliklerini aktif kullanarak, sistemlerinizi modern tehditlere karşı koruyabilirsiniz.

HAProxy Hakkında Sıkça Sorulan Sorular

HAProxy’nin temel kurulum adımları nelerdir?

HAProxy kurulumu için önce sistem paketlerini güncelleyin, ardından HAProxy paketini yükleyin ve servisi etkinleştirin. Ubuntu’da “sudo apt-get update && sudo apt-get install haproxy” komutu ile kurulum yapılabilir.

HAProxy’de sunucu sağlık kontrolleri nasıl yapılır?

HAProxy, sunucuların sağlığını düzenli aralıklarla kontrol eder. Temel TCP kontrolleri veya özel HTTP kontrolleri yapılandırılabilir. Başarısız kontroller belirli bir eşiği aştığında, sunucu otomatik olarak devre dışı bırakılır.

HAProxy ile SSL terminasyonu ve güvenlik nasıl sağlanır?

HAProxy, SSL sertifikalarını yapılandırarak şifreleme işlemlerini üstlenebilir. Ayrıca, ACL kuralları ile istenmeyen trafiği engelleyebilir ve güvenlik başlıkları ekleyebilir. DDoS koruması için çok katmanlı bir güvenlik stratejisi uygulanabilir.

CyberSkills Hub

CyberSkillsHub, siber güvenlik dünyasının yenilikçi ve teknoloji meraklısı bir figürüdür. CyberSkillsHub’un en büyük özelliği, Akıllı Sınav sistemidir, bu sistem sayesinde öğrencilerin bilgi eksikliklerini anında belirleyebilir ve onlar için özel kurslar tasarlayabilir. Bu dinamik karakter, sadece en yeni ve en güçlü güvenlik teknolojilerine hakim değil, aynı zamanda öğrencilerin ihtiyaçlarını anlamaya odaklanmış bir eğitmen olarak da öne çıkmaktadır. İster bir başlangıç seviye öğrencisi olun, ister deneyimli bir profesyonel, CyberSkillsHub, sizin siber güvenlik yolculuğunuzda yanınızda olacak güvenilir bir rehberdir. İnsanlarla etkileşime geçme yeteneği ve teknolojiye olan tutkusu, CyberSkillsHub'u öğrencilere kişiselleştirilmiş, etkili ve anlamlı eğitim sağlama konusunda benzersiz kılar. Siber güvenliği herkes için erişilebilir ve anlaşılır kılmak, CyberSkillsHub’un misyonunun temelidir.