Language:

Search

Tutorial haproxy dan capistrano untuk java web

  • Share this:
post-title

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 memori 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

Armin

Armin

IT Dev, SEO & Digital Marketing Specialist with 7+ years experience, Coder, Sys Admin, Designer, Blogger