Header Menu

Nginx ile Load Balancing ve Trafik Yönetimi resim

Nginx ile Load Balancing ve Trafik Yönetimi

Nginx ile Load Balancing ve Trafik Yönetimi

Nginx, güçlü bir HTTP ve ters proxy sunucusu olarak bilinir ve aynı zamanda yük dengeleme (load balancing) ve trafik yönetimi işlevlerini de yerine getirir. Yük dengeleme, birden fazla sunucunun iş yükünü paylaşarak, sistemin ölçeklenebilirliğini artırmaya ve yüksek erişilebilirlik sağlamaya yönelik bir tekniktir. Nginx'in bu işlevi, web trafiğini birden fazla backend sunucuya dağıtarak performansı optimize eder ve sistemin kapasitesini genişletir.

Nginx ile Yük Dengeleme Türleri

  • Round Robin (Sırayla Dengeleme): Bu varsayılan modda Nginx, istekleri sırayla her sunucuya dağıtır. Sunucuların hepsi eşit kapasitede olduğunda yaygın olarak kullanılır.

upstream backend {
    server server1.example.com;
    server server2.example.com;
}

server {
    location / {
        proxy_pass http://backend;
    }
}

  • Least Connections (En Az Bağlantı): Nginx, en az aktif bağlantıya sahip olan sunucuya trafiği yönlendirir. Bu yöntem, her sunucunun iş yüküne göre dengeli bir dağıtım sağlar ve yoğun trafiği olan sistemlerde daha verimlidir.

upstream backend {
    least_conn;
    server server1.example.com;
    server server2.example.com;
}

IP Hash (IP Tabanlı Yük Dengeleme): Bu yöntemde, istemcinin IP adresine göre her istemciye aynı sunucu atanır. Bu yöntem, örneğin, oturum verilerinin aynı sunucuda saklanması gerektiğinde (sticky sessions) kullanışlıdır.

upstream backend {
    ip_hash;
    server server1.example.com;
    server server2.example.com;
}
  • Weighted Load Balancing (Ağırlıklı Yük Dengeleme): Sunucuların farklı kapasiteleri olduğunda, Nginx sunuculara ağırlıklar atayarak güçlü sunuculara daha fazla istek yönlendirir. Bu, güçlü sunucuların daha fazla iş yapmasını sağlar.

upstream backend {
    server server1.example.com weight=3;
    server server2.example.com;
}

Trafik Yönetimi

Nginx, trafiği optimize etme ve yönetme konusunda da çeşitli özellikler sunar. Örneğin:

  • Health Checks (Sağlık Kontrolleri): Nginx, backend sunucularının durumunu izleyebilir ve sağlıksız sunuculara trafik yönlendirmemek için bu sunucuları otomatik olarak devre dışı bırakabilir. Bunun için Nginx Plus sürümü kullanılır.

  • Failover (Yedekleme): Eğer bir sunucu başarısız olursa, Nginx otomatik olarak diğer sunuculara geçiş yapabilir.

  • Timeout ve Retry: Nginx, belirli bir süre içinde yanıt vermeyen sunucular için bir "timeout" mekanizması belirleyebilir ve başarısız bağlantılar için "retry" uygulayabilir.

upstream backend {
    server server1.example.com;
    server server2.example.com;
    server server3.example.com backup;
}

server {
    location / {
        proxy_pass http://backend;
        proxy_connect_timeout 5s;
        proxy_read_timeout 30s;
        proxy_next_upstream error timeout http_500;
    }
}

  • Rate Limiting (Hız Sınırlandırma): Nginx, belirli bir istemciye veya IP adresine gelen istek sayısını sınırlandırarak trafiği yönetebilir. Bu özellik, DDoS saldırılarına karşı koruma sağlamak veya API'lerin aşırı yüklenmesini önlemek için kullanılır.

http {
    limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s;

    server {
        location /api/ {
            limit_req zone=mylimit burst=5;
        }
    }
}

  • Güvenlik Politikaları ve Filtreleme: Nginx, gelen ve giden trafiği filtreleyerek güvenlik duvarı işlevi de görebilir. Örneğin, belirli IP adreslerini engelleyebilir veya yalnızca belirli kullanıcı ajanlarına izin verebilir.

Özetle

Nginx, yük dengeleme ve trafik yönetimi için esnek ve güçlü bir çözüm sunar. Sırayla, en az bağlantı veya IP tabanlı dengeleme gibi farklı yöntemlerle istekleri backend sunucularına yönlendirebilir. Aynı zamanda, hız sınırlaması, sağlık kontrolleri, yedek sunucular ve zaman aşımları gibi trafik yönetimi mekanizmaları ile sistemin güvenli ve verimli çalışmasını sağlar.

27 Görüntüleme