Apa yang bisa kami bantu?

LB, alias Load Balancer, adalah salah satu teknik untuk menyebar beban ke banyak peladen (server), sehingga ada dua hal yang bisa tercapai: ketersediaan (availability) dan redundansi. Salah satu LB yang populer adalah HAProxy, dan cara dia membagi beban ada berbagai macam, seperti source IP (koneksi dari alamat IP yang sama akan selalu ke peladen yang sama), least connections (koneksi baru diarahkan ke peladen dengan jumlah koneksi terendah), dan round robin (koneksi baru akan selalu diarahkan ke peladen yang berbeda dari sebelumnya). Misalnya LB dengan round robin, maka perilaku yang diharapkan setiap kali menekan refresh pada browser adalah mendapatkan peladen yang berbeda dari sebelumnya. Perilaku ini didapatkan pada browser modern seperti Safari dan Firefox.


Problemnya adalah jika menggunakan browser Chrome, maka perilaku yang didapatkan tidak sesuai dengan yang diharapkan, peladen yang didapatkan akan selalu sama. Ini karena cara kerja Chrome yang akan terus membuka koneksi TCP ke LB, sehingga walau dilakukan refresh atau force refresh, HAProxy akan melihat itu berasal dari satu koneksi yang sama, sehingga akan selalu diarahkan ke peladen yang sama. Cara untuk memaksa Chrome menutup dan lalu membuka koneksi yang baru adalah dengan menutup Chrome atau dengan menggunakan perintah chrome://net-internals#sockets lalu menekan tombol Close idle sockets, baru setelah itu Chrome akan membuka koneksi baru dan HAProxy akan mendeteksi koneksi yang berbeda dari sebelumnya. Ini sebetulnya tidak terlalu berguna dari sisi pengguna awam, namun berguna dari sisi pengembang aplikasi web yang ingin mencoba apakah LB-nya bekerja dengan baik atau tidak dengan browser Chrome.


(source: Eko Juniarto)