14/08/14

Load Balancer Web Server dengan Apache “mod_proxy_balancer”

Jika web server Anda tergolong web server yang supersibuk dengan beban akses atau hit yang besar, performa dan kinerja dari web server Anda dituntut maksimal. Untuk menjaga performa Apache web server Anda tetap prima, buat saja load balancer web server dengan modul mod_balancer.

Cara paling mudah untuk menyediakan web server dengan performa dan kinerja maksimal adalah menggunakan perangkat keras dengan spesifikasi yang tinggi. Tentunya hal ini membutuhkan investasi yang cukup mahal karena sampai saat ini korelasinya masih linear antara performa dan kinerja yang tinggi dari suatu perangkat komputer dengan biaya atau harganya.

Namun, solusi dengan pengadaan upgrade perangkat keras hanya akan bertahan dalam jangka pendek, karena bisa jadi peningkatan akses ke web server Anda akan bertambah dengan cepat sementara perangkat keras belum dapat segera di upgrade. Belum lagi permasalahan lain yang juga akan muncul saat dilakukan upgrade perangkat keras. Jika demikian adakah solusinya?

Salah satu solusi untuk menjamin performa dan kinerja dari web server tetap baik adalah menggunakan teknik cluster. Ada berbagai teknik cluster saat ini, namun dalam artikel kali ini penulis hanya akan membahas teknik cluster web server dengan menggunakan teknik load balancer (pembagi beban) pada web server Apache dengan menggunakan modul mod_proxy_balancer. Seperti apakah kiranya teknik tersebut ? 

Pada teknik load balancer ini, terdiri dari minimal sebuah web server yang berperan sebagai load balancer dengan dua atau lebih web server real (backend web server). Pada teknik cluster web server menggunakan load balancer, user mengakses web server yang berperan sebagai load balancer, kemudian load balancer akan mengambil halaman web yang diminta oleh user dari dua atau lebih backend web server dan kemudian memberikannya kepada user.

Dengan menggunakan load balancer, Anda dapat menurunkan beban rata-rata pada web server. Salah satu fitur penting dari mod_proxy_balancer adalah dapat melacak session yang berarti satu pengguna selalu berurusan dengan sebuah back-end web server, hal ini menjaga konsistensi session pada saat mengakses halaman web sehingga kejadian yang tidak diharapkan seperti user beberapa kali kehilangan session sehingga harus login lagi untuk menciptakan
sesion baru dapat dihindari.

Dengan teknik load balancer ini memang kita harus menyediakan beberapa  mesin komputer yang akan difungsikan sebagai load balancer, dan backend web server. Namun, kita masih dapat menggunakan spesifikasi mesin komputer yang tidak terlalu tinggi sehingga kita mungkin masih dapat menggunakan mesin komputer yang sudah ada.

Pada artikel kali ini, penulis akan menjelaskan secara singkat dan praktis tentang bagaimana menerapkan load balancer web server menggunakan web server apache dengan modul mod_proxy_balancer. Penulis menggunakan sistem operasi Linux CentOS 5 dan Apache 2.2.3 untuk web server load balancer, dan penulis menggunakan dua backend web server yang masing-masing menggunakan sistem operasi Linux CentOS 5.2 dan Fedora Core 6 serta web server Apache bawaan masing-masing distro.

Skenario
Untuk mempermudah pembaca dalam memahami penjelasan ini, maka penulis mengilsutrasikan skenario jaringan cluster web server sebagaimana yang dapat dilihat pada Gambar Load Balancer di bawah ini.

Load Balancer Web Server dengan Apache
Load Balancer Web Server dengan Apache
Terdapat sebuah frontend web server sebagai load balancer dan terdapat dua buah backend web server sebagai real server. Load balancer memiliki nama host www.latihan.com, dan kedua buah backend web server memiliki nama http1.latihan.com dan http2.latihan.com.

User dari internet ketika mengakses website www.latihan.com, maka sesungguhnya akses tersebut direspon oleh load balancer dengan mengambilkan halaman website dari backend web server dan memberikannya ke user. Dalam skenario ini Website atau aplikasi web yang terdapat pada cluster web server merupakan website atau aplikasi web yang menggunakan PHP Sessions (database-driven web aplication).

Konfigurasi backend web server Langkah pertama adalah kita mempersiapkan backend web server atau real server http1.latihan.com dan http2.latihan.com. Pada kedua backend web server menggunakan web server Apache dengan dukungan modul mod_rewrite. Pada masing-masing backend web server kita edit file konfigurasi apache (/etc/httpd/conf/httpd.conf) pada konfigurasi virtualhost masing-masing backend web server kita tambahkan entri konfigurasi direktif RewriteEngine dan RewriteRule untuk mendukung pelacakan session.
Untuk konfigurasi web server http1.latihan.com sebagai berikut:

