NGINX LOAD BALANCER VE NGİNX – PHP-FPM WEB SUNUCU KURULUMU

Merhabalar bugun openx cluster yaparken nginx load balancer kullanmak zorunda kaldim bugun ki yasadigim deneyimleri de size aktarayim dedim. Benim yaptigim cluster yapi da 1 adet load balancing yapacak server 2 adet web server 1 adet veritabani mevcuttu.

Kurulumlari Centos 6.x surumune gore anlatacagim diger dagitim veya versiyonlar icin de aynisidir muhtemelen. Oncelikle yapmamiz gereken tum centos sunuculara nginx reposunu ve remi reposunu yuklememiz gerekiyor.

Nginx reposu icin asagidaki satirlari /etc/yum.repos.d altine nginx.repo adinda dosya olusturup icine yazip kaydetmeniz gerekiyor.

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

Remi reposunu kurmak icin de /etc/yum.repos.d dizini altina remi.repo adinda dosya olusturup asagidaki satirlari icine yazip kaydettiginiz vakit tamamlanmis olacaktir.

[remi]
name=Les RPM de remi pour Enterprise Linux $releasever - $basearch
mirrorlist=http://rpms.famillecollet.com/enterprise/$releasever/remi/mirror
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
failovermethod=priority

Repolarimizi ekledigimiz varsayarak ilerliyorum komut satirinda asagidaki yum komutunu uygulayin. LB icin php kisimlarini yazmayabilirsiniz. Fakat webler icin php yuklemelisiniz.

yum install nginx php php-fpm php-cli php-mysql php-pdo php-pear php-gd

bu komutla birlikte nginx ve php sistemimize kurulacaktir.

Kurulumlar tamamlandigina gore artik ayar islemlerine gecebiliriz.

Server listemizi hazirlayalim.

LB Ip: 10.1.1.1
Web1 Ip: 10.1.1.2
Web2 Ip: 10.1.1.3
Web3 Ip: 10.1.1.4 ( ayrica veritabani sunucusudur )

Ilk olarak Web 1, Web 2, Web 3 sunucumuzda php’yi yapilandiralim sirasiyla

/etc/php.ini dosyasini vim ya da nano ile acip date.timezone satirinin basindaki ; kaldirarak su sekilde degistirelim. date.timezone=”Europe/Istanbul”
cgi.fix_pathinfo degerini 0 yapalim.
Simdi nginx yapilandirmasina gecelim. Yine web sunucu olarak isaretledigimiz sunucularda /etc/nginx/conf.d/default.conf dosyasini acalim.

location / {
root /usr/share/nginx/html;
index  index.html index.htm;
}

yukaridaki index ile baslayan satira index.php ekleyelim yani asagidaki gibi olmasi gerekiyor

location / {
root /usr/share/nginx/html;
index  index.php index.html index.htm;
}

yine ayni dosya icindeki asagidaki satirlari bulup basindaki # leri silelim.

location ~ \.php$ {
root /usr/share/nginx/html;
fastcgi_pass unix:/tmp/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

bu sekilde duzenleyelim. SCRIPT_FILENAME kismini duzenlemeyi unutmayin 🙂 root parametresinde web root dizinini belirtmeniz gerekiyor bunu da unutmayalim.

Nginx ayarlarini da yaptiktan sonra php-fpm yapilandirmasina gecebiliriz. vim ya da nano ile /etc/php-fpm.d/www.conf ile dosyayi acip

listen = 127.0.0.1:9000

olan satiri asagidaki satir ile degistirelim.

listen = /tmp/php5-fpm.sock

daha sonra kaydedip cikalim bunu yapmamizdaki amac php-fpm unix socket kullandigi icin TCP overhead olayindan kurtulmamizi saglar.

Tum ayarlari yaptiktan sonra web sunucularinda asagidaki

chkconfig --levels 235 nginx on
chkconfig --levels 235 php-fpm on

komutlari uygulayalim bunlar sunucular reboot edildiginde acilista otomatik baslayacaktir sonrasinda ise

service php-fpm start
service nginx start

komutlarini uygulayin. Son olarak web 3 sunucusuna da dilerseniz

yum install mysql

diyerek mysql veritabanini yukleyin.

Evet web sunuculari ile ayarlarimizin sonuna geldik. Simdi load balancer yapacak sunucumuzu yapilandirmaya. Load balancer sunucusuna sadece nginx kurmustuk.

Load balancer olacak sunucumuz da vim ya da nano ile /etc/nginx/conf.d/default.conf u aciniz ve server { ile baslayan satirin hemen ustune asagidaki satirlari ekleyiniz.

upstream lb_units {
server 10.1.1.2 weight=10 max_fails=3 fail_timeout=30s;
server 10.1.1.3 weight=10 max_fails=3 fail_timeout=30s;
server 10.1.1.4 backup max_fails=3 fail_timeout=30s;
}

daha sonra ayni dosya icinde biraz asagida

location / {
root /usr/share/nginx/html;
index index.html index.htm;
}

satirlarini bulacaksiniz bu satirlari asagidaki gibi degistirip kaydedip dosyadan cikiniz.

location / {
#root /usr/share/nginx/html;
#index index.html index.htm;
proxy_pass http://lb_units; # Load balancing
}

ardindan

chkconfig --levels 235 nginx on

bu komutu uygulayalim ki load balancer sunucumuz da yeniden baslatildiginda nginx acilista otomatik baslasin.

asagidaki komutu uygulayarak nginx’i baslatalim.

service nginx start

test edelim hersey yolunda gittiyse sistemimiz calisacaktir.

dipnot: yazim hatalarim varsa kusura bakmayin

  • ysfkc
  • 22/09/2015

Yorum Yaz:

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