Jaga Kestabilan Server dengan Load Balancing HAProxy Nginx di CentOS 7

  • Bagikan

Memiliki banyak pengunjung hingga peningkatan traffic adalah hal yang diharapkan oleh para pemilik website. Namun, banyaknya pengunjung berbanding lurus dengan permintaan atau request pada server yang semakin bertambah.

Oleh karena itu kestabilan server diperlukan agar dapat memenuhi permintaan para pengunjung. Di artikel ini, kamu akan mengetahui cara menjaga kestabilan server menggunakan load balancing HAProxy Nginx di CentOS 7.

Load Balancing

Load balancing adalah salah satu metode untuk mendistribusikan traffic ke beberapa server agar tidak membebani satu server saja sehingga kinerja server menjadi seimbang dan menghindari terjadinya overload.

HAProxy

HAProxy atau High Availability Proxy adalah open source TCP dan HTTP load balancer dan proxy server software. HAProxy ditulis dalam bahasa C oleh Willy Tarreau yang didukung oleh SSL, keep-alive custom log format, dan header writing.

HAProxy adalah salah satu software yang cepat dan telah digunakan oleh website terkenal, seperti Github, StackOverflow, Reddit, Tumblr, dan Twitter. HAProxy kini termasuk dalam salah satu load balancer populer saat ini.

Sebagai penjelasan tambahan, baca dahulu artikel kami tentang proxy.

Konsep HAProxy

HAProxy dapat berjalan pada 2 mode; TCP layer 4 dan HTTP layer 7. Pada TCP layer 4, HAProxy melakukan forward RAW packet TCP dari client ke application server. Pada HTTP layer 7, HAProxy melakukan parsing HTTP Header sebelum melakukan forwarding ke application server.

Algoritma

Ada beberapa algoritma yang digunakan oleh HAProxy dalam menerima permintaan pengunjung:

  • Roundrobin

    Algoritma yang paling sederhana, HAProxy akan mengambil dan menyeimbangkan source setara pada server yang tersedia.

  • Lastconn

    Jika ada koneksi akan ditangani oleh backend server dengan jumlah koneksi paling sedikit, atau sederhananya HAProxy akan mengambil jumlah koneksi yang paling sedikit.

  • Source

    IP client akan di-hash agar dapat menentukan server backend yang menerima permintaan terakhir dari IP pengunjung tersebut. Jadi, jika ada pengunjung melakukan request nantinya akan diterima oleh salah satu server secara bertahap, tidak dipindah-pindah sesinya sampai sesi tersebut berakhir.

Pada tutorial ini kami akan menggunakan algoritma Round Robin.

Load Balancing HAProxy Nginx di CentOS 7

Load Balancing HAProxy Nginx di CentOS 7

Sebelum menggunakan Load Balancing HAProxy Nginx di CentOS 7, perhatikan beberapa hal berikut:

Persiapan

Sebelum memulai instalasinya, pastikan kamu sudah memenuhi syarat berikut.

  • Memiliki 3 VPS dan Domain yang aktif.
  • Memiliki akses root ke VPS.

Persyaratan

Note: Kami menyamarkan alamat IP menjadi “xxx”, nantinya kamu harus mengubah segala pengaturan IP dengan alamat IP kamu.

  • VPS 1 sebagai Load Balancer
    103.xxx.xxx.188
  • VPS 2 sebagai Web Server 1 (srv1)
    103.xxx.xxx.39
  • VPS 3 sebagai Web Server 2 (srv2)
    103.xxx.xxx.45

Konfigurasi HAProxy Load Balancer

Berikut ini beberapa langkah konfigurasinya:

Update Server

Update server dan reboot supaya packages yang tersedia di repositories sudah up-to-date.

 

$ yum update -y

$ reboot

Configure etc/hosts

 

Login sebagai root ke Load Balancer.

 

Edit etc/hosts untuk menambahkan hostname dari srv1 dan srv2 supaya dikenali oleh Load Balancer.

 

$ nano /etc/hosts

 

Tambahkan hostname srv1 dan srv2:

103.xxx.xxx.39  srv1.loadbalancer        srv1

103.xxx.xxx.45  srv2.loadbalancer        srv2

 

Save dan Exit.

 

Login sebagai root ke srv1 dan srv2

 

$ nano /etc/hosts

103.xxx.xxx.188 loadbalancer

 

Lakukan settingan di atas pada kedua web server (srv1 dan srv2).

Instal & Konfigurasikan HAProxy

Login sebagai root ke Load Balancer

HAProxy sudah tersedia pada repositori CentOS 7, kemudian ke directory HAProxy dan backup file konfigurasi aslinya.

 

$ yum install haproxy -y

$ cd /etc/haproxy/

$ mv haproxy.cfg haproxy.cfg.original

 

Buat file konfigurasi haproxy yang baru.

 

$ nano haproxy.cfg

 

Gunakan konfigurasi di bawah ini.

 

#———————————————————————

# Global settings

#———————————————————————

global

log         127.0.0.1 local2     #Log configuration

 

chroot      /var/lib/haproxy

pidfile     /var/run/haproxy.pid

