Nginx ile Load Balancer Kurulumu

Load balance ( yük dengeleme ), web sitemizi ve uygulamamızı ölçeklendirmek, performansını arttırmak ve felaket durumlarına karşı önemi arttırmak açısından en uygulanabilir yollardan bir tanesidir. Nginx’i sunucularınızın kaynak kullanılabilirliğini ve verimliliğini artırmak için basit ama güçlü bir yük dengeleyici olarak yapılandırılabiliriz.

Load balance ayarlarımız öncesinde sunucumuza nginx’i kurmamız gerekiyor. Kurulumu daha önce yapmadıysanız CentOS 8’de Nginx Kurulumu dökümanı ile Nginx’in Centos sunuculara kurulumunu inceleyebilirsiniz.

virtualHost ile Upstream

Nginx kurulu olan sunucumuzda /etc/nginx/conf.d/sanalpro.test.conf config dosyasını aşağıdaki gibi temel ayarlarla basit bir load balancer oluşturma işlemi gerçekleştirebiliriz. Tabi, load balancer tipi ve isteklerimize göre konfigürasyonumuzda pek çok değişiklik yapabiliriz.

upstream remote_servers  {
   server web01.sanalpro.test;
   server web02.sanalpro.test;
   server web03.sanalpro.test;
}

server {
   listen   80;
   server_name  sanalpro.test www.sanalpro.test;
   location / {
     proxy_pass  http://remote_servers;
   }
}

Tabi işlemler sonrası nginx’i de yeniden başlatıyoruz.

systemctl restart nginx

Load Balancing Seçenekleri

Config dosyamızda farklı upstream seçenekleri ile load balancerımızı farklı tercihlerimize göre sunuculara yönlendirme yapmasını sağlayabiliriz. Örneğin, en az bağlantı yapılan sunucuya yönlendirme yapması için config dosyamızdaki upstream bölümü aşağıdaki gibi olmalıdır.

upstream remote_servers {
   least_conn;
   server web01.sanalpro.test; 
   server web02.sanalpro.test;
   server web03.sanalpro.test;
}

Ağırlıklı ( weight ) olarak belli bir sunucuya erişim sağlanmasını istiyorsanızda aşağıdaki gibi düzenleme yapabiliriz.

upstream remote_servers  {
   server web01.sanalpro.test weight=1;
   server web02.sanalpro.test weight=2;
   server web03.sanalpro.test weight=5;
}

Kullanıcıların daha önceden ulaştıkları sunuculara tekrar ulaşmasını ve oturum kalıcığı sağlanmasını istiyorsakta ip_hash yöntemini kullanabiliriz.

upstream remote_servers {
   ip_hash;
   server   web01.sanalpro.test;
   server   web02.sanalpro.test;
   server   web03.sanalpro.test;
 }

Yorum yapın