İçeriğe geç
HAProxy

HAProxy, TCP ve HTTP trafiğini backend havuzlarına dağıtan L4/L7 yük dengeleyicidir. Yalnızca istekleri sırayla göndermek için değil, servis sağlığına ve erişim politikalarına göre trafik kararları almak için kullanılır. Kapasitesi; donanım, TLS, bağlantı süresi ve kuralların maliyetine bağlıdır; tek bir istek/saniye değeri bütün kurulumları temsil etmez.

ACL (Access Control List) motoru, gelişmiş health check sistemi (HTTP, TCP, MySQL, PostgreSQL, Redis), stick-table’lar (rate limiting + session persistence) ve runtime API’si HAProxy’yi kurumsal yük dengeleme için olgun ve güçlü kılar. Nginx ile karşılaştırıldığında daha sade ve yük dengelemeye odaklı bir araçtır.

Mono’nun yaklaşımı

Mono kurulumlarında HAProxy genelde trafik girişinin ilk katmanı olarak konumlanır. Standartlarımız:

  • HA pattern: Keepalived + VRRP ile aktif-pasif çift; veya Anycast + ECMP ile aktif-aktif (BGP destekli ortamlarda).
  • TLS: Sertifika yaşam döngüsü ve backend şifreleme politikası tanımlanır; runtime üzerinden sertifika güncelleme kullanılan sürüm ve yöntemle doğrulanır.
  • Health check: Sade option httpchk yerine expect ile gerçek 200 kontrolü; uygulama health endpoint’i (/health/ready ile bağımlılık kontrolü).
  • Logging: Yapılandırılmış loglar merkezi sisteme aktarılır; request ID korelasyon sağlar, tek başına dağıtık tracing oluşturmaz.
  • Stick-table: Rate limit, brute-force koruması, IP reputation tracking.
  • Stats: stats socket Unix soketi → Data Plane API → Mono operasyon ekibi yönetir.

Tipik kurulum

Kurumsal trafik girişi:

  1. Cloudflare/Akamai (CDN + DDoS koruma).
  2. HAProxy aktif-pasif çifti (keepalived ile VIP’i yönetir).
  3. HAProxy backend pool’ları → uygulama sunucuları (sticky cookie ile session affinity).
  4. Health check ile sağlıksız node’lar otomatik dışlanır; recovery’de yavaş yavaş trafik alır (slowstart).

PostgreSQL/MariaDB cluster önünde HAProxy + custom healthcheck (örn. Patroni REST endpoint’i) ile otomatik primary keşfi çok yaygın bir Mono pattern’idir.

Yaygın sorunlar ve çözümler

  • Bağlantı reddi: Servis erişimi, bağlantı kuyruğu ve dosya tanıtıcı kullanımı birlikte kontrol edilir.
  • TIME_WAIT artışı: Önce bağlantı yeniden kullanımı ve trafik profili incelenir; kernel ayarları körlemesine değiştirilmez.
  • Yavaş failover: Sağlık tespiti, ağ devri ve istemci yeniden bağlanma süreleri ayrı ölçülür.
  • Oturum kaybı: Stick-table senkronizasyonunun uygulama oturum verisini çoğaltmadığı unutulmaz.
  • Bütün backend’lerin sağlıksız görünmesi: Health check beklentisi, ağ, TLS ve bağımlılık durumu araştırılır; kontroller devre dışı bırakılarak sorun gizlenmez.

Round-robin, leastconn ve oturum sürekliliği

Kısa ve benzer maliyetli HTTP isteklerinde round-robin anlaşılır bir başlangıçtır. Uzun bağlantılarda leastconn, aktif bağlantı sayısını dengelemeye yardımcı olabilir. Ancak bağlantı sayısı CPU maliyetiyle aynı değildir; tek bir ağır istek ile çok sayıda hafif istek eşdeğer yük oluşturmaz. Algoritma kararı uygulama davranışıyla sınanmalıdır.

