Load Balancing
Load balancing adalah sebuah konsep yang gunanya untuk menyeimbangkan beban atau muatan pada infrastruktur TI sebuah perusahaan.
Dalam hal ini, nginx menggunakan algoritma round robin sederhana. Third-party module yang digunakan adalah http upstream hash.
Round Robin
Algoritma Round Robin (RR) didisain untuk sistem time sharing. Algoritma ini mirip dengan penjadwalan FCFS (First Come First Served), namun preemption ditambahkan untuk switch (peralihan proses) antara proses. Antrian ready diperlakukan atau dianggap sebagai antrian sirkular. CPU menglilingi antrian ready dan mengalokasikan masing-masing proses untuk interval waktu tertentu sampai satu time slice /quantum. [read more]
Load Balancing dengan nginx
Dalam tulisan ini menggunakan nginx sebagai front-end server.
.:: konfigurasi pada vhost / nginx.conf
[root@server01 conf]# cd /etc/nginx/conf.d/[root@server01 conf.d]# nano idprayoga.com.conf#isi file konfigurasiupstream bagi {server 10.100.100.98;server 10.100.100.99;server 10.100.100.100;}server {listen 80;server_name idprayoga.com www.idprayoga.com;access_log /var/log/nginx/idprayoga.com.access.log ;error_log /var/log/nginx/idprayoga.com.error.log ;location / {proxy_pass http://bagi;include /etc/nginx/conf.d/proxy.conf;}}
.:: restart nginx
Tips-Trix
Tips-Trix untuk mencoba Load Balancing jika hanya memiliki 1 server.
Dalam contoh tulisan ini menggunakan nginx sebagai front-end server dan menggunakan apache sebagai back-end server. Karena menggunakan satu server, jadi pembagiannya berdasarkan port dalam satu server. Untuk implementasi yang sesungguhnya tinggal menyesuaikan sesuai kebutuhan.
siapkan back-end server agar berjalan dengan multiple port (misal 8080, 8090. 8091)
.:: copy file konfigurasi apache (httpd.conf)
[root@server01 conf.d]# cd /etc/httpd/conf[root@server01 conf.d]# cp httpd.conf httpd8090.conf[root@server01 conf.d]# cp httpd.conf httpd8091.conf
jadi sekarang ada 3 file konfigurasi, httpd.conf, httpd8090.conf, dan httpd8091.conf. Ganti masing-masing port agar berjalan di port yang berbeda dengan mengubah Listen sesui nama file konfigurasi. Misal httpd.conf Listen 8080 , httpd8090.conf Listen 8090 , dan httpd8091.conf Listen 8091
.:: Selanjutnya jalankan perintah untuk alternatif ServerConfigFile
[root@server01 conf]# httpd -f /etc/httpd/conf/httpd8090.conf[root@server01 conf]# httpd -f /etc/httpd/conf/httpd8091.conf
.:: cek port
[root@server01 conf]# netstat -tlnup |grep 80tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 7640/nginx.conftcp 0 0 :::8080 :::* LISTEN 7654/httpdtcp 0 0 :::8090 :::* LISTEN 7672/httpdtcp 0 0 :::8091 :::* LISTEN 7686/httpd
jika sudah terlihat apache berjalan pada multiple port, sekarang tinggal buat konfigurasi vhost pada masing-masing file.
.:: contoh isi pada httpd.conf, httpd8090.conf, dan httpd8091.conf ( sesuaikan port-nya )
ServerName idprayoga.comServerAlias www.idprayoga.comDocumentRoot "/home/8080/www/idprayoga.com/htdocs"CustomLog "|/usr/sbin/cronolog /var/apachelogs/prayoga/%Y/%m/%d/idprayoga.com.access_log" combinedErrorLog "|/usr/sbin/cronolog /var/apachelogs/prayoga/%Y/%m/%d/idprayoga.com.error_log"ScriptAlias /cgi-bin/ "/home/prayoga/www/idprayoga.com/cgi-bin/"Options AllAllowOverride AllOrder allow,denyAllow from all### add these line in VirtualHost configurationRPAFenable OnRPAFsethostname OnRPAFproxy_ips 10.100.100.99 ### can use multiple IP address
buat file pada direktori masing-masing berisi index.html dengan isi Port 8080, Port 8090, dan Port 8091 atau isi lain yang intinya saat test untuk mengetahui kita sedang mengakses dari server port mana.
.:: konfigurasi pada vhost / nginx.conf
[root@server01 conf]# cd /etc/nginx/conf.d/[root@server01 conf.d]# nano idprayoga.com.conf#isi file konfigurasiupstream bagi {server 10.100.100.99:8080;server 10.100.100.99:8090;server 10.100.100.99:8091;}server {listen 80;server_name idprayoga.com;access_log /var/log/nginx/idprayoga.com.access.log ;error_log /var/log/nginx/idprayoga.com.error.log ;location / {proxy_pass http://bagi;include /etc/nginx/conf.d/proxy.conf;}}
.:: restart httpd dan nginx
[root@server01 conf.d]# /etc/init.d/nginx restart[root@server01 conf.d]# killall -9 httpd[root@server01 conf.d]# /etc/init.d/httpd start[root@server01 conf]# httpd -f /etc/httpd/conf/httpd8090.conf[root@server01 conf]# httpd -f /etc/httpd/conf/httpd8091.conf
.:: testing
Akses idprayoga.com dari browser dan refresh. Perhatikan, seharusnya setiap refresh seharusnya tampilan berubah-ubah Port 8080, Port 8090, dan Port 8091.
Konfigurasi ini juga bisa berfungsi sebagai Fault Tolerance (bisa dijadikan server primary backup) dengan menambahkan parameter backup di belakangnya. Contoh, dalam keadaan normal, request di tangani oleh server primary (8080), namun jika server primary (8080) mati, request dari client akan di tangani oleh server backup (8090)
upstream bagi {server 10.100.100.99:8080;server 10.100.100.99:8090 backup;}
bila ada yang salah mohon dikasih masukan. Terimakasih :)

1 comments:
Makasih gan tutorialnya.. oprek terus gaan..
Post a Comment