Setup LoadBalancer Untuk Menejemen Request Traffic Ke Database Server

Ayi angio
4 min readJul 15, 2024

--

Photo by Ryoji Iwata on Unsplash

Bagian terkahir dari konfigurasi Database replication, pada artikel sebelumnya kita telah membuat kedua server database sudah tersinkron secara realtime pada artikel ini kita akan coba menambahkan sebuah server baru sebagai loadbalancer yang akan membagikan traffic request dari user jadi beban request tidak akan cenderung kesalah satu server.

Jika kalian belum membaca artikel sebelumnya silahkan untuk membaca terlebih dahulu

Disclaimer

Eksperimen ini hanya bersifat lokal dan belum melalui tahap pengujian yang mempuni seperti stress test, DDOS server, konsistensi data ketika data di write secara bersama kedalam dua server.

Pada langkah berikut kita akan menggunakan istilah yang berbeda dari artikel sebelumnya

  1. db-server = Server Database 1 & 2
  2. lb-server = Server LoadBalancer

Prerequisite

  • Virtualbox
  • SSH

Steps

Database

  • SSH ke salah satu db-server
  • Buat Akun mysql untuk lb-server agar bisa mengakses mysql server
#Create User
create user '<user lb-server>'@'<ip lb-server>' identified by '<Password>' ;
  • Memberikan Setara root untuk user haproxy_proxy , pada bagian ini sesuaikan dengan kebutuhan kalian. User bisa di buat lebih banyak dan lebih spesifik untuk akses ke dalam database
#Grant Access
grant all privilleges on *.* to '<user lb-server>'@'<ip lb-server>';

LoadBalancer

  • Buat Virtual Server baru pada virtual box dengan sistem operasi ubuntu server
  • Ssh kedalam lb-server
  • Pastikan Server loadbalancer berada dalam satu subnet yang sama dengan kedua server database
  • Install Mysql-Client pada lb-server
  • Install HAproxy LTS atau 3.0.x
  • Edit file konfigurasi /etc/haproxy/haproxy.cfg dengan menambahkan bagian DB replica
Config Round-Robin

Berikut penjalasan singkat dari konfugarsi tersebut

  • Bagian DB Replica adalah konfigurasi untuk mendefinisikan algoritma yang dipakai adalah roundrobin, menggunakan protokol tcp, serta kedua db-server beserta port
  • Perlu perhatikan untuk port nya harus sesuai yang di konfigurasi pada database server karna dari lb-server butuh mengakses seperti layaknya user jika kita mengakses nya
  • pada bagian option tcp-check adalah konfigurasi untuk uptime dari db-server jika ada salah satu mati maka lb-server akan mengarahkan request ke server yang sedang UP
  • (Optional) Bagian Stats adalah konfugrasi untuk mengaktifkan dashboard bawaan dari HAproxy yang memuat informasi seperti byte yang telah di transfer, error message, warning dan lain nya
Stats HAproxy
  • Restart-Service HAproxy
sudo systemctl restart haproxy

Testing

  • Kita mencoba untuk mengakses db-server dari terminal local yang ada di laptop melalui IP dari Loabalancer dengan menggunakan query berikut
mysql -h <ip lb-server> -u <user mysql lb-server> -p -e "Show Variables Like 'server_id'";
  • Kita bisa melihat bahwa request kita tidak akan diarahkan hanya pada satu server saja.
  • Loadbalancer sudah terkonfigurasi sesuai dengan skema pada artikel pertama.

FAQ

  • Jika terjadi failover kepada salah satu server apakah datanya akan hilang atau rusak pada server tersebut ? Jawaban : ketika server tersebut up makan data akan secara otomatis di sinkronkan kembali
  • Jika salah satu server mati kemundian dinyalakan apakah akan langsung terkoneksi Master to Master atau Master to Slave ? Jawab : harus di konfigurasi kembali karena server down secara otomatis semua service yang berjalan akan otomatis mati maka konfigurasi tersebut juga akan otomatis hilang, akan tetapi file konfigurasi mysql nya tidak akan hilang hanya konfigurasi master to slave atau master to masternya yang butuh di konfig kembali
  • Jika ada db-server yang mati apakah aplikasi yang menggunakan database tersebut akan down juga ? Jawaban : jika salah satu db-server mati aplikasi tidak akan down karena aplikasi merequest melalui loadbalancer yang mana lb-server akan mengarahkan ke db-server yang masih dalam keadaan up

Kesimpulan

  • Loadbalancer butuh mysql-client yang diinstall pada server
  • Loadbalancer butuh user untuk mengakses db-server yang nanti akan digunakan oleh end-user bisa people ataupun service untuk apps lain seperti backend, Third-party dan lain sebagainnya **
  • Loadbalancer memiliki beberapa alternatif algoritma yang bisa dipakai sesuai dengan kebutuhan

Reference

--

--