Kaynak IP’ye bağlı yönlendirme ortak NAT kullanan kullanıcıları tek backend’de toplayabilir. Cookie tabanlı affinity bu sorunu azaltabilir, fakat node arızasında oturumu kurtarmaz. Stateless uygulama veya ortak oturum deposu, kapasiteyi serbest dağıtmayı kolaylaştırır. Stick-table ise uygulama veritabanının yedeği değil, trafik kararlarına yardımcı olan durum bilgisidir.

Gerçek yüksek erişilebilirlik hangi katmanları kapsar?

KatmanDoğrulanması gereken
Backend havuzuHazır olmayan node’a yeni trafik gönderilmemesi
HAProxy node’larıProxy kaybında istemcinin başka giriş noktasına ulaşması
AğVIP/VRRP veya bulut yük dengeleyici modelinin ortamda desteklenmesi
Uygulama verisiOturum ve yazma işlemlerinin arıza sonrasında tutarlılığı

İki HAProxy node’u kurmak tek başına bütün bu koşulları karşılamaz. VRRP her bulut ağında aynı biçimde çalışmaz; ağ platformunun desteklediği IP devri veya yönetilen yük dengeleyici mekanizması gerekebilir. DNS ile geçişte önbellek süreleri ve mevcut bağlantılar hesaba katılır. Çok agresif sağlık eşikleri geçici gecikmeleri arıza sanarak sürekli node çıkarıp eklemeye neden olabilir.

Devreye alma ve yönetim API’si

Data Plane API yalnızca ticari sürüme ait bir özellik değildir; açık kaynak olarak da kullanılabilir. Yönetim arayüzünün erişimi sınırlanmalı, API ile değişen konfigürasyonun Git’teki kaynakla nasıl uzlaştırılacağı belirlenmelidir. Runtime değişikliklerinin yeniden başlatma sonrasında korunup korunmadığı ayrıca kontrol edilir.

Mono’nun değerlendirmesinde failover testi sağlıklı trafiğin sürmesi kadar hatalı işlemin nasıl raporlandığını da kapsar. Ödeme gibi tekrar edilmesi riskli istekler, uzun bağlantılar ve bakım sonrası havuza dönüş ayrı senaryolardır. Teslimat; backend envanteri, sağlık koşulları, alarm eşikleri ve işletim ekibinin uygulayabileceği bakım prosedürünü içerir.

İlgili hizmetlerimiz

Sıkça sorulan sorular

HAProxy mi Nginx mi yük dengeleyici olarak?
Saf L4/L7 yük dengeleyici işi için HAProxy öne çıkar: ACL motoru zengin, slow-start desteği, advanced health check’ler. Static content + reverse proxy + LB kombinasyonu için Nginx daha pratiktir. Çoğu Mono kurulumunda iki katman: HAProxy (L4) → Nginx (L7).
HAProxy Community mi Enterprise mi?
Community açık kaynak trafik yönetimi sunar; Data Plane API de açık kaynak olarak kullanılabilir. Enterprise değerlendirmesi ticari destek ve gereken ek güvenlik/işletim özelliklerine göre yapılmalıdır. Özellik kapsamı ilgili ürün ve sürüm için doğrulanır.
Stickiness'i nasıl sağlarız?
Üç seçenek: source IP hash (en basit, NAT’lı kullanıcılarda dağılım sorunu), cookie-based (uygulama veya HAProxy oluşturur), stick-table + URL/header. Mono varsayılanı: cookie-based; stateless servislerde stickiness gerekmez.
TLS terminasyonu HAProxy'de mi yapılmalı?
HAProxy TLS terminasyonu için kullanılabilir; karar sertifika yaşam döngüsü, backend şifreleme ve gözlemlenebilirlik sorumluluklarıyla birlikte verilir. TLS sürümü, cipher politikası ve oturum yeniden kullanımı kullanılan sürümle doğrulanır; sertifika yönetimi için Data Plane API veya harici bir araç tercih edilebilir.

Bir sonraki dönüşümü birlikte planlayalım.

Ekibimiz teknik gereksinimlerinizi anlamak ve hızlıca prototip çıkarmak için hazır.