Web applikasi Java umumnya sangat efisien karena applikasi multithreading yang
hanya butuh anda jalankan di satu atau proses berlebih yang melakukan permintaan secara serempak
hal ini pun kontras ke ruby web apps di mana anda harus sering kali
melayani request proses berkali-kali
padahal kalau pake satu proses tanpa cache (~) akan menghemat
banyak memori di sistem
Seperti yang kita ketahui,kekurangan dari satu proses tentunya harus sering restart terus menerus
dan Dalam kasus Ruby app server ini seperti Unicorn
dimana beberapa proses yang berjalan bisa di setting untuk restart secara rolling.
Jika Anda menggunakan web httpd seperti Tomcat 7,dapat mendukung restart server yang full memor
tapi coba kita asumsikan aplikasi web Java JVM nya berjalan di satu perintah
(misal java-jar backend-1.0.jar &).
tentunya setup seperti ini juga bs untuk setiap service httpd proses tunggal.
sehingga untuk dapat restart terus-menerus dari konfigurasi seperti ini, kita dapat menggunakan Capistrano dengan haproxy.
Skenario :
* diantar 2 server yang berbeda dengan 1 proses yang masing-masing dua proses pada satu server sebenarnya jug tidak perlu failover
* Menggunakan haproxy buat load balance nya
nah di sini jangan lupa di tambah healt check end point (/haproxy-dodol.txt)
biar bisa jalankan file teks kosong.
Penting banget loh pakai random srting sebagai end point nya kalau
jalankan di cloud public,sebagai load balancer yang jadi referensi
server address lama dan haproxy di sini bisa menerima atau tidaknya
server .
nah cukup tambahkan seperti ini di file haproxy.cfg anda
option httpchk HEAD /haproxy-dodol.txt HTTP/1.0
jangan lupa cek lagi service yang jadi backend nya
nah di script capistrano nya coba tambahkan 2 server lagi sebagai app role nya
server \"192.168.1.10\", :app
server \"192.168.1.11\", :app
dan jadikan task restartnya supaya:
* Hapus check file di satu server,yang akan hapus server dari load balancer
* Restart Server.
* Ping server.
* Tambahkan check file di back untuk start server yang di pake haproxy,supaya kembali ke load balancernya
* Agar bisa looping ke tiap config servernya
dengan script...
desc \"Restart\"
task :restart, :roles => :web do
haproxy_health_file = \"#{current_path}/path-static-files-dir/haproxy-dodol.txt\"
self.roles[:app].each do |host|
run \"rm #{haproxy_health_file}\", :hosts => host
sleep(5)
run \"sudo restart backend_server\", :hosts => host
sleep(5)
run \"touch #{haproxy_health_file}\", :hosts => host
end
end
In order to comment, please sign in
Comments