Tuesday, February 28, 2017

Konfigurasi HTTP Load Balancer pada Apache HTTP Server

https://firmanhid.wordpress.com/2014/10/11/konfigurasi-http-load-balancer-pada-apache-http-server/

Pada percobaan ini digunakan OS CentOS 6.4 dan Apache HTTP Server 2.2.
Buka file /etc/httpd/conf/httpd.conf. Pastikan dalam file tersebut terdapat baris tulisan seperti berikut:
1
Include     conf.d/*.conf
httpd_conf
Baris ini menandakan bahwa semua file yang berekstensi *.conf di dalam direktori/etc/httpd/conf.d akan dimuat ketika server http dinyalakan. Kita perlu memastikan keberadaan baris tulisan ini di dalam httpd.conf, karena kita akan menyimpan file konfigurasi load balancer pada direktori /etc/httpd/conf.d/. Untuk file konfigurasi load balancer ini harus dimuat ketika http server dijalankan.
Bila baris ini tidak ada, tambahkan saja baris tulisan tersebut pada file httpd.conf ini.
Buat sebuah file /etc/httpd/conf.d/load_balancer.conf. Pada file ini isikan baris berikut:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# ==================== Halaman balancer-manager
<Location /balancer-manager>
        SetHandler balancer-manager
        Order Deny,Allow
#       Deny from all
#       Allow from contoh.com
        Allow from all
</Location>
 
# ==================== Setting load balancer
ProxyRequests off
<Proxy balancer://esbws>
        BalancerMember http://192.168.0.66:7777/WS/testing
        BalancerMember http://192.168.0.67:7777/WS/testing
        ProxySet lbmethod=byrequests
#       Pilihan lbmethod bytraffic|byrequests|bybusyness
</Proxy>
 
# ==================== Pass proxy (reverse proxy)
ProxyPass /balancer-manager !
ProxyPass /WS/testing balancer://esbws
load_balancer_conf
Isi file load_balancer.conf ini merupakan konfigurasi load balancer. Sebetulnya konfigurasi load balancer ini dapat pula disimpan pada file /etc/httpd/conf/httpd.conf. Bila konfigurasi ini disimpan dalam file httpd.conf, maka kita tidak perlu membuat file load_balancer.conf seperti ini.
Jalankan service httpd.
1
# service   httpd   start
HTTP load balancer kini sudah dapat digunakan. Untuk mengakses  server yang di-load balanced, gunakan url http://nama-host-loadbalancer/WS/testing. Sedangkan untuk mengakses halaman load balancer manager url-nya adalah htttp://nama-host-loadbalancer/balancer-manager.
Sekarang kita perhatikan file load_balancer.conf
Baris
1
2
3
4
5
6
7
<Location /balancer-manager>
        SetHandler balancer-manager
        Order Deny,Allow
#       Deny from all
#       Allow from contoh.com
        Allow from all
</Location>
Merupakan konfigurasi untuk mengaktifkan Balancer Manager. Balancer manager dapat digunakan untuk melakukan konfigurasi secara dinamis terhadap anggota balancer (server yang di-load balanced). Dengan balancer manager ini kita dapat mengubah-ubah balance factor ataupun menyeting mode  salah satu anggota menjadi offline pada saat runtime.
Pada bagian ini ditentukan pula aturan host mana saja yang dapat mengakses halaman balancer-manager ini. Aturan ini nampak pada kalimat Deny from xxx dan Allow from xxx.
Baris
1
2
3
4
5
6
<Proxy balancer://esbws>
        BalancerMember http://192.168.0.66:7777/WS/testing
        BalancerMember http://192.168.0.67:7777/WS/testing
        ProxySet lbmethod=byrequests
#       Pilihan lbmethod bytraffic|byrequests|bybusyness
</Proxy>
Merupakan konfigurasi yang menyatakan anggota balancer yang ditangani oleh load balancer. Setiap anggota dituliskan sebagai sebuah url end point yang nantinya akan diakses oleh client.
Pada bagian atas terdapat tulisan <Proxy balancer://esbws>.  Nilai esbws merupakan identifier. Kita bebas  memberikan nilai identifier ini. Nilai identifier ini nantinya akan dipanggil pada bagian ProxyPass.
Baris
1
2
ProxyPass /balancer-manager !
ProxyPass /WS/testing balancer://esbws
Merupakan konfigurasi yang menentukan sebuah url yang diakses oleh client akan diforward ke url yang mana di dalam anggota balancer.
  • ProxyPass /balancer-manager !    Menetapkan bahwa bila client mengakses urlhttp://nama-host-loadbalancer/balancer-manager, maka http server tidak akan mem-forward request ini ke member load balancer manapun dan http server akan menampilkan halaman balancer-manager milik http server.
halaman-balancer-manager
  • ProxyPass /WS/testing balancer://esbws   Menetapkan bahwa bila client mengakses url http://nama-host-loadbalancer/WS/testing, maka http server akan mem-forwar request ini ke salah satu member load balancer “esbws”.
Bila anggota balancer tidak dapat diakses oleh load balancer, coba perhatikan setingan firewall dan selinux pada sistem operasi. Untuk keperluan percobaan, pada contoh ini firewall dan selinux dimatikan.
Untuk mematikan selinux, buka file /etc/selinux/config kemudian ubah nilai SELINUX menjadi disabled
1
SELINUX=disabled
Setelah file /etc/selinux/config diubah, kemudian restart sistem operasi agar perubahan ini diterapkan.
Untuk mematikan firewall gunakan command:
1
# service   iptables   stop
Mematikan iptables dengan cara ini hanya akan mematikan iptables selama sistem operasi berjalan saat ini. Bila OS direstart iptables kemungkinan akan dijalankan kembali dengan sendirinya. Agar iptables tidak pernah dihidupkan secara otomatis oleh OS ketika OS mulai berjalan, perlu diberikan command berikut:
1
# chkconfig   iptables   off
Bila OS akan digunakan pada lingkungan production, maka demi keamanan iptables dan selinux perlu tetap dijalankan. Namun kita perlu mengatur iptables dan selinux agar koneksi kepada endpoint member balancer bisa diakses.