DevOps Expert | Haproxy – High Performance Load Balancer Server

haproxy load balancer server

Kapan Anda harus menggunakan Haproxy?

Ketika ribuan pengguna mengakses situs atau aplikasi web ataupun sejenisnya pada waktu bersamaan, sehingga trafic yang tinggi yang membuat server anda overload (down) karena tidak dapat menampung request yang diterima, maka haproxy dapat menjadi solusi bagi anda.

Bayangkan kalo anda cuma punya 1 server yang dipakai untuk menangani semua request yg sudah terlanjut buanyaaak bgt… disisi lain spec server sudah mentok g bisa di upgrade lagi. sudah tidak memungkinkan untuk vertical scaling. maka sudah saat nya untuk melakukan horisontal scaling. yap… dengan Haproxy kita dapat membuat horisontal scaling untuk menghajar mengatasi trafic yang tinggi.

Teknik ini dikenal dengan load balancing. Jadi load balancing adalah teknik untuk melakukan distribusi beban trafik pada dua atau lebih jalur koneksi secara seimbang sehingga setiap jalur koneksi akan menerima beban trafik yang sama. yap begitulah cara kerja load balancing.

Apa itu Haproxy?

HAProxy adalah project open source dibawah GPLv2 license. Haproxy atau kepanjangan dari High Availability Proxy adalah loadbalancer TCP/IP dan proxy server yang dapat membagi beban request yang datang kepada multi node server. sehingga beban server akan dibagi kepada node server yang ada.

Pembagian beban nya pun bermacam-macam cara ada yang sama rata, ada yang berdasarkan beban trafic dan lain nya. akan kita pelajari algoritma pembagian beban request  ini selanjutnya. Jadi haproxy ini adalah perantara antara client/user dengan server (web/database/dll) sehingga disebut juga dengan haproxy reverse proxy.

Haproxy tidak hanya bisa untuk web load balancing namun juga yang lain seperti smtp load balancing atau mysql load balancing.

Bagaimana cara kerja Haproxy?

Load balance pada web server dapat dilakukan dengan 2 macam yaitu pada Layer 4 (transport layer) dan Layer 7 (application layer). Layer 4 lebih sederhana karena pembagian hanya berdasarkan range IP dan port. Pada layer 7 pembagian lebih kompleks sampai pembagian trafic berdasarkan url tertentu, dsb.

User akan mengirimkan request kepada load balancer (haproxy) kemudian diteruskan (forward) ke node (web server) lain. Teknik load balancing yang sering digunakan adalah roundrobin dan least connection. RoundRobin adalah cara yang menganggap bahwa semua beban server sama, jadi setiap server yang ada di akses secara bergantian dan berurutan, sedangkan Least Connection hanya mengalihkan beban ke server yang dianggap kosong atau trafficnya rendah.

di dalam haproxy terdapat 2 bagian (side) yakni frontend dan backend. koneksi yang datang dari user akan di terima oleh bagian frontend untuk di olah/filter sesuai rule frontend, jika lolos maka paket di lanjutkan ke backend untuk di oleh/filter sesuai rule backend selanjutnya akan di putuskan untuk kirim ke node tertentu sesuai strategi yang di pakai backend. Jadi frontend hanya mengurusi client/users dan backend mengurusi node server.
haproxy ada 2 mode dalam operasinya yakni HTTP close mode dan HTTP keep-alive mode.

Mengapa harus Haproxy?

Sebenarnya untuk melakukan load balancing trafic pada server ada beberapa alternative lain seperti Nginx, LVS / IPVS, varnish, dll. Namun haproxy memang khusus dibuat untuk keperluan ini, mature, reliable dan high performance. Disamping dia mempunyai fitur-fitur pendukung lain tentunya.

Haproxy hanya menggunakan 15% dari processing time penggunaan CPU dengan HTTP close mode dan sekitar 30% jika menggunakan HTTP keep-alive mode. Itu artinya secara global haproxy mempunyai impact yang besar dalam performa namun kecil dalam penggunaan resource.

