Table of contents
Pengertian Load Balancing
Load balancing adalah teknik untuk mendistribusikan beban kerja (workload) secara merata di antara beberapa server atau komputer, sehingga dapat meningkatkan kinerja, ketahanan, dan skalabilitas sistem.
Apa saja manfaat load balancing
Manfaat load balancing antara lain:
- Meningkatkan kinerja sistem: Dengan mendistribusikan beban kerja secara merata di antara beberapa server, sistem dapat menghindari terjadinya bottleneck atau titik lemah yang dapat memperlambat kinerja sistem secara keseluruhan.
- Meningkatkan ketahanan sistem: Dengan memiliki beberapa server yang masing-masing mampu menangani beban kerja, sistem akan lebih tahan terhadap kegagalan server atau pemadaman sistem.
- Meningkatkan skalabilitas sistem: Dengan menggunakan load balancing, sistem dapat dengan mudah menambahkan atau mengurangi server sesuai dengan kebutuhan, sehingga dapat meningkatkan skalabilitas sistem.
Beberapa jenis atau metode load balancing antara lain:
- Round-robin: Metode ini mendistribusikan beban kerja secara bergantian pada setiap server yang tersedia. Metode ini cocok untuk sistem dengan beban kerja yang merata.
- Least connections: Metode ini mendistribusikan beban kerja ke server dengan jumlah koneksi yang paling sedikit. Metode ini cocok untuk sistem dengan beban kerja yang tidak merata.
- IP hash: Metode ini mendistribusikan beban kerja ke server berdasarkan alamat IP pengguna. Metode ini cocok untuk aplikasi yang menggunakan session persistence atau stateful.
- Weighted round-robin: Metode ini memberikan bobot atau nilai prioritas tertentu pada masing-masing server, sehingga dapat mempengaruhi cara pendistribusian beban kerja.
- Dynamic server addition/removal: Metode ini memungkinkan sistem untuk menambahkan atau mengurangi server secara dinamis sesuai dengan kebutuhan. Metode ini dapat meningkatkan skalabilitas sistem dan mengurangi biaya pengelolaan server.
Bagaimana cara kerja Load Balancing
Cara kerja load balancing adalah dengan mendistribusikan beban kerja (workload) secara merata di antara beberapa server atau komputer. Proses ini melibatkan tiga tahapan utama, yaitu:
- Monitoring: Load balancer akan memantau kesehatan (health) setiap server yang tersedia untuk menentukan server mana yang siap menerima beban kerja.
- Pemilihan server: Setelah memantau kesehatan setiap server, load balancer akan memilih server yang paling cocok untuk menerima permintaan dari klien sesuai metode jenis load balancing di paragraf sebelumnya. Pemilihan server dapat dilakukan berdasarkan beberapa faktor, seperti metode load balancing yang digunakan, prioritas server, dan kesehatan server.
- Pendistribusian beban kerja: Setelah memilih server yang paling cocok, load balancer akan mendistribusikan beban kerja secara merata di antara semua server yang tersedia. Hal ini dapat dilakukan dengan menggunakan metode load balancing tertentu, seperti round-robin, least connections, IP hash, weighted round-robin, atau metode lainnya.
- Setelah melakukan tahapan-tahapan di atas, load balancer akan meneruskan permintaan dari klien ke server yang dipilih, dan menerima respons dari server tersebut sebelum mengirimkannya kembali ke klien. Proses ini terjadi secara otomatis dan terus-menerus, sehingga dapat meningkatkan kinerja, ketahanan, dan skalabilitas sistem secara keseluruhan.
Contoh setup load balancer dengan 3 server di Ip yang berbeda, pada kasus ini contoh menggunakan domain tutorialweb.xyz
Berikut adalah langkah-langkah untuk membuat simulasi load balancing menggunakan 3 server dengan 3 IP yang berbeda menggunakan Nginx dengan domain tutorialweb.xyz
Install Nginx pada server utama dengan perintah di bawah ini
sudo apt-get update
sudo apt-get install nginx
Selanjutnya konfigurasi Nginx pada server utama dengan perintah ini
sudo nano /etc/nginx/conf.d/load-balancer.conf
Kemudian, tambahkan konfigurasi berikut:
upstream backend {
server 192.168.1.230;
server 192.168.1.231;
server 192.168.1.232;
}
server {
listen 80;
server_name tutorialweb.xyz;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
Lalu simpan file diatas.
Konfigurasi di atas mendefinisikan backend dengan tiga server, yaitu 192.168.1.230, 192.168.1.231, dan 192.168.1.232. Kemudian, Nginx akan mendengarkan port 80 dan meneruskan permintaan ke backend menggunakan proxy_pass. Selain itu, Nginx juga akan meneruskan header Host dan X-Real-IP ke backend.
Konfigurasi DNS untuk masing-masing server
Kamu perlu mengonfigurasi DNS untuk masing-masing server agar dapat diakses melalui nama host yang ditentukan dalam konfigurasi Nginx di atas. Misalnya, jika server1.tutorialweb.xyz memiliki IP 192.168.1.230, kamu dapat menambahkan entri DNS berikut:
server1.tutorialweb.xyz IN A 192.168.1.230
Lakukan hal yang sama untuk masing-masing server.
Langkah terakhir yakni restart Nginx dengan perintah di bawah
sudo service nginx restart
Setelah mengikuti langkah-langkah di atas, load balancing dengan Nginx pada 3 server dengan 3 IP yang berbeda menggunakan domain tutorialweb.xyz dengan parameter server yang diberikan sudah siap digunakan.
Kamu bisa menguji coba load balancing dengan mengakses tutorialweb.xyz pada browser. Permintaan akan didistribusikan secara merata di antara tiga server yang tersedia.
Keterangan
Berikut keterangan atas konfigurasi yang telah dibuat:
- Menggunakan upstream block
- Pertama-tama, dalam konfigurasi Nginx tersebut digunakan blok upstream untuk mendefinisikan backend server yang akan digunakan untuk load balancing. Dalam blok upstream tersebut, ditentukan tiga server yaitu 192.168.1.230, 192.168.1.231, dan 192.168.1.232.
- Menggunakan proxy_pass
- Selanjutnya, pada blok server yang terdapat di dalam konfigurasi Nginx digunakan proxy_pass untuk meneruskan permintaan ke backend server. Pada kasus ini, proxy_pass akan meneruskan permintaan ke backend server yang telah didefinisikan pada blok upstream.
- Menggunakan proxy_set_header
- Selain itu, pada konfigurasi Nginx tersebut juga digunakan proxy_set_header untuk menentukan header yang akan diteruskan ke backend server. Pada kasus ini, digunakan proxy_set_header untuk menentukan Host dan X-Real-IP yang akan diteruskan ke backend server.
- Menggunakan server_name
- Terakhir, pada blok server digunakan server_name untuk menentukan domain yang akan digunakan untuk load balancing. Pada kasus ini, digunakan server_name tutorialweb.xyz sehingga permintaan dari client akan diteruskan ke backend server yang telah didefinisikan pada blok upstream dengan menggunakan domain tutorialweb.xyz.