Install HAProxy Ubuntu 20.04 LTS Server |
HAProxy adalah sebuah produk opensource yang dibuat secara khusus untuk dapat melakukan pembagian request ke arah server. HA sendiri singkatan dari High Availability, yang secara teknis artinya adalah kondisi tidak akan mati saat salah satu sumber server mengalami kondisi down atau overload. Pada gambar di bawah digambarkan sebuah susunan topologi server lengkap dengan backend maupun proxy (frontend). Proxy sebenarnya dapat menggunakan seluruh HTTP server seperti Apache dan Nginx. Namun HAProxy memang telah didesain untuk secara khusus mengatur tentang load balancing saja.
HAProxy : HTTP Load Balancing
Instal HAProxy untuk mengkonfigurasi Load Balancing Server. Contoh ini didasarkan pada lingkungan seperti berikut.
-----------+---------------------------+--------------------------+------------ | | | |10.0.0.30 |10.0.0.51 |10.0.0.52 +----------+-----------+ +-----------+----------+ +-----------+----------+ | [ dlp.srv.world ] | | [ node01.srv.world ] | | [ node02.srv.world ] | | HAProxy | | Web Server#1 | | Web Server#2 | +----------------------+ +----------------------+ +----------------------+
Konfigurasikan Server agar koneksi HTTP ke HAProxy Server diteruskan ke Server Web backend.
- Install HAProxy.
root@dlp:~# apt -y install haproxy
- Konfigurasi HAPproxy
root@dlp:~# vi /etc/haproxy/haproxy.cfg # add to the end # define frontend ( any name is OK for [http-in] ) frontend http-in # listen 80 port bind *:80 # set default backend default_backend backend_servers # send X-Forwarded-For header option forwardfor # define backend backend backend_servers # balance with roundrobin balance roundrobin # define backend servers server node01 10.0.0.51:80 check server node02 10.0.0.52:80 check root@dlp:~# systemctl restart haproxy
- Ubah pengaturan pada server Web Backends ke logging X-Forwarded-For header.
Berikut ini untuk kasus pengaturan Apache2, jika Anda menggunakan Nginx, lihat di sini [3].
root@node01:~# a2enmod remoteip Enabling module remoteip. To activate the new configuration, you need to run: service apache2 restart root@node01:~# vi /etc/apache2/apache2.conf # line 212-215 : change like follows # for RemoteIPInternalProxym, specify HAProxy IP address RemoteIPHeader X-Forwarded-For RemoteIPInternalProxy 10.0.0.30 LogFormat "%v:%p %a %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined LogFormat "%a %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined root@node01:~# systemctl restart apache2
- Pastikan berfungsi normal untuk mengakses server HAproxy frontend.