Dengan load balancing maka yang akan menerima request tidak hanya 1 server, sehingga mempercepat waktu response sebuah web. 1 web server dapat menerima banyak request, sedangkan 1 server biasanya kita memiliki 1 web server, bayangkan saja jika kita mempunyai 3 dan masing – masing server mempunyai 1 web server maka waktu response sebuah web akan meningkat 3 kali lipat. Kesimpulan nya dengan haproxy dapat mempercepat waktu reponse sebuah web (fast response).

Karena adanya server yang lebih dari 1, hal ini memungkinkan ketika salah 1 server mati request tetap dapat di layani dengan server lain. jadi lebih reliable.

Ada beberapa variasi dalam penggunaannya haproxy diantaranya ada yang berfokus pada bandwidth, atau berdasarkan request rate, atau koneksi yang konkuren, atau pada kinerja SSL. Fitur-fitur yang ada disediakan untuk membantu tugas haproxy dalam mengendalikan trafic. Contohnya nanti akan kita bahas dalam haproxy configuration.

Fitur Basic

Proxying : menjembatani koneksi dari client dan server.
SSL : haproxy ssl support secure sockets layer (https)
Monitoring : termonitor secara terus menerus dan tercatat
High availibility : walaupun 1 atau beberapa web server mati masih tetap terkoneksi
Load balancing : beban trafik yang terbagi sama rata atau sama rasa
Stickiness : aliran data/paket yang melekat pada aturan/rule yang di setting
Sampling and converting information : pengelompokan dan rekap data dari paket yang lewat
Map : membuat simple rule untuk setting frontend dan backend
ACLs dan Conditions : haproxy acl mengatur trafic dengan rule dan condition
Stick-tables
Formatted strings
HTTP rewriting and redirection
Server protection
Logging : terdapat haproxy log file untuk maintenance
Statistics : data statistic untuk monitoring trafic

Fitur Advance

Management
System-specific capabilities
Scripting : HAProxy support Lua embedded language

Persiapan Installasi dan Konfigurasi

Kali ini kita akan gunakan 3 server  VPS dengan OS terinstall ubuntu 18.04
1 server sebagai load balancer dengan haproxy
2 server sebagai web server dengan nginx

server haproxy kita beri nama haproxy.qodrbee.com
web server kita beri nama web1.qodrbee.com dan web2.qodrbee.com
berikut konfigurasinya :

haproxy.qodrbee.com

ip public : 10.20.30.40 open port 80 # terhubung ke internet/user
ip private : 192.168.1.1/24 #terhubung dengan private web server

web1.qodrbee.com

ip private : 192.168.1.2/24 #terhubung dengan haproxy.qodrbee.com

web2.qodrbee.com

ip private : 192.168.1.3/24 #terhubung dengan haproxy.qodrbee.com

persiapan haproxy load balancer server

okey itu tadi adalah persiapan kita (persiapan mental dan kesabaran :v) sebelum memulai instalasi dan konfigurasi haproxy.
Selanjutnya kita coffe break dulu agar kembali fresh dan fokus. 10menit…
10.. 9.. 8.. 7.. 6.. 5.. 4.. 3.. 2.. 1..
oke break habis kita lanjutkan tahap instalasi dan konfigurasi.

kalau sudah sampai sini anda wajib share tulisan ini.
agar (banyak pengunjung di web saya) manfaatnya lebih tersebar ke yang lain.

tanpa basa bali klik disini untuk menuju babak baru dalam haproxy.
HAProxy installation and configuration
jeng jeng jeng…..

Referensi :

Incoming search terms:

DevOps Expert | apa dan bagaimana Google CLoud Platform (GCP) ?