maxconn     4000

user        haproxy             #Haproxy running under user and group “haproxy”

group       haproxy

daemon

 

# turn on stats unix socket

stats socket /var/lib/haproxy/stats

 

#———————————————————————

# common defaults that all the ‘listen’ and ‘backend’ sections will

# use if not designated in their block

#———————————————————————

defaults

mode                    http

log                     global

option                  httplog

option                  dontlognull

option http-server-close

option forwardfor       except 127.0.0.0/8

option                  redispatch

retries                 3

timeout http-request    10s

timeout queue           1m

timeout connect         10s

timeout client          1m

timeout server          1m

timeout http-keep-alive 10s

timeout check           10s

maxconn                 3000

 

#———————————————————————

#HAProxy Monitoring Config

#———————————————————————

#listen haproxy3-monitoring *:8080                #Haproxy Monitoring run on port 8080

#bind haproxy3-monitoring *:8080

listen stats

bind *:8080

mode http

option forwardfor

option httpclose

stats enable

stats show-legends

stats refresh 5s

stats uri /stats                             #URL for HAProxy monitoring

stats realm Haproxy\ Statistics

stats auth admin:p4ssadmin            #User and Password for login to the monitoring dashboard

stats admin if TRUE

default_backend app-main                    #This is optionally for monitoring backend

 

#———————————————————————

# FrontEnd Config

#———————————————————————

frontend main

bind *:80

option http-server-close

option forwardfor

default_backend app-main

 

#———————————————————————

# BackEnd roundrobin as balance algorithm

#———————————————————————

backend app-main

balance roundrobin                                     #Balance algorithm

option httpchk HEAD / HTTP/1.1\r\nHost:\ localhost    #Check the server application is up and healty – 200 status code

server srv1 103.xxx.xxx.39:80 check                 #srv1

server srv2 103.xxx.xxx.45:80 check                 #srv2

 

Simpan hasil konfigurasi dan Exit.

Configure Rsyslog

Di sini kami akan melakukan konfigurasi rsyslog daemon untuk logging pada statistik HAProxy, edit rsyslog.conf dan aktifkan UDP port 514 agar dapat digunakan oleh rsyslog.

 

$ nano /etc/rsyslog.conf

 

Hapus tanda “#” pada perintan dibawah ini:

#module(load=”imudp”) # needs to be done just once

#input(type=”imudp” port=”514″)

 

Save lalu Exit.

 

Setelah itu buat konfigurasi haproxy untuk rsyslog.

 

$ cd /etc/rsyslog.d/

$ nano haproxy.conf

 

Tempel (paste) konfigurasi di bawah ini ke dalam file haproxy.conf.

 

local2.=info     /var/log/haproxy-access.log    #For Access Log

local2.notice    /var/log/haproxy-info.log      #For Service Info – Backend, loadbalancer

 

Simpan dan keluar.

 

Restart rsyslog dan start haproxy.

 

$ systemctl restart rsyslog

$ systemctl start haproxy

 

Tambahkan haproxy untuk start on-boot.

 

$ systemctl enable haproxy

Instal dan Konfigurasikan Nginx

Login sebagai root ke srv1 dan srv2

 

$ yum install epel-release -y

$ yum install nginx -y

 

Setelah Nginx terinstal di srv1 dan srv2, kunjungi direktori web lalu ubah index file untuk melihat hasil load balancer pada kedua server tersebut.

 

$ cd /usr/share/nginx/html/

$ echo “<h1>srv1.loadbalancer</h1>” > index.html     #untuk srv1

$ echo “<h1>srv2.loadbalancer</h1>” > index.html     #untuk srv2

 

Kemudian, tambahkan Nginx untuk start on-boot lalu start Nginx.

 

$ systemctl enable nginx

$ systemctl start nginx

 

Lakukan langkah “Configure Nginx” ini pada kedua server.

Testing

Akses LoadBalancer dengan IP: 103.xxx.xxx.188, maka akan seperti di bawah ini dengan algoritma Round Robin:

menjaga kestabilan server load balancer server 1
menjaga kestabilan server load balancer server 2

Jika pengecekan menggunakan c:

[root@server-dewiweb ~]# curl 103.xxx.xxx.188

<h1>srv2.loadbalancer</h1>

[root@server-dewiweb ~]# curl 103.xxx.xxx.188

<h1>srv1.loadbalancer</h1>

 

Kamu juga bisa melihat statistik pada HAProxy Web Monitoring dengan URL: http://103.xxx.xxx.188:8080/stats

menjaga kestabilan server haproxy web stats

Jika tamplannya sudah seperti gambar di atas, artinya proses menjaga kestabilan server menggunakan load balancing sudah berhasil.

Simpulan

Menjaga kestabilan server dengan load balancing HAProxy Nginx di CentOS 7 memang pilihan yang tepat saat kamu mulai khawatir dengan traffic pada website hingga menyebabkan resource pada server kamu hampir melewati batas. Pemilihan algoritma pada konfigurasi HAProxy untuk menjaga kestabilan server dapat disesuaikan dengan kebutuhan kamu.

  • Bagikan