Mengenal HAProxy
HAProxy (High Availability Proxy) adalah perangkat lunak yang banyak digunakan untuk penyeimbang beban aplikasi berbasis TCP, HTTP dan protokol lainnya. Haproxy telah menjadi standar untuk load balancing open source, gratis dan dilengkapi dengan sebagian besar distribusi Linux.
Load Balancing
Kegiatan atau aktivitas untuk menyeimbangkan beban trafik, sehingga tidak tertumpu pada 1 server saja. Mudah dibayangkan kita mempunyai lebih dari satu server, 1 server ( web server ) hanya bisa menahan beban sekitar 100 koneksi atau request pengguna web server kita, sedangkan kita harus menanggung beban sebanyak 200 koneksi, dalam hal ini kita membutuhkan lebih dari 1 server, untuk membagi beban itu kita membutuhkan peran dari load balancing. sebelum kita lebih jauh mempelajari haproxy, kita sebaiknya mengerti apa saja terminologi dalam HAProxy tersebut.
Kegiatan atau aktivitas untuk menyeimbangkan beban trafik, sehingga tidak tertumpu pada 1 server saja. Mudah dibayangkan kita mempunyai lebih dari satu server, 1 server ( web server ) hanya bisa menahan beban sekitar 100 koneksi atau request pengguna web server kita, sedangkan kita harus menanggung beban sebanyak 200 koneksi, dalam hal ini kita membutuhkan lebih dari 1 server, untuk membagi beban itu kita membutuhkan peran dari load balancing. sebelum kita lebih jauh mempelajari haproxy, kita sebaiknya mengerti apa saja terminologi dalam HAProxy tersebut.
Sebelum memulai install HAProxy, kita harus update system ubuntu server yang akan dijadikan HAProxy Load Balacing dengan perintah :
sudo apt-get update && sudo apt-get dist-upgrade
Install HAProxy
HAProxy sudah termasuk dalam sistem manajemen paket dari sebagian besar distribusi Linux, install HAProxy dengan perintah :
HAProxy sudah termasuk dalam sistem manajemen paket dari sebagian besar distribusi Linux, install HAProxy dengan perintah :
sudo apt-get install haproxy
Konfigurasi HAProxy
1. Lihat file konfigurasi default di /etc/haproxy/haproxy.cfg, yang dibuat secara otomatis saat instalasi. File ini mendefinisikan pengaturan standar dari HAProxy, tanpa load balancing :
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin
stats timeout 30s
user haproxy
group haproxy
daemon
# Default SSL material locations
ca-base /etc/ssl/certs
crt-base /etc/ssl/private
# Default ciphers to use on SSL-enabled listening sockets.
# For more information, see ciphers(1SSL). This list is from:
# https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/
# An alternative list with additional directives can be obtained from
# https://mozilla.github.io/server-side-tls/ssl-config-generator/?server=haproxy
ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS
ssl-default-bind-options no-sslv3
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http
Bagian global mendefinisikan parameter sistem seperti lokasi file dan pengguna dan grup di mana HAProxy dijalankan. Dalam banyak kasus, kita tidak perlu mengubah apa pun di bagian global ini. Pengguna haproxy dan grup haproxy keduanya sudah dibuat selama instalasi.
Bagian default mendefinisikan parameter logging tambahan dan pilihan yang terkait dengan timeout dan kesalahan. Secara default, pesan normal dan pesan kesalahan akan dicatat dalam log.
Bagian default mendefinisikan parameter logging tambahan dan pilihan yang terkait dengan timeout dan kesalahan. Secara default, pesan normal dan pesan kesalahan akan dicatat dalam log.
option dontlog-normal
3. Kita juga dapat memilih untuk memiliki kesalahan log dalam file log yang terpisah :
option log-separate-errors
Konfigurasi Load Balancing
Ketika kita mengkonfigurasi load balancing dengan menggunakan HAProxy, ada dua jenis node yang perlu didefinisikan: frontend dan backend. Frontend adalah node dimana HAProxy mendengarkan koneksi. Node backend adalah yang memungkinkan HAProxy untuk meneruskan permintaan. Jenis node ketiga, node statistik, dapat digunakan untuk memantau load balancer dan dua node lainnya.
Ketika kita mengkonfigurasi load balancing dengan menggunakan HAProxy, ada dua jenis node yang perlu didefinisikan: frontend dan backend. Frontend adalah node dimana HAProxy mendengarkan koneksi. Node backend adalah yang memungkinkan HAProxy untuk meneruskan permintaan. Jenis node ketiga, node statistik, dapat digunakan untuk memantau load balancer dan dua node lainnya.
1. Buka file /etc/haproxy/haproxy.cfg dalam terminal ubuntu dan tambahkan konfigurasi untuk frontend
nano /etc/haproxy/haproxy.cfg
Tambahkan file dibawah ini :
frontend haproxynode
bind *:80
mode http
default_backend myLB
Konfigurasi diatas menentukan sebuah frontend node bernama myLB, yang terikat ke semua network interfaces pada port 80. HAProxy akan mendengarkan koneksi HTTP ( mungkin untuk menggunakan mode TCP untuk keperluan lain ) dan itu akan menggunakan backend myLB.
2. Menambahkan konfigurasi backend :
backend myLB
balance roundrobin
option forwardfor
http-request set-header X-Forwarded-Port %[dst_port]
http-request add-header X-Forwarded-Proto https if { ssl_fc }
option httpchk HEAD / HTTP/1.1\r\nHost:localhost
server node-1 10.100.2.10:80 check
server node-2 10.100.2.11:80 check
Konfigurasi tersebut mendefinisikan backend myLB dan menentukan beberapa pilihan konfigurasi :
- Setting spesifikasi dan strategi load balancing, dalam hal ini load balancing menggunakan strategi roundrobin, dimana strategi ini menggunakan setiap server secara bergiliran tetapi memungkinkan beban diberikan kesetiap server dengan bobot yang lebih tinggi akan digunakan lebih sering. Strategi ini termasuk static-rr yang memungkinkan bobot akan disesuaikan dengan cepat dan akan meneruskan permintaan ke server dengan jumlah koneksi terendah.
- Baris option forwardfor, memastikan permintaan yangakan diteruskan termasuk IP client yang sebenarnya.
- Baris http-request pertama memungkinkan permintaan yang akan diteruskan untuk menyertakan port HTTP client. http-request kedua menambahkan proto-header yang berisi https jika ssl_fc, variable HAProxy mengembalikan nilai true, jika koneksi pertama kali dibuat melalui transport SSL/TLS.
- Baris httpchk mendefinisikan HAProxy akan digunakan untuk menguji apakah web server masih valid untuk meneruskan permintaan, jika server tidak menanggapi permintaan yang ditentukan, itu tidak akan digunakan untuk load balancing sampai melewati tes koneksi.
- Baris server menentukan node server dan alamat IP server. Server yang di definisikan adalah node-node yang masing-masing akan menggunakan pemeriksaan koneksi yang telah kita seting.
3. Menambahkan pilihan statistik node ( server )
listen stats
bind :8080
stats enable
stats uri /
stats hide-version
stats auth admin:password
Statistik node akan listen di port 8080 dan untuk tampilan akan menyembunyikan versi HAProxy, serta untuk mengakses statistik tersebut kita memerlukan login dengan kata sandi "admin:password".
Untuk akses web statistik tersebut silahkan ketika IP server HAProxy dengan port 8080 contoh : 10.100.2.9:8080
Untuk akses web statistik tersebut silahkan ketika IP server HAProxy dengan port 8080 contoh : 10.100.2.9:8080
4. Dibawah ini contoh file konfigurasi lengkap setelah kita modifikasi :
5. Menambahkan session cookie di Load balancer HAProxyglobal
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin
stats timeout 30s
user haproxy
group haproxy
daemon
# Default SSL material locations
ca-base /etc/ssl/certs
crt-base /etc/ssl/private
# Default ciphers to use on SSL-enabled listening sockets.
# For more information, see ciphers(1SSL). This list is from:
# https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/
# An alternative list with additional directives can be obtained from
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http
frontend haproxynode
bind *:80
mode http
default_backend myLB
backend myLB
balance roundrobin
option forwardfor
http-request set-header X-Forwarded-Port %[dst_port]
http-request add-header X-Forwarded-Proto https if { ssl_fc }
option httpchk HEAD / HTTP/1.1\r\nHost:localhost
server node-1 10.100.2.10:80 check
server node-2 10.100.2.11:80 check
listen stats
bind :8080
stats enable
stats uri /
stats hide-version
stats auth admin:password
Untuk menjaga konsistensi session user agar tidak kehilangan session sehingga user tidak harus login kembali saat proses load balancer.
ganti konfigurasi backend sebelumnya
backend myLB
balance roundrobin
option forwardfor
http-request set-header X-Forwarded-Port %[dst_port]
http-request add-header X-Forwarded-Proto https if { ssl_fc }
option httpchk HEAD / HTTP/1.1\r\nHost:localhost
cookie SERVERID insert indirect nocache
server node-1 10.80.1.30:80 check cookie s1
server node-2 10.80.1.31:80 check cookie s2
Selamat Mencoba .... semoga berhasil

0 Response to "Install Haproxy Load balancing di Ubuntu 16.04"
Post a Comment