google cloud platform gpc adalah
Google Cloud Platform atau disingkat GCP adalah layanan dari google tentang public cloud computing yang terdiri dari beragam layanan. diantara layanan nya adalah

  • Google Compute Engine
  • Google App Engine
  • Google Cloud Storage
  • Google Container Engine

Google Cloud Platform Service dapat diakses oleh software developer, DevOps, Sys admin dan profesional IT lainnya menggunakan piblic internet  atau melalui koneksi jaringan dedicated lain nya.
Lalu apa dan bagaimanakah GCP serta layanan-layanan nya?
ikuti event seminar gratis dari Cloud Ace berikut :

Topik Seminar :

– Pengenalan GCP
– Perbedaan antara GCP, AWS & Azure
– Demo GCP
– Sesi Q & ATanggal : 11 April 2019
Pukul : 10:00-12:00
Tempat : Horaios Malioboro Hotel
Jalan Gowongan Kidul No. 57, Gedongtengen, Yogyakarta, Yogyakarta Province, Indonesia, 55271
E-mail : id@cloud-ace.com

google cloud platform gpc adalah

klik disini untuk pendaftaran

[solved] convert htaccess apache to nginx wordpress rewrite rule

convert htaccess to nginx

convert htaccess apache to nginx

Saya baru migrasi dari apache2 ke nginx. Saya bingung bagaimana rewrite rules untuk wordpress di nginx ?
Berikut ini adalah htaccess saya sebelumnya…

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
</IfModule>

# END WordPress

 

Jawaban


  1. open/buka nginx.conf di /etx/nginx/nginx.conf
    vi /etx/nginx/nginx.conf
  2. edit atau tambahkan barus seperti berikut, sesuaikan pathnya
    server {
      ..
      ..
    
      location /blog {
          try_files $uri $uri/ /blog/index.php?$args;
      }
    
      location ~ \.php$ {
          fastcgi_split_path_info ^(/blog)(/.*)$;
      }
    
      ..
      ..
    }

    asumsi wordpress punya subdirectory blog

lihat juga cara redirect dengan nginx disini
ada juga tool online untuk konversi disini

About the htaccess to nginx converter winginx.com
The service is to convert an Apache’s .htaccess to nginx configuration instructions. First of all, the service was thought as a mod_rewrite to nginx converter. However, it allows you to convert some other instructions that have reason to be ported from Apache to nginx. Note server instructions (e.g. php_value, etc.) are ignored. The converter does not check syntax, including regular expressions and logic errors. Please, check the result manually before use.

I’m having no luck converting htaccess rules to nginx rewrite. I’ve checked out the NginxRewriteModule documentation and have a few done, but the more complicate ones I’m at a loss for. Here’s what I’m looking at:

[tutorial] Analisa simple Log HaProxy dengan halog

haproxy load balancer server

How To Analyze HaProxy Logs

HALog adalah tool simple namun powerful untuk menganalisa HaProxy log. yuk lets try…

  1. Instalasi

    cd /usr/src
    wget http://haproxy.1wt.eu/download/1.5/src/devel/haproxy-1.5-dev11.tar.gz
    tar xzf haproxy-1.5-dev11.tar.gz
    cd haproxy-1.5-dev11/contrib/halog
    make
    cp halog /usr/bin/
  2. Get number of requests treated by the server (columns “tot_req”)

    cat /var/log/haproxy.log | halog -srv -H -q |awk 'NR==1; NR > 1 {print $0 | "sort -n -r -k 9"}' |column -t
  3. List servers by response time in milisecond (columns “avg_rt”)

    cat /var/log/haproxy.log | halog -srv -H -q |awk 'NR==1; NR > 1 {print $0 | "sort -n -r -k 12"}' |column -t
    
  4. List servers by application errors: HTTP status code 5xx (column “5xx”)

    cat /var/log/haproxy.log |halog -srv -H -q | awk 'NR==1; NR > 1 {print $0 | "sort -n -r -k 6"}' | column -t
    
  5. List servers errors related by application (prefixed by the backend name)

    cat /var/log/haproxy.log |halog -srv -H -q | awk 'NR==1; NR > 1 {print $0 | "sort -n -r -k 5"}' | column -t
    
  6. List URLs by server computation time in milliseconds (column “okavg”)

    cat /var/log/haproxy.log | halog -ut -H -q | column -t
    
  7. List URLs by errors (column “err”)

    cat /var/log/haproxy.log | halog -ue -H -q | column -t
    
  8. List URLs by missing files: HTTP status code 404 (column “req”)

    cat /var/log/haproxy.log | halog -u -H -q -hs 404 | column -t
    
  9. List URLs by number of request(column “req”)

    cat /var/log/haproxy.log | halog -u -H -q | awk 'NR==1; NR > 1 {print $0 | "sort -n -r -k 1"}' | column -t
    

