aws : Load Balancing

Load balancing didalam dunia web adalah satu kaedah untuk membahagikan beban traffic kepada beberapa server. Ini disebabkan sebuah server tunggal tidak mampu lagi menampung bebanan traffic. Langkah pertama, mungkin kita akan buat vertical scaling ataupun scale up dengan menambah resource seperti memory dan sebagainya.

Vertical scaling mempunyai limitation, sampai satu tahap, kita tidak boleh tambah resource server lagi disebabkan kekangan hardware itu sendiri. Contohnya IBM BladeCenter HX5 boleh upgrade memory Up to 512 GB per 2-socket HX5, up to 1.0 TB for a 4-socket HX5 configuration, and up to 1.25 TB for an HX5 + MAX5 configuration .



Jika kita sudah upgrade ( vertical scaling ) sehingga maksimum, apa lagi yang kita boleh lakukan untuk menambah resource?. Jawapannya tiada. Di sini lah server kedua diperlukan dan istilah harizontal scaling atau scale out di perkenalkan. Memandangkan kita sudah ada 2 server, timbul masalah bagaimana untuk mambolehkan user akses kedua-dua server tersebut dari domain yang sama?. contohnya sebelum ini jika kita melawat laman web http://ibnuyahya.com , kita akan dibawa ke server 1 kerana di set sebegitu. Bagaimana untuk membolehkan user yang melawat http://ibnuyahya.com akan di pergi ke server1 atau server2? Jawapannya load balancer.

Kita tinggalkan Load balancer buat seketika dan tumpukan seni bina server yang manakah menjadi pilihan. Scale Up atau Scale Out.?

Scale Up

Menambah resource seperti CPU, Memory, Harddisk.



Scale Out

Manambah bilangan server.




pilihan anda?. apa pun pilihan, bergantung kepada keperluan semasa. Jika user anda konsisten dan traffic rendah, mungkin scale up menjadi pilihan. Jika bilangan user anda ramai dan traffic yang tinggi sehingga tidak dapat di tampung oleh satu server yang power ( scale up dah tahap maksimum ) , Scale Out mungkin menjadi pilihan. Faktor lain seperti kos juga boleh memainkan peranan sama ada mahu Scale Up ataupun Scale Out.

ok. berbalik kepada load balancer. Dari kes di atas, pelawat http://ibnuyahya.com akan ke load balancer dan seterusnya akan di uruskan oleh load balancer sama ada ke server1 atau server2.



Memasang Load Balancer didalam AWS

Ok. Katakan kita mempunyai 2 instance dengan label Server 1 dan Server 2 (1).



bagaimana untuk mambolehkan user akses ke server tersebut?. secara asasnya, kita boleh benarkan user akses secara langsung ke server tersebut melalui public dns. ( abaikan VPC ).

Server 1 di akses menggunakan http://ec2-54-244-75-226.us-west-2.compute.amazonaws.com/ (2) dan http://ec2-54-184-13-190.us-west-2.compute.amazonaws.com/ (3) . Ini menimbulkan masalah. kita terpaksa menggunakan url yang berbeza untuk apps yang sama. Disinilah perlunya load balancer.




Klik pada menu Load Balancing (4) kemudian Create Load Balancer (5)


Masukkan nama load balancer di ruangan Load Balancer Name (6) , secara default, load balancer buka HTTP protocol. Kita boleh tambah protocol yang lain seperti ftp dan https disini (7). Klik Continue (8)



set ping info (9). Advance options (10) dan di ikuti butang continue (11)

Select instance yang ingin di masukkan kedalam load balancer (12). Klik continue (13) Semak semua setting (14) dan klik continue (15)


Klik close (16)

Load balancer telah selesai di setup (17) . Klik senarai load balancer (18) untuk melihat maklumat yang berkaitan dengannya. Anak panah (19) menunjukkan public dns load balancer kita.


Klik tab instance (20) dan lihat status instance (21) . status instance akan bertukar menjadi In Servis (23) jika instance dalam keadaan Healthy. In Service (23) bermaksud traffic akan di salurkan ke instance tersebut oleh load balancer. Jika instance dalam keadaan Out Of Service, tiada trafik akan dihantar. Kita boleh dapatkan maklumat kenapa instance dalam keadaan Out Of Service dengan mouse over pada link Why (21). Klik ikon refresh (22) untuk re-load page.


Semak

Setelah instance ready ( status : in Service ), uji load balancer dengan menaip load balancer dns (19)  di dalam browser. Dalam contoh ini url load balancer saya adalah myLB-1501582352.us-west-2.elb.amazonaws.com dan saya edit file html untuk menunjukan Server 1 dan Server 2 bagi melihat perbezaannya. Perhatikan url tidak berubah ( 24 ) dan (26) ,  test pertama ( 24 )  menunjukkan load balancer salurkan trafik ke Server 1(25)  manakala test kedua (26) disalurkan ke Server 2 (27).




Saya harap sekarang kita dah faham bagaimana nak setting load balancer didalam AWS dan apakah fungsi load balancer. Dalam tutorial selanjutnya, saya akan berkongsi bagaimana memasang Auto Scaling dan High Availability menggunakan AWS ( Amazon kena bagi komisen ni hehe )

Ada sebarang pertanyaan, cadangan, komen atau pembetulan? Sila nyatakan di ruangan komen di bawah.