Membuat Load Balancer Web Server dengan Apache (mod_proxy_balancer)


code script

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.

code script

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 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 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, akan menjelaskan secara singkat dan praktis tentang bagaimana menerapkan load balancer web server menggunakan web server apache dengan modul mod_proxy_balancer. menggunakan sistem operasi Linux CentOS 5 dan Apache 2.2.3 untuk web server load balancer, dan 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 mengilsutrasikan skenario jaringan cluster web server sebagaimana yang dapat dilihat pada Gambar Load Balancer di bawah ini.

load balancer

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.


tulis tips trik di tipstrik.id