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:
- Sistem paketlerini güncelleme
- HAProxy paketini yükleme
- 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’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, 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:
- 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.
- 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:
- Backend bölümüne option httpchk ekleriz
- HTTP metodu ve URL’yi http-check send ile belirleriz
- 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:
- PEM formatında sertifika dosyası oluşturma
- Özel anahtar ve sertifikayı birleştirme
- HAProxy yapılandırma dosyasına SSL direktiflerini ekleme
- 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.