NameVirtualHost *:80

ServerName http1.latihan.com
DocumentRoot /var/www/http1
RewriteEngine On
RewriteRule .* - [CO=BALANCEID:
balancer.http1:.latihan.com]


Kemudian restart service apache httpd pada komputer http1.latihan.com, seperti berikut ini:

[root@http1 ~]# service httpd restart

Untuk konfigurasi web server http2.latihan.com sebagai berikut:

NameVirtualHost *:80

ServerName http2.latihan.com
DocumentRoot /var/www/http2
RewriteEngine On
RewriteRule .* - [CO=BALANCEID:
balancer.http2:.latihan.com]

Kemudian restart service apache httpd pada komputer http2.latihan.com, seperti berikut ini:

[root@http2 ~]# service httpd restart

Konfigurasi Load Balancer
Langkah berikutnya kita mengkonfigurasi web server www.latihan.com untuk di jadikan sebagai load balancer. Untuk itu kita membutuhkan web sever apache yang sudah memiliki dukungan akan modul mod_proxy_balancer.

Umumnya apache web server yang tersedia di berbagai distro sudah dilengkapi dengan dukungan modul "mod_proxy_balancer".
Lakukan konfigurasi apache web server untuk load balancer (di asumsikan pada web server www.example.com. Berikut ini contoh konfigurasi load balancer web server www.example.com:

NameVirtualHost *:80

    ServerName www.latihan.com
    ServerAlias latihan.com
    DocumentRoot /var/www/
    ProxyRequest off
   
        Order deny,allow
        Allow from all
   

    ProxyPass /balancer-manager!
    ProxyPass /balancer:/mycluster/stickysession=BALANCEID nofailover=off
   
    ProxyPassReverse /http:/http1.latihan.com/
    ProxyPassReverse /http:/http2.latihan.com/
   
   
    BalancerMember http://http1.latihan.com route=http1
    BalancerMember http://http2.latihan.com route=http2
   
    ProxySet lbmethod=byrequests
      
        SetHandler balancer manager
        Order deny,allow
        Allow From all
   


Pada konfigurasi load balancer terdapat konfigurasi , untuk itu kita harus membuat direktori balancer-manager pada direktori /var/www/.

[root@www ~]#mkdir /var/www/balancer-manager

Untuk keamanan lokasi /balancer-manager sebaiknya di batasi pengaksesnya yaitu dengan menerapkan otentikasi atau dengan membatasi dari ip tertentu saja yang boleh mengakses dengan mengubah direktif "Allow from All" menjadi "Allow from 127.0.0.1 192.168.1.0/24".

Selanjutnya restart web server apache pada latihan.com sebagai berikut :

[root@www ~]#service httpd restart

Sampai disini konfigurasi load balancer dan kedua backend web server sudah selesai. Tinggal mencoba dengan mengakses ke www.latihan.com


** Artikel berasal dari majalah Infolinux
Load Balancer Web Server dengan Apache “mod_proxy_balancer”

Wget (Download) Serba Guna

Program Download wget yang power full tanpa GUI (Graphic Unit Interface), atau biasa di jalankan dimode console.

Untuk cek apakah wget sudah terinstall di system debian atau ubuntu:
dpkg -l | grep wget

Untuk install di ubuntu 14.04:
sudo apt-get install wget


Command yang hebat buat download website:

$ wget -c http://url-site/file
Command -c disini untuk dapat melanjutkan jika terputus/gagal.

$ wget -r http://url-site/file
Command -r untuk mendownload seluruh isi website.

$ wget -m http://url-site/file
Command -m untuk melakukan mirroring sebuah website.

$ wget -b http://url-site/file
Command -b untuk melakukan download secara background.

$ wget -c -U http://url-site/file
Command -U adalah jika sebuah situs/website tidak mengijinkan sebuah download manager.

$ wget -r -A jpg http://url-site/file
Download file dengan extensi tertentu misalnya jpeg, jpg, mp3, dsb.

$ wget -r --no-parent http://url-site/main-folder/sub-folder
Jika hanya ingin mendownload subfolder tertentu saja dalam sebuah situs/website, tanpa harus download file induk.

$ wget -c -i nama-file.txt
Download sebuah file yang sudah di list (nama-file.txt) apa saja yang akan di download.

$ wget -c --limit-rate=5k http://url-site/file
Membatasi kecepata dowload sebesar 5k, menggunakan opsi --limit-rate.

My Ping in TotalPing.com