Halo pembaca yang budiman 😀

Lama tidak posting karena akhir-akhir ini kesibukan cukup padat, dimulai dari kerjaan sampai urusan pribadi (so penting!!). Tempat baru dan suasana kerja baru, mulai banyak waktu kosong walaupun ruang untuk belajar juga tidak terlalu banyak. Ya wis, cukup curhatannya…

Kali ini saya akan berbagi pengalaman lama mengenai konfigurasi load balance di nginx, ya…itung-itung sebagai pengingat saya juga jikalau lupa. Untuk website dengan trafic yang tinggi load balance di nginx akan sangat membantu, karena kita bisa menempatkan satu web dibeberapa server dan seluruh server dapat saling berbagi beban akses, cakep kan… Kurang lebih seperti ini gambarannya :

nginxAkan lebih mantap lagi jika kita juga bisa lakukan clustering mysql, seberat apapun atau setinggi apapun trafic suatu website insya Allah akan dapat diatasi dengan baik. Untuk clustering mysql nya menyusul di tutorial berikutnya, sekarang kita bahas dahulu konfigurasi load balace di nginx :

Installasi Nginx :

Untuk penggunakan ubuntu cukup jalankan command :


apt-get install nginx

Pengguna Centos saya berikut link saja ya, silahkan dicoba sendiri : http://www.cyberciti.biz/faq/install-nginx-centos-rhel-6-server-rpm-using-yum-command/

Sebelum beralih ke konfigurasi kita bahas dahulu details dari gambar diatas :

  • Front-end server (FES)

NIC1-> eth0 dengan IP public misalnya 173.xxx.xxx.xxx
NIC2-> eth1 dengan IP private (local IP)  misalnya 10.10.2.100
NGinx sendiri akan running pada IP public di port 80 jadi 173.xxx.xxx.xxx:80

  • Back-end server 1 (BES1)

NIC1-> eth1 dengan IP private (local IP)  misalnya 10.10.2.101
http server (Eg: apache2) listening on 10.10.2.101:8080

  • Back-end server 2 (BES2)

NIC1-> eth1 dengan IP private (local IP)  misalnya 10.10.2.102
http server (Eg: apache2) listening on 10.10.2.102:8080

  • Back-end server 3 (BES3)

NIC1-> eth1 dengan IP private (local IP)  misalnya 10.10.2.103
http server (Eg: apache2) listening on 10.10.2.102:8080

Penggunaan IP private (local IP) akan memaksimalkan kinerja load balace NGinx, hal ini karena beban akan direquest melalui NIC atau network yang traficnya tidak tingggi.

Konfigurasi NGinx

Berikut ini contoh konfigurasi load balance NGinx yang pernah saya terapkan :

1. Silahkan buka file /etc/nginx/sites-enabled/default menggunakan edit kesukaan anda


upstream load_balance {
server 10.10.2.101:8080 weight=10 max_fails=3 fail_timeout=30s;
server 10.10.2.102:8080 weight=10 max_fails=3 fail_timeout=30s;
server 10.10.2.103:8080 weight=10 max_fails=3 fail_timeout=30s;
}
server {
listen 173.xxx.xxx.xxx:80;
server_name  www.jurmansyah.net;
access_log  /var/log/nginx/nginx.access.log;
error_log  /var/log/nginx/nginx_error.log debug;
location / {
proxy_pass         http://load_balance;
}
error_page   500 502 503 504  /50x.html;
location = /50x.html {
root   /var/www/nginx-default;
}
}

2. Reload dan restart NGinx

/etc/init.d/nginx reload
/etc/init.d/nginx restart

Ok cukup seperti itu, saat ini web www.jurmansyah.net sudah menggunakan load balance nginx. Selamat mencoba…