Apa yang Terjadi Saat Website Kelebihan Traffic? Solusinya: Load Balancer!
Bayangkan, kamu sedang asyik berselancar di internet, tiba-tiba sebuah situs web yang ingin kamu akses menjadi sangat lambat atau bahkan tidak bisa diakses sama sekali. Situasi seperti ini sering terjadi ketika sebuah situs mengalami lonjakan traffic yang melebihi kapasitas servernya. Akibatnya, pengalaman pengguna menjadi buruk, dan banyak dari mereka akan beralih ke layanan lain yang lebih responsif. Tidak hanya pengguna yang dirugikan, tetapi pemilik situs web juga kehilangan kepercayaan dan pendapatan.
Nah, untuk mengatasi masalah ini, ada sebuah solusi yang bernama Load Balancer.
Apa Itu Load Balancer?
Load balancer adalah sebuah teknologi penting dalam infrastruktur jaringan yang bertugas untuk mendistribusikan beban kerja secara merata di antara beberapa server. Dengan adanya load balancer, arus lalu lintas jaringan dapat dikelola dengan baik sehingga memastikan website tetap responsif, meskipun sedang mengalami lonjakan traffic yang besar. Load balancer juga berperan dalam menjaga keamanan dan stabilitas sistem, memastikan bahwa layanan selalu tersedia dan berjalan lancar.
Bagaimana Load Balancer Bekerja?
Load balancer bekerja dengan cara membagi beban kerja (misalnya, permintaan akses ke sebuah situs web) ke beberapa server yang tersedia. Jadi, ketika kamu mengirimkan permintaan ke sebuah server, dan server tersebut sedang sibuk atau bahkan down, load balancer akan mengarahkan permintaanmu ke server lain yang masih tersedia. Dengan begitu, pengguna tetap mendapatkan pengalaman yang baik tanpa gangguan, dan situs web tetap online tanpa downtime.
Ini mirip seperti ketika kamu berada di sebuah pusat perbelanjaan yang ramai. Jika satu kasir penuh dengan antrean, kamu bisa pindah ke kasir lain yang lebih kosong. Dalam konteks situs web, load balancer adalah "kasir" yang secara otomatis mengarahkan kamu ke "loket" yang paling cepat.
Kapan Load Balancer Digunakan?
Load balancer banyak digunakan oleh layanan yang harus selalu online dan melayani jumlah pengguna yang besar, seperti e-commerce, layanan streaming, dan aplikasi berbasis cloud. Dengan menggunakan load balancer, layanan ini dapat memastikan bahwa mereka tetap berjalan lancar, cepat, dan aman, bahkan di bawah tekanan traffic yang tinggi.
Ada tiga jenis utama load balancer yang perlu kamu ketahui, masing-masing dengan keunggulan dan cara kerjanya sendiri.
1. Hardware Load Balancer
Hardware Load Balancer adalah perangkat fisik yang biasanya dipasang bersamaan dengan server yang tersedia. Perangkat ini bertugas untuk membagi beban kerja antara server yang aktif dan server yang siaga (standby), memastikan bahwa jika satu server mengalami kelebihan beban atau masalah, server lain dapat mengambil alih tugas tersebut. Hardware load balancer sering digunakan dalam infrastruktur skala besar di mana stabilitas dan performa tinggi sangat diperlukan.
2. Software Load Balancer
Software Load Balancer adalah aplikasi yang disediakan oleh penyedia layanan dan diinstal secara digital saat mengkonfigurasi server. Terdapat dua jenis software load balancer:
- Komersial: Jenis ini mudah digunakan dan banyak diadopsi oleh berbagai perusahaan karena kemudahan integrasinya.
- Open Source: Jenis ini lebih fleksibel dan dapat dikustomisasi sesuai kebutuhan spesifik, membuatnya ideal bagi pengguna yang membutuhkan kontrol lebih besar atas infrastruktur mereka.
Software load balancer sering dipilih karena kepraktisannya dan fleksibilitas dalam menyesuaikan dengan berbagai kebutuhan sistem.
3. Virtual Load Balancer
Virtual Load Balancer adalah gabungan dari hardware dan software load balancer. Ini sering ditawarkan sebagai layanan bundling oleh penyedia cloud dan sangat berguna sebagai solusi cadangan (backup) ketika hardware atau software load balancer mengalami masalah. Virtual load balancer dapat terintegrasi dengan baik ke dalam infrastruktur cloud, menawarkan keandalan dan skalabilitas yang dibutuhkan oleh aplikasi modern.
Pada diagram ini, kita dapat melihat bagaimana masalah overload traffic pada server terjadi dan solusi yang dapat diterapkan menggunakan load balancer. Dengan menggunakan load balancer, kita dapat membagi traffic yang masuk ke website secara merata ke beberapa server, sehingga mencegah server dari kelebihan beban. Dalam contoh ini, saya menggunakan load balancer untuk mengelola traffic dan menghubungkan empat server secara efisien.
Solusi dengan Load Balancer:
- Distribusi Traffic: Load balancer akan mendistribusikan beban kerja yang masuk ke empat server yang terhubung, memastikan tidak ada satu server pun yang kelebihan beban.
- Failover Management: Jika salah satu server down atau tidak tersedia, load balancer akan mengarahkan traffic ke server lain yang masih berfungsi.
- Scalability: Dengan menambah server baru ke dalam jaringan, load balancer dapat dengan mudah menyesuaikan kapasitas tanpa mengganggu layanan yang sedang berjalan.
Struktur Direktori:
Untuk mengatur file dan konfigurasi dalam proyek ini, kita bisa menyusun struktur direktori seperti berikut:
File ini hanya menampilkan IP server yang melayani permintaan.
kita juga bisa mengcustom bentuk htmlnya dan melihat log ip yang tersedia
docker-compose.yml
di direktori root proyek: nginx.conf
di dalam direktori load_balancer/
:untuk menjalankanya kita juga bisa menggunakan command
docker-compose up -d
docker compose stop
untuk menmulai lagi dengan perintah
untuk menghapus
docker compose down
docker ps
untuk mengakses kita pergi ke berowserr dan akses
http://localhost:8080
untuk melihat konten dari server yang berbeda dimuat secara acak. Setiap kali Anda memuat ulang halaman, Anda akan melihat IP server yang berbeda dari mana konten dimuat.Pengujian traffic dan server yang mati
jika kita ingin meguji dengan tarffict yang masuk kita bisa mengujikan dengan script melalui pithon, php, shell atau yang laindalam case ini saya mengujiknya dengan powersheel yang berjalan dan dapat mengirim tarffict requesta yang diinginkan
untuk menjalankan dengan command
.\send_traffic.ps1
maka akan mengirim request ke server docker yang berjalan
disini kita bisa melihat log yang berjalan dan tarffing nya berhasil mengirim ke server dockernya
Dalam proyek Docker ini, Docker network dan image webserver berperan penting dalam mengatur komunikasi antar container dan menjalankan server web. Mari kita bahas lebih detail tentang masing-masing:
1. Docker Network
Docker network digunakan untuk menghubungkan container sehingga mereka bisa berkomunikasi satu sama lain. Dalam file docker-compose.yml
yang telah kita buat, terdapat definisi jaringan:
networks:
: Bagian ini mendefinisikan jaringan Docker yang digunakan dalam proyek.my-network:
: Nama jaringan yang dibuat. Anda dapat memilih nama lain sesuai kebutuhan.driver: bridge
: Driver jaringan yang digunakan. Driver bridge
adalah driver default untuk jaringan di Docker yang menghubungkan container di satu host.2. Image Webserver
Image webserver merujuk pada image Docker yang digunakan untuk menjalankan server web. Dalam proyek ini, kita menggunakan dua jenis image:
- Nginx: Untuk load balancer.
- PHP-Apache: Untuk server web yang menjalankan file PHP.
Image Nginx
Image:
nginx:latest
Digunakan untuk load balancer yang menjalankan konfigurasi Nginx.
Didefinisikan dalam
docker-compose.yml
di bagianload_balancer
:
Image:
php:7.4-apache
Digunakan untuk server web yang menjalankan PHP.
Didefinisikan dalam
docker-compose.yml
di bagianserver1
,server2
,server3
, danserver4
dengan opsibuild
:
build:
: Menggunakan Dockerfile yang ada di direktori ./server1
untuk membangun image.Docker Network: Jaringan my-network
didefinisikan dalam docker-compose.yml
untuk memastikan bahwa semua container (load balancer dan server) dapat berkomunikasi satu sama lain.
Image Webserver:
- Nginx: Menggunakan image
nginx:latest
untuk load balancer. Konfigurasi Nginx dinginx.conf
memungkinkan load balancer mendistribusikan permintaan ke server. - PHP-Apache: Menggunakan image
php:7.4-apache
untuk setiap server web. Dockerfile di masing-masing server (server1
,server2
,server3
,server4
) mengatur bagaimana server PHP diatur dan dijalankan.Cara Kerja Load Balancer
Dapatkan Permintaan Klien: Load balancer mendengarkan permintaan pada port 80 dan menerima semua permintaan dari klien yang masuk ke port 8080 di host.
Distribusi Permintaan: Berdasarkan konfigurasi dalam
nginx.conf
, Nginx mendistribusikan permintaan ke server backend (server1
,server2
,server3
,server4
) secara bergantian.Tanggapan dari Server: Server yang menerima permintaan akan memprosesnya dan mengirimkan tanggapan kembali ke Nginx.
Kirim Tanggapan ke Klien: Nginx mengirimkan tanggapan yang diterima dari server backend ke klien.
1 Comments
wihh keren
ReplyDelete