NGINX LOAD BALANCER KURULUMU & KONFİGÜRASYONU

Estimated read time 5 min read

Bu yazıda, Ubuntu’da yalnızca yerel testler veya geliştirme amacıyla Nginx yük dengelemesi yapılandırması kurulumu ve konfigürasyonu anlatılmaktadır. 

İlk olarak Nginx’ i kurmamız gerekiyor. Terminal açıldıktan sonra sudo su yazıp şifrenizi girin ve root konumuna geçin. Ardından aşağıdaki fotoğrafta olan 2 komutumuzu sırayla yazın.

Nginx’imiz başarıyla yükledik, ‘sudo systemctl start nginx’ komutunu terminale yazarak Ngnix sunucumuzu başlatıp şunları yapıyoruz;  

Fotoğrafta gözüken cd /etc/nginx/conf.d dizinine gidin. Ardından ls komutunu çalıştırdıktan sonra göreceksiniz ki default.conf adlı dosyamız burada mevcut. İsminin default olması sizi endişelendirmesin isterseniz silip başka isimde bir .conf dosyası oluşturabilirsiniz. İsmin önemli olmamasının sebebi ‘cd /etc/nginx’ ardından ‘nano nginx.conf ’ yazdığımızda ve önümüze çıkan kod parça satırlarından en alta inersek şöyle bir satır göreceğiz: 

Bu /etc/nginx/conf.d/ dosyası içindeki bütün .conf uzantılı dosyaları include et demek, yani dediğim gibi ismin default olmasının bir sebebi yok, içinde bir veya birden fazla .conf olması onun include edileceği anlama gelir. 

 Şimdi ise default.conf dosyasını düzenleyip yük dengelenmesini (Load Balancer) ayarlamaya geldi. Öncelikle ‘cd /etc/nginx/conf.d’ yazıp klasörümüze girelim. Ardından ‘nano default.conf’ diyip editörümüzü açalım. Şöyle bir ekran görüyor olmamız gerekiyor: 

Bu ekranı gördükten sonra yük dengelenmesi (Load Balancer) ayarlarımızı gireceğiz. Aşağıdaki fotoğrafta da görüldüğü gibi ilk olarak location kısmına şu kodları ekleyeceğiz. 

Buraya ‘proxy_pass http://backend;’ ve add_header X-Backend-Server $upstream_addr;’ kodlarını yapıştırıyoruz. proxy_pass kodumuzun işlevi, proxy_pass ile gelen isteklerin az sonra yazacağımız upstream serverlarına yönlendirmesidir. Add_header kısaca başlık ekliyor, gerekli bir kod değil. Sırada upstream serverlarımız var. Açtığımız default.conf dosyasının en üst satırına gelip şu kodları yazıyoruz:  

upstream bloğu, Nginx yük dengelemesini yapılandırmak için kullanılan bir yapıdır. Bu blok, yük dengeleyiciye yönlendirilen istekleri işleyecek olan arka uç sunucularını tanımlar.  server 127.0.0.1:8000; ve server 127.0.0.1:8001;: Bu satırlar, yük dengelemesi yapılacak arka uç sunucularının adreslerini ve portlarını belirtir. Örneğin, 127.0.0.1 adresi yerel sunucunun IP adresini temsil eder ve 8000 ve 8001 portları sunucuların dinlediği portlardır. Yani, gelen istekler yük dengeleyici tarafından bu iki sunucu arasında paylaştırılacaktır. Burdan sonra CRTL+O ya basıp ENTER tuşuna basıyoruz. Sonrasında CTRL+X tuşuna basıp geri geliyoruz. 

Ardından netstat -tulnkomutunu terminale yapıştırıp enterlayarak portlarımıza bakıyoruz. 8001, 8002 ve 8003 portlarını seçmiştik biz. Bakalım portlarımız açık ve LISTEN durumunda mı. 

Fotoğrafta da görüldüğü üzere 8001 portum ve 8002 portum açık ve LISTEN komutunda ama 8003 yok. Olmamasının sebebi Sunucumuzun güvenlik duvarı (firewall) varsayılan olarak gelen bağlantıları engelleyebilir. Portları dinlemeye başlamadan önce, güvenlik duvarı kurallarını güncellemeliyiz. Ubuntu’da güvenlik duvarı yöneticisi olarak “UFW (Uncomplicated Firewall)” sıklıkla kullanılır. Sırada 8003 portunu da açalım ve LISTEN durumuna getirelım. 

sudo ufw allow 8003/tcpkomutunu kullanarak 8003 numaralı bir TCP portuna gelen bağlantılara izin vermek için güvenlik duvarı kurallarını yapılandırıyoruz. Ekledikten sonra netstat –tuln koduyla tekrar bakabilirsiniz eklenmiş mi eklenmemiş mi diye. Aşağıdaki fotoğrafta ben önceden eklediğim için Existing Rule diyor, sizde Added Rule tarzı bir cevap döndürecektir. 

Sıra bu portları ‘LISTEN’ durumuna getirmekte.  Bende 8001 ve 8002 hali hazırda LISTEN komutuna getirdiğim için 8003 portunun nasıl LISTEN komutuna getireceğimi anlatacağım. İlk olarak terminale python -m http.server 8003komutunu yapıştırıyoruz, ardından aşağıdaki fotoğraftaki gibi Serving Http …. yazısı çıkıyor. Portun çalışıp çalışmadığını ‘http://0.0.0.0:8003’ adresine giderek kontrol edebilirsiniz. Error veriyorsa bir adımda yanlış yapmış olmalısınız.  

Yazdıktan sonra şöyle bir sayfa çıkması lazım:  

Bütün adımları yaptıktan sonra Nginx sunucumuzu terminale ‘sudo systemctl restart nginx ’ yazarak yeniden başlatıyoruz. 

Tarayıcınıza localhost yazıp Enter tuşuna basarsanız Yük Dengeleme operasyonumuzun başarıyla tamamlandığını göreceksiniz. 

Eğer localhost yazınca bu ekranı görüyorsanız başarılı olmuşsunuzdur. Bu ekran yerine başka bir ekran görmek istiyorsanız upstreamdaki serverları düzenleyerek değiştirebilirsiniz. 

Algoritmalara gelecek olursak, 3 tane algoritmamız vardır: 

  • Round Robin: Default olarak gelen algoritmadır. Bir syntaxı yoktur otomatik olarak ilk bu algoritmayla gelir. İstekleri sırayla her bir hedef sunucuya yönlendirir. En popüler yük dengeleme (Load Balancer) algoritmasıdır. 
  • Least Connections: İstekleri en az bağlantısı olan hedef sunucuya yönlendirir. 
  • IP Hash: Kullanıcının IP adresine göre belirli bir hedef sunucuya yönlendirir.  

Hangi algoritmayı kullanmak istersek yukarıda gösterdiğim gibi upstreamin içine ‘least_conn;’ veya ‘ip_hash;’ komutlarını yazarak kullanabiliriz. 

batikan

Araştırma ve geliştirme, veri analizi veya yapay zeka uygulamaları geliştirme gibi alanlarda bilgili ve deneyimli Bilgisayar Mühendisi. Üniversitede Bilgisayar Mühendisliği bölümünü 3 yılda tamamlamış, Görüntü İşleme, Java Spring, Makine Öğrenmesi, Derin Öğrenme ve Blockchain gibi alanlarda bilgi ve deneyim sahibi. Yapay Zeka gibi alanlarda bilgili, yenilikçi çözümler üretmeye hevesli, takım çalışmasına ve yeni fikirlere açık biri.

You May Also Like

More From Author

+ There are no comments

Add yours