Tutorial haproxy dan capistrano untuk ...

Tutorial haproxy dan capistrano untuk java web


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

0.00 / 0 votes

In order to comment, please sign in

Comments


Loading
User Menu
Tag Cloud