Blog

Nginx Load Balancer Konfigürasyonu ve Dağıtık Mimari

Merhabalar, sunucunuzun internet hızı çok yüksek ( 1 Gbit ya da devasa 10Gbit ) olsa da belli bir client sayısı ile sınırlı malesef. Bu yüzden var olan sayfamızı host ederken tek bir sunucu yetmiyebiliyor. Aynı anda 30.000 kişinin girdiği dinamik bir sayfayı apache ile ayakta tutabilmek çok büyük başarı ( apache 2.4 ve php 5.6 ) Bu yüzden Nginx ile bunları sağlayabilirsiniz.

 

Öncelikle 1 tane sunucumuzu hem load balancer hem de s1 olarak belirliyoruz.

Diğer 2 sunucumuz s2 ve s3 olsun. s4 s5 diye çoğaltabiliriz.

Domain adımız emrekaratasoglu.com olsun

diğerleri de sırasıyla  ( subdomainler )

s1.emrekaratasoglu.com

s2.emrekaratasoglu.com

s3.emrekaratasoglu.com

olsun.

 

Öncelikle bir adet emrekaratasoglu.com için conf oluşturuyoruz. bunlar vhost olarak geçiyor.

server {
listen 80;
server_name emrekaratasoglu.com;

location / {
proxy_pass http://myapp1;
}

Gördüğünüz gibi bu sayfaya gelen herşey myapp1’e gidicek. Bir de myapp1 tanımlamamız gerek

S1 ve emrekaratasoglu aynı sunucu düşündüğümüz için s1’i de 8080’den dinletelim

s1 conf

server {
listen 8080;

server_name s1.emrekatatasoglu.com:8080 www.s1.emrekatatasoglu.com:8080;

}

s2.conf

server {
listen 80

server_name s2.emrekatatasoglu.com

}

s3.conf

server {
listen 80

server_name s2.emrekatatasoglu.com

}

 

Artık emrekaratasoglu.com conf dosyamız

upstream myapp1 {
server s1.emrekatatasoglu.com:8080;
server s2.emrekatatasoglu.com weight=4;
server s3.emrekaratasoglu.com weight=4;
}
server {
server_name www.emrekaratasoglu.com;
return 301 http://emrekaratasoglu.com$request_uri;
}

server {

listen 80;

server_name emrekaratasoglu.com;

}

location / {
proxy_pass http://myapp1;
}

Bu şekle döndü .

 

Bu ne işimize yaradı,

herhangi bir kullanıcı sisteme geldiğinde %40 s3 ‘e %40 s2’ye %20 s1 ‘e gelecek ve yaptığım test sonucu

10 Gbit lik sunucuda yük testi yaptığımda 10k’yı göremezken

aynı sunucuya sanallaştırmayla 4 server kurup load balance conf yaptığımda 10k’yı geçmekte.

 

 

 

Leave a Comment

Your email address will not be published. Required fields are marked *