Genel

085 – Linux Sunucularda NGINX ile Yük Dengeleme (Load Balancing) Nasıl Yapılır?

nginx-load-balance
Share

Yük dengeleme (load balancing), web uygulamalarının performansını ve güvenilirliğini artırmak için kullanılan önemli bir tekniktir. NGINX, yük dengeleme ve ters proxy (reverse proxy) özellikleriyle bu alanda öne çıkan bir araçtır. Bu makalede, Linux sunucularda NGINX ile yük dengeleme işleminin nasıl yapılacağını adım adım anlatacağız.

Yük Dengeleme Nedir ve Neden Önemlidir?

Yük dengeleme, gelen ağ trafiğini birden fazla sunucuya dağıtarak sunucuların aşırı yüklenmesini önler ve uygulamanın kesintisiz çalışmasını sağlar. Bu, yüksek kullanılabilirlik, ölçeklenebilirlik ve hata toleransı sağlar. Yük dengeleyici, trafiği en uygun sunucuya yönlendirerek yanıt sürelerini ve kullanıcı deneyimini iyileştirir.

NGINX ile Yük Dengeleme Yöntemleri

NGINX, farklı yük dengeleme yöntemlerini destekler. En yaygın yöntemler şunlardır:

  1. Round Robin: İstekleri sırayla sunuculara dağıtır.
  2. Least Connections: En az bağlantıya sahip olan sunucuya istekleri yönlendirir.
  3. IP Hash: İstemcinin IP adresine göre istekleri belirli bir sunucuya yönlendirir.

Adım Adım NGINX ile Yük Dengeleme

nginyuk-dengeleme-load-balance

1. NGINX Kurulumu

İlk adım olarak, NGINX‘i yükleyin. Aşağıdaki komutları kullanarak NGINX‘i yükleyebilirsiniz:

sudo apt update &&sudo apt install nginx

2. Sunucu Bloğu Yapılandırması

NGINX yapılandırma dosyasını (/etc/nginx/nginx.conf veya /etc/nginx/sites-available/default) açın ve sunucu bloğunu yapılandırın. Örneğin, üç arka uç sunucu (backend server) kullanarak round robin yöntemini uygulamak için aşağıdaki ayarları kullanabilirsiniz:

http {
upstream backend {
server backend1.sunucucozumleri.com;
server backend2.sunucucozumleri.com;
server backend3.sunucucozumleri.com;
}

server {
listen 80;
server_name sunucucozumleri.com;

location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}

Bu yapılandırma, NGINX‘in gelen tüm istekleri backend1.sunucucozumleri.com, backend2.sunucucozumleri.com ve backend3.sunucucozumleri.com sunucularına sırayla yönlendirmesini sağlar.

3. Least Connections Yöntemi

En az bağlantıya sahip sunucuya istekleri yönlendirmek için upstream bloğuna least_conn; direktifini ekleyin:

upstream backend {
least_conn;
server backend1.sunucucozumleri.com;
server backend2.sunucucozumleri.com;
server backend3.sunucucozumleri.com;
}

4. IP Hash Yöntemi

İstemcinin IP adresine göre istekleri belirli bir sunucuya yönlendirmek için ip_hash; direktifini kullanın:

upstream backend {
ip_hash;
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}

5. NGINX’i Yeniden Başlatma

Yapılandırma dosyasını kaydettikten sonra, NGINX‘i yeniden başlatın:

sudo systemctl restart nginx

Yapılandırma dosyasındaki hataları kontrol etmek için şu komutu kullanabilirsiniz:

sudo nginx -t

Yük Dengeleme ile İlgili İpuçları

1. Health Check (Sağlık Kontrolü)

NGINX‘in arka uç sunucuların durumunu izlemesi için sağlık kontrolleri ekleyin. Bu, arızalı sunuculara istek gönderilmesini önler. Sağlık kontrolü eklemek için NGINX Plus veya üçüncü taraf modüller kullanabilirsiniz.

2. SSL/TLS Desteği

Yük dengeleme işlemi sırasında SSL/TLS kullanarak güvenliği artırabilirsiniz. Bunun için ssl_certificate ve ssl_certificate_key direktiflerini kullanarak SSL/TLS yapılandırmasını ekleyin.

3. Yük Dengeleme Algoritmaları

Web uygulamanızın gereksinimlerine en uygun yük dengeleme algoritmasını seçin. Farklı algoritmalar, farklı performans ve yük yönetimi avantajları sunar.

Sonuç

NGINX ile yük dengeleme (load balancing), web uygulamalarınızın performansını ve güvenilirliğini artırmak için etkili bir yöntemdir. Round robin, least connections ve IP hash gibi farklı yöntemleri kullanarak trafiği etkin bir şekilde dağıtabilirsiniz. Bu adımları izleyerek, yüksek performanslı ve ölçeklenebilir bir web sunucusu yapılandırabilirsiniz.

NGINX ve yük dengeleme hakkında daha fazla bilgi edinmek ve yapılandırma seçeneklerinizi genişletmek için resmi NGINX belgelerini incelemenizi öneririz.