Jangan lupa sesuaikan path log haproxy nya.
untuk cara install dan setting haproxy sendiri ada disini

referensi : https://haproxy-log-analyzer.readthedocs.io/

[tutorial] bagaimana melakukan redirect di nginx

redirect di nginx

Kapan kita melakukan redirect?

Ketika anda punya broken link yang ingin supaya link nya dapat dipakai lagi, semisal karena sudah terindex oleh google. Bisa juga karena web anda sedang maintenance sementara sehingga redirect kehalaman maintenance agar pengunjung dapat info.
Okey… disini saya anggap temen2 sudah tau apa itu file htaccess, karena kita akan langsung kepada intinya. Bagi yang belum mengetahui tentang htaccess bisa baca-baca disini.

Bagaimana caranya?

untuk melakukan redirect di nginx bisa kita lakukan dengan meng-edit file konfigurasi di nginx atau di konfigurasi domain nginx.

  1. pake return (example : return 301 https://example.com$request_uri;)
    server {
        listen 80;
        listen [::]:80;
        hostname example.com www.example.com;
        return 301 https://example.com$request_uri;
    }
  2. pake regex (example : rewrite ^/foo/(bar)/(.*)$ https://$server_name/$1/$2 permanent; )
    server {
        listen 80;
        listen [::]:80;
        hostname example.com www.example.com;
        root /var/www/example.com/public;
        rewrite ^/foo/(bar)/(.*)$ $scheme://$server_name/$1/$2 permanent;
    }
  3. pake map
    include redirect-map.conf;
    server {
        […]
        if ( $redirect_uri ) {
            return 301 $redirect_uri;
        }
    }

    redirect-map.conf isinya …

    map $request_uri $redirect_uri {
        /home.html          /beranda;
        /usman.html         /cakep;
        /ribuantoro.html    /ganteng;
    }
  4. HTTP to HTTPS
    return 301 https://$host$request_uri;
  5. non-www to www
    if ( $host !~ ^www\. ) {
        return 301 $scheme://www.$host$request_uri;
    }
  6. www to non-www
    if ( $host ~ ^www\.(?<domain>.+)$ ) {
        return 301 $scheme://$domain$request_uri;
    }

     

Selain redirect di nginx bisa juga redirect dengan file htaccess namun menggunakan webserver apache. berikut caranya disini
Semoga bermanfaat.

referensi :
nginx official

[tutorial] install free cpanel vps dengan centos web panel (CWP)

install cwp centos web panel

Bismillah – Assalamualaikum wa rohmatullohi wabarokatuh

Bagi temen-temen yang baru migrasi dari shared hosting ke vps tentu agak kaget dalam config web ketika sebelumnya tinggal klik klik dengan cpanel yang memanjakan tiba-tiba berubah menjadi layar hitam dengan text putih manual ngetik command2 bak hacker legendaris mau meretas situs pemerintahan … #eh

sebenarnya banyak sesuatu seperti cpanel hosting dalam mengelola vps bahkan cpanel free alias cpanel gratis atau web panel gratis. yang kita perlukan hanya cara install dan cara pakai nya, salah satu nya adalah CWP atau kepanjangan dari centos web panel.

namanya aja centos berarti ini panel yang berjalan di atas OS linux centos, maka wajib bagi anda install vps dengan OS centos dan minimal centos 6 ya… siip asumsi anda sudah bisa atau mahir dan terbukti sudah menginstall centos di vps anda, bisa di digital ocean atau vultr atau yang lain nya… 

 

Berikut Step by step install centos web panel (CWP) 

  1. download dan install (sekitar 30 menitan)

    cd /usr/local/src
    wget http://centos-webpanel.com/cwp-latest
    sh cwp-latest
    
    jika download link gagal ganti dengan :
    CentOS 6: http://dl1.centos-webpanel.com/files/cwp2-latest
    CentOS 7: http://dl1.centos-webpanel.com/files/cwp-el7-latest
  2. reboot server (agar update)

    reboot
  3. Konfigurasi

    Log in to your CWP server CentOS WebPanel Admin GUI lewat browser
    http://SERVER-IP:2030/
    Username: root
    Password: your root password 
    – Setup nameservers 
    – Setup shared ip (harus IP public anda) 
    – Setup paling tidak 1 hosting paket (atau edit default package) 
    – Setup root email 

    konfigurasi lain nya bisa cek di http://wiki.centos-webpanel.com/
  4. Bingung ?

    Kontak WA 08975835238 atau email ke ztoro@qodrbee.com untuk training.

Incoming search terms:

[solved] bagaimana cara redirect dengan file htaccess ?

kapan perlu redirect ?

Ketika anda punya broken link yang ingin supaya link nya  dapat dipakai lagi, semisal karena sudah terindex oleh google. Bisa juga karena web anda sedang maintenance sementara sehingga redirect kehalaman maintenance agar pengunjung dapat info.
Okey… disini saya anggap temen2 sudah tau apa itu file htaccess, karena kita akan langsung kepada intinya. Bagi yang belum mengetahui tentang htaccess bisa baca-baca disini.

persiapan

pertama kita buat dulu file .htaccess lalu taruh di root directory web kita atau folder yang membutuhkan, misal kalau menggunakan wordpress file .htaccess sejajar dengan folder wp-content wp-include dll. lalu file .htaccess itu akan kita isi dengan script untuk redirect. berikut macam-macam cara redirect dengan file .htaccess

301 (Permanent) Redirect

Redirect seluruh URL website ke URL  yang berbeda secara permanent. Contohnya kita redirect ke domain qodrbee.com

# This allows you to redirect your entire website to any other domain
Redirect 301 / http://qodrbee.com/

 

302 (Temporary) Redirect

Redirect seluruh URL website ke URL  yang berbeda secara sementara. Ini berguna untuk tujuan SEO ketika anda punya landing page sementara dan berencana nanti akan kembali ke landing page utama. Contohnya kita redirect ke domain qodrbee.com

# This allows you to redirect your entire website to any other domain
Redirect 302 / http://qodrbee.com/

 

Redirect index.html ke specific subfolder

# This allows you to redirect index.html to a specific subfolder
Redirect /index.html http://qodrbee.com/newdirectory/

 

Redirect file lama ke file baru

# Redirect old file path to new file path
Redirect /olddirectory/oldfile.html http://qodrbee.com/newdirectory/newfile.html

 

Redirect ke specific index page

# Provide Specific Index Page (Set the default handler)
DirectoryIndex index.html

 

Redirect non-www ke www .htaccess

RewriteCond %{HTTP_HOST} ^qodrbee.com [NC]
RewriteRule ^(.*)$ http://www.qodrbee.com/$1 [L,R=301]

 

Redirect www ke non-www .htaccess

RewriteCond %{HTTP_HOST} ^www.domainanda.com [NC]
RewriteRule ^(.*)$ http://domainanda.com/$1 [L,R=301]

 

Redirect seluruh website ke website lain

RewriteCond %{HTTP_HOST} ^domainlama.com [NC,OR]
RewriteCond %{HTTP_HOST} ^www.domainlama.com [NC]
RewriteRule ^(.*)$ http://domainbaru.com/$1 [L,R=301,NC]

 

Redirect Url Direktori ke Halaman Utama

RedirectMatch 301 /blog/(.*) https://wwqodrbeew.idsysadmin.com/$1
RedirectMatch ^/$ https://www.qodrbee.com/blog

selain dengan file .htaccess redirect juga bisa dilakukan dengan setting config nginx

DevOps Expert | Haproxy – Instalasi & Konfigurasi pada VPS Ubuntu 18.04

haproxy load balancer server

Pada bab sebelumnya kita sudah mengetahui tentang apa, mengapa dan bagaimana cara kerja haproxy. Jika Anda belum mengetahui konsep dan alasan di balik haproxy sebaiknya Anda membacanya terlebih dahulu disini.

Haproxy Installation

Pertama kita create vps terlebih dahulu, bisa dengan digital ocean atau vultr atau yang lain nya. Jika belum mengetahui cara deploy (membuat) VPS dan instalasinya silahkan ikuti step by step disini. Selain VPS bisa juga menggunakan VM (virtual machine) atau bahkan dedicated computer.

Sediakan 3 VPS. Saya asumsikan sudah terinstall ubuntu server 18.04 atau keluarga debian, karena kurang lebih caranya sama kalau sesama keluarga linux debian. beda-beda dikit paling.
Pada VPS 1 (Hostname haproxy.qodrbee.com) lakukan

  1. Setting IP private
    edit file konfigurasi ip address

    root@haproxy:~# nano /etc/netplan/01-netcfg.yaml

    akan muncul isi file seperti ini lalu edit ip address menjadi 192.168.1.1/24

    network:
      version: 2
      renderer: networkd
      ethernets:
        ens3:
          dhcp4: yes
        ens7:
          addresses: [192.168.1.1/24]
          dhcp4: no
          dhcp6: no
          optional: true
          nameservers:
            addresses: [8.8.8.8,8.8.4.4]
    

    ens3 adalah ethernet yg terhubung ke public dan
    ens7 adalah yang terhubung ke private atau ke web server kita nantinya.
    Angka 3 dan 7 pada ens bisa berbeda untuk vps lain. Silahkan disesuaikan
    jika sudah simpan dengan ctrl+x lalu apply settingan tersebut dengan perintah

    root@haproxy:~# netplan apply

    cek ip address ens7 apakah sudah berubah

    root@haproxy:~# ifconfig
    ens3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 10.20.30.40  netmask 255.255.254.0  broadcast 10.20.30.255
            inet6 fe80::5400:1ff:fef4:c42e  prefixlen 64  scopeid 0x20<link>
            ether 56:00:01:f4:c4:ce  txqueuelen 1000  (Ethernet)
            RX packets 2008493  bytes 468728324 (468.7 MB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 1952526  bytes 1666990785 (1.6 GB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    ens7: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.1.1  netmask 255.255.255.0  broadcast 192.168.1.255
            inet6 fe80::5800:1ff:fef4:c48e  prefixlen 64  scopeid 0x20<link>
            ether 5a:00:01:f4:c4:ce  txqueuelen 1000  (Ethernet)
            RX packets 8122671  bytes 2208780819 (2.2 GB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 14258789  bytes 1377041568 (1.3 GB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
            inet 127.0.0.1  netmask 255.0.0.0
            inet6 ::1  prefixlen 128  scopeid 0x10<host>
            loop  txqueuelen 1000  (Local Loopback)
            RX packets 104578  bytes 9203032 (9.2 MB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 104578  bytes 9203032 (9.2 MB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
  2. Install haproxy
    update repo

    root@haproxy:~# apt update

    install haproxy

    root@haproxy:~# apt install haproxy

    Setelah terinstall, maka edit default config aplikasi haproxynya untuk mengarahkan settingan load balancernya, di /etc/default/haproxy , hilangkan tanda # di awal tulisan CONFIG dan ubah ENABLED menjadi 1.

    root@haproxy:~# nano /etc/default/haproxy
    # Defaults file for HAProxy
    #
    # This is sourced by both, the initscript and the systemd unit file, so do not
    # treat it as a shell script fragment.
    
    # Change the config file location if needed
    CONFIG="/etc/haproxy/haproxy.cfg"
    
    # Add extra flags here, see haproxy(1) for a few options
    #EXTRAOPTS="-de -m 16"
    ENABLED=1

    okey sekarang installasi haproxy sudah selesai, nanti kita lanjutkan untuk konfigurasinya.

Kemudian pada VPS 2 dan 3 (web1.qodrbee.com dan web2.qodrbee.com) kita lakukan

 

Haproxy Configuration

buka file konfigurasi haproxy

root@haproxy:~# nano /etc/haproxy/haproxy.cfg
global
    log 127.0.0.1 local0 notice   # menyimpan log pada 
                                  # syslog server (localhost)
    maxconn 2000          # max koneksi yang ditangani secara bersamaan
    user haproxy          # user yg menangani haproxy (jgn diganti)
    group haproxy         # group yg menangani haproxy (jgn diganti)

defaults
    log     global
    mode    http
    option  httplog
    option  dontlognull
    retries 3             # jml percobaan ketika timeout sebelum failure
    option redispatch     # meng-enable session redistribution 
                          # jika connection fail
    timeout connect  5s   # lama max sampai terhubung ke server 
                          # hingga berhasil
    timeout client  10s   # lama proses pengiriman data client/server
    timeout server  10s   # lama proses pengiriman data client/server

    listen web-load-balanced 0.0.0.0:80 # listen agar dapat di akses 
                                        # dari manapun
    mode http
    balance roundrobin    # algoritma metode load balancing
                          # ada pilihan algoritma roundrobin/static-rr/
                          # leastconn/source/uri/url_param
    option httpclose
    option forwardfor
    server web1 192.168.1.2:80 check # server backend, health check untuk 
    server web2 192.168.1.3:80 check # mengetahui status server backend

Oke konfigurasi standar haproxy sudah selasai. Selanjutnya kita uji coba. Start dulu haproxynya

root@haproxy:~# service haproxy start

buka komputer lain di luar VPS untuk melakukan request ke server load balancer sebut saja komputer user. Misal kita kasih IP address nya 192.168.1.111
kita lakukan dengan browser atau curl. Untuk uji coba kali ini kita pakai curl.
buat script php sebagai berikut untuk mengetahui IP server dan Client dari request.
simpan di /var/www/html/cek_loadbalance.php di server web1 dan web2

<?php
header('Content-Type: text/plain');
echo "Server IP: ".$_SERVER['SERVER_ADDR'];
echo "\nClient IP: ".$_SERVER['REMOTE_ADDR'];
echo "\nX-Forwarded-for: ".$_SERVER['HTTP_X_FORWARDED_FOR'];
?>

lalu dari komputer user lakukan

root@user:~# curl cek_loadbalance.php

seharusnya akan muncul hasil seperti ini

root@user:~$ curl http://192.168.1.1/cek_loadbalance.php
Server IP: 192.168.1.2
Client IP: 192.168.1.1
X-Forwarded-for: 192.168.1.111
root@user:~$ curl http://192.168.1.1/cek_loadbalance.php
Server IP: 192.168.1.3
Client IP: 192.168.1.1
X-Forwarded-for: 192.168.1.111

perhatikan server IP… dia berganti ganti karena kita memakai algoritma round robin. Request yang datang ke load balancer di arahkan bergantian ke 192.168.1.2 (web1) dan 192.168.1.3(web2)

X-Forwarded-for adalah IP komputer user

Incoming search terms: