Rumahweb Journal
Banner - Apa itu Load Balancing adalah

Load Balancing: Definisi hingga Cara Membuatnya di Server

Load Balancing adalah suatu metode yang digunakan untuk membuat pendistribusian traffic secara merata ke semua server. Metode ini bermanfaat untuk mencegah server mengalami downtime disaat traffic sedang tinggi-tingginya.

Apakah Anda pernah berpartisipasi melakukan belanja online saat program harbolnas atau 12.12? Saat program berlangsung, marketplace akan diserbu oleh ribuan orang dalam waktu bersamaan, namun disaat itu websitenya masih tetap dapat diakses dengan baik seperti biasanya. Bagaimana hal itu bisa disiasati?

Untuk menjawab pertanyaan tersebut, di artikel ini kami akan membahas tentang apa itu load balancing hingga cara membuat Load Balancing web server dengan SSL termination.

Apa itu Load Balancing?

Load balancing adalah suatu cara yang dilakukan untuk mendistribusikan traffic atau lalu lintas jaringan ke beberapa server. Sehingga setiap server yang menjadi tujuan tidak akan mendapatkan beban berlebih.

Website yang populer biasanya memiliki tingkat kunjungan yang tinggi dalam satu satuan waktu. Apabila server mengalami kelebihan beban diluar dari kemampuannya, nantinya server tersebut bisa down sehingga website menjadi tidak bisa diakses. 

Untuk mengantisipasi kelebihan beban di server, maka salah satu alternatifnya adalah dilakukan setup Load Balancing.

Manfaat Load Balancing

Setelah memahami apa itu Load balancing, selanjutnya kami akan menjelaskan beberapa manfaat load balancing yang bisa Anda dapatkan.

  1. Pendistribusian Traffic
    Dengan Load Balancing, beban tiap server dapat dibuat merata. Sehingga dengan cara ini setiap server tidak akan mendapatkan beban berlebih. 
  1. Mengurangi Downtime dan meningkatkan performa
    Traffic yang terdistribusi dengan baik, membuat website tetap bisa diakses dengan baik, walau terjadi lonjakan traffic.
  1. Meningkatkan Fleksibilitas
    Anda dapat melakukan pemeliharaan server, tanpa perlu khawatir website tidak bisa diakses. Server load balancing akan mendeteksi server yang menjadi tujuannya.

    Apabila server tujuan terdeteksi tidak aktif, traffic akan dialihkan ke server lain yang tersedia. 

Jenis Load Balancing

Ada beberapa metode load balancing yang perlu diketahui dan tiap metode ini menggunakan algoritma yang berbeda. Berikut beberapa diantaranya;

1. Round Robin

Metode Round Robin digunakan saat Anda memiliki beberapa server, dengan kemampuan, jenis, dan karakteristik server yang sama. Metode ini bekerja dengan mengarahkan traffic secara berurutan ke setiap server.

Sebagai contoh, saat perusahaan Anda memiliki 2 server, maka pengunjung website pertama akan diarahkan ke server pertama. Kemudian pengunjung website yang kedua akan diarahkan ke server ke dua, pengunjung website ke tiga akan diarahkan ke server pertama, begitu seterusnya.

Kekurangan metode ini load balancer tidak memperhitungkan beban masing-masing server.

2. Least Connection

Selanjutnya metode Least Connection menjawab kekurangan dari metode sebelumnya. Metode least connection mampu mendistribusikan traffic ke semua server yang dimiliki.

Ketika salah satu server mengalami beban yang besar, maka traffic akan diteruskan ke server yang lain.

3. Least Response Time

Server load balancer akan mengarahkan traffic ke server dengan koneksi aktif terkecil dan waktu response yang paling cepat. 

4. Least Bandwidth

Di Metode ini, load balancer akan mendistribusikan traffic ke server yang memiliki traffic Mbps paling kecil.

5. IP Hash

Yang terakhir adalah IP Hash. Metode IP Hash adalah server yang menjadi tujuan ditentukan dari IP (incoming packet), seperti alamat IP destinasi, port number, URL, hingga nama domain.

Cara Kerja Load Balancing

Berikut adalah cara kerja load balancing dari mulai masuknya requets dari client, hingga ditemukan server tujuannya.

  1. Pengguna melakukan request ke server load balancing, supaya diarahkan ke server website.
  2. Server load balancing menerima request tersebut, selanjutnya server load balancing akan mengecek apakah server tujuan sedang aktif atau tidak, dan akan mengecek beban kerja di server tujuan.
  3. Terakhir, dari analisa yang didapatkan dan berdasarkan jenis load balancing yang digunakan, server load balancing mendistribusikan traffic ke server tujuan. 

Setup Load Balancing di Linux Ubuntu

Setelah memahami cara kerja load balancing, selanjutnya mari melakukan setup load balancing. Pada demo kali ini, kami menggunakan server VPS dengan OS Linux Ubuntu yang di order dari Rumahweb Indonesia.

Apabila Anda belum memiliki server VPS, silakan melakukan order VPS KVM terbaik hanya di Rumahweb Indonesia. 

Step 1. Persiapkan Bahan

Dalam demo ini, kami akan menggunakan 3 server, dan kami akan menggunakan nama domain anggitwebsite.com.

  • Server 0
  • Image: Ubuntu 18.04
  • Hostname: load balancer
  • Private IP: 10.130.227.33
  • Server 1
  • Unlimited Hosting
  • Private IP: 203.175.8.40
  • Server 2
  • WordPress Hosting
  • Private IP: 203.175.9.75

Noted : Pada demo ini, server 1 dan server 2 hanya kami isi dengan file index.php. Berikut ini contoh isi file index.php di server 1.

Server 1 ~ 
Ini adalah server cPanel Rumahweb ~ IP 203.175.8.40 

Step 2. Install basic

  • Update dan Upgrade software di Server 1 yang berperan sebagai load balancer.
apt-get update && apt-get upgrade -y
  • Install Nginx di load balancer.
apt-get install nginx

Step 3. Membuat Virtual host file dan Upstream Module

  1. Hapus default file virtual host di Nginx
rm /etc/nginx/sites-enabled/default
  1. Membuat file virtual host baru di Nginx
nano /etc/nginx/sites-available/anggitwebsite.com
  1. Menambahkan IP Upstream pada server load balancer
upstream upstream {
    server 203.175.8.40;
    server 203.175.9.75;
}
  1. Tambahkan baris block berikut di bagian bawah dari baris block upstream
server {
    listen 80;
    server_name anggitwebsite.com www.anggitwebsite.com;
	
    location / {
        proxy_redirect      off;
        proxy_set_header    X-Real-IP $remote_addr;
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header    Host $http_host;
        proxy_pass http://upstream;
    }
}

proxy_set_header directive digunakan untuk meneruskan informasi penting tentang permintaan ke server upstream.

  1. simpan file kemudian buat  symbolic link ke directory sites-enabled
ln -s /etc/nginx/sites-available/anggitwebsite.com /etc/nginx/sites-enabled/anggitwebsite.com
  1. Lakukan configuration test untuk melakukan pengecekan error.
service nginx configtest
  1. Bila tidak terjadi error, silakan lanjutkan restart service Nginx
service nginx reload
  1. Sampai disini telah selesai di configure menggunakan http.

Step 4. Aktifkan SSL

  1. Tambahan directive berikut ini ke dalam file virtual hosts  (/etc/nginx/sites-available/anggitwebsite.com), letaknya didalam block server {}.
listen 443 ssl;
ssl on;
ssl_certificate         /etc/nginx/ssl/anggitwebsite.com/server.crt;
ssl_certificate_key     /etc/nginx/ssl/anggitwebsite.com/server.key;
ssl_trusted_certificate /etc/nginx/ssl/anggitwebsite.com/ca-certs.pem;

Beri tanda pagar pada #ssl_trusted_certificate bagian bila Anda menggunakan self-signed certificates.

Isi File SSL tersebut menggunakan certificated SSL yang sudah Anda miliki. Bila Anda membutuhkan certificated SSL, silakan melakukan order SSL murah terbaik di Rumahweb.

  1. Server block Anda, seharusnya saat ini seperti berikut.
server {
    listen 80;
    listen 443 ssl;
    server_name anggitwebsite.com www.anggitwebsite.com;

    ssl on;
    ssl_certificate         /etc/nginx/ssl/anggitwebsite.com/server.crt;
    ssl_certificate_key     /etc/nginx/ssl/anggitwebsite.com/server.key;
    ssl_trusted_certificate /etc/nginx/ssl/anggitwebsite.com/ca-certs.pem;

    location / {
        proxy_redirect      off;
        proxy_set_header    X-Real-IP $remote_addr;
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header    Host $http_host;
        proxy_pass http://upstream;
    }
}
  1. Lakukan configuration test untuk melakukan pengecekan error dan lanjutkan restart Nginx
service nginx configtest && service nginx reload

Step 5. Konfigurasi SSL Hardening

Melakukan konfigurasi SSL dengan menghilangkan dengan kerentanan chiper dan protokol lama. Aktifkan cache session SSL, supaya memberikan performa yang stabil di HTTPS website.

Tambahkan perintah berikut setelah ssl_trusted_certificate dengan mengaktifkan cache sebesar 20 MB dengan waktu 10 Menit.

ssl_session_cache shared:SSL:20m;
ssl_session_timeout 10m;

Tentukan protokol dan sandi yang akan digunakan dalam koneksi SSL. Di sini kami telah menghilangkan SSLv2 dan menonaktifkan cipher tidak aman seperti MD5 dan DSS.

ssl_prefer_server_ciphers       on;
ssl_protocols                   TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers                     ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS;

Strict Transport Security menginstruksikan semua browser web pendukung untuk hanya menggunakan HTTPS. Aktifkan dengan direktif add_header.

add_header Strict-Transport-Security "max-age=31536000";

Lakukan configuration test untuk melakukan pengecekan error dan lanjutkan restart Nginx

service nginx configtest && service nginx reload

Setelah menambahkan SSL Termination, seharusnya tampilan konfigurasi file /etc/nginx/sites-available/anggitwebsite.com akan terlihat seperti berikut ini.

upstream upstream {
    server 203.175.8.40;
    server 203.175.9.75;
}

server {
    listen 80;
    listen 443 ssl;
    server_name anggitwebsite.com www.anggitwebsite.com;

    ssl on;
    ssl_certificate         /etc/nginx/ssl/anggitwebsite.com/server.crt;
    ssl_certificate_key     /etc/nginx/ssl/anggitwebsite.com/server.key;


    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_trusted_certificate /etc/nginx/ssl/anggitwebsite.com/ca-certs.pem;
	
    ssl_session_cache shared:SSL:20m;
    ssl_session_timeout 10m;
	
    ssl_prefer_server_ciphers       on;
    ssl_protocols                   TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers                     ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS;
	
    add_header Strict-Transport-Security "max-age=31536000";

    location / {
        proxy_redirect      off;
        proxy_set_header    X-Real-IP $remote_addr;
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header    Host $http_host;
        proxy_pass http://upstream;

    }
}

Sampai disini server load balancer dengan SSL Termination sudah selesai dibuat.

Tes Load Balancer

Lakukan tes dengan mengunjungi domain Anda. Sebagai contoh kami akan berkunjung ke website anggitwebsite.com . Setelah berkunjung reload-reload hingga tampil perbedaan antara server 1 dan server 2.

Bila kedua server sudah menampilkan SSL dengan baik, maka Load Balancer sudah dipastikan dapat digunakan dengan baik.

contoh cara kerja load balancing

Ini adalah tampilan ketika domain mengarah ke server 1. Silakan di refresh-refresh halaman websitenya. bila domain mengarah ke server 2, maka akan tampil seperti tampilan berikut.

contoh load balancing

Demikian artikel kami tentang apa itu load balancing hingga cara membuat load balancing di server Ubuntu. Semoga bermanfaat.

Bermanfaatkah Artikel Ini?

Klik bintang 5 untuk rating!

Rating rata-rata 5 / 5. Vote count: 4

Belum ada vote hingga saat ini!

Kami mohon maaf artikel ini kurang berguna untuk Anda!

Mari kita perbaiki artikel ini!

Beri tahu kami bagaimana kami dapat meningkatkan artikel ini?

VPS Alibaba

Anggit TS

Selamat membaca, Semoga tulisan saya bermanfaat.
Bila ada salah kata, mohon maaf.

"tak ada gading yang tak retak, maafkan kesalahan keluarga Gajah". :D