NGINX ile Load Balancer Konfigürasyonu

GİRİŞ
Merhabalar, bugün NGINX uygulamasının Load Balancer özelliğinden bahsedeceğim. NGINX, Unix/Linux tabanlı bir web server uygulamasıdır. Web yayını yaptığı gibi, Load Balancer olarak da kullanılabilmektedir. İsterseniz hemen başlayalım. İşletim sistemi olarak Ubuntu 18.04 üzerinde işlem sağlayacağım. NGINX uygulamasının makinenize kurulu olduğunu varsayıyorum.
LOAD BALANCER YAPISININ OLUŞTURULMASI
İlk olarak, /etc/nginx/conf.d/ dizinine loadbalancer.conf adında bir file oluşturalım.
|
1 |
vi /etc/nginx.conf.d/loadbalancer.conf |
Oluşan config dosyasına aşağıdaki biçimde, yönlendirme yapacağımız makineleri ekleyelim. Eğer SSL içerikli bir site’a yönlendirme yapacaksanız, 443’lü portu ayrıca yönlendirmeniz gerekecektir.
|
1 2 3 4 5 6 7 8 |
upstream nurigundogan_net { server 192.168.1.100:80; server 192.168.1.101:80; } upstream nurigundogan_netSSL { server 192.168.1.100:443; server 192.168.1.101:443; |
Daha sonra aşağıdaki komut ile site config dosyamızı oluşturalım.
|
1 |
vi /etc/nginx/sites-enabled/nurigundogan_net.conf |
Oluşturduğumuz dosyanın içine aşağıdaki configleri girelim.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
server { listen 80; server_name nurigundogan.net; return 301 https://$server_name$request_uri; } server { listen 443 ssl http2; server_name nurigundogan.net; ssl_protocols TLSv1.2; ssl on; ssl_certificate /etc/nginx/certificates/nurigundogan_net.crt; ssl_certificate_key /etc/nginx/certificates/nurigundogan_net.key; location / { proxy_pass $scheme://nurigundogan_netSSL; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } |
Yukarıdaki config dosyasını açıklayacak olursak;
- En başta, bize 80 portundan gelen tüm istekleri 443 portuna yönlendiriyoruz.
- İkinci kısımda dinlenecek port, http versiyonu, ssl protokollerini ve ssl sertifikamızın path’ini belirtiyoruz.
- Üçüncü ve son kısımda, sitenin loadbalancer.conf’da belirttiğimiz makinelere proxy_pass komutuyla yönlendirilmesini sağlıyoruz.
LOAD BALANCER SEÇENEKLERİ
Load balancer işlemini farklı özelliklerde yapabiliriz.
- Round Robin: İstekler, sunucu yükü göz önünde bulundurularak, sunuculara eşit olarak dağıtılır. Bu yöntem default olarak çalışır. (bunu etkinleştirmek için config eklemeye gerek yoktur.)
- Least Connection: En az yük içeren sunucuya göre dağıtım yapılır. Aynı zamanda sunucu yükü dikkate alınarak istek gönderilir. Örnek config:
|
1 2 3 4 5 6 7 8 9 10 |
upstream nurigundogan_net { least_conn; server 192.168.1.100:80; server 192.168.1.101:80; } upstream nurigundogan_netSSL { least_conn; server 192.168.1.100:443; server 192.168.1.101:443; |
- IP Hash: Bu yöntem, sürekli aynı IP adresinden gelen istekleri, sunucu online olduğu sürece hep aynı makineye yönlendirir. Örnek config:
|
1 2 3 4 5 6 7 8 9 10 |
upstream nurigundogan_net { ip_hash; server 192.168.1.100:80; server 192.168.1.101:80; } upstream nurigundogan_netSSL { ip_hash; server 192.168.1.100:443; server 192.168.1.101:443; |
Bu yazıda size NGINX ile Load Balancer konfigürasyonunu anlatmaya çalıştım. Bir sonraki yazıda görüşmek üzere…