aws : high availability ( HA )

HA didalam dunia web adalah satu architecture yang dibuat bagi memastikan aplikasi/web dapat diakses sepanjang masa.Cuba bayangkan laman web jualan anda tidak dapat diakses oleh pelanggan dalam tempoh masa tertentu. Pastinya pelanggan anda akan bising bukan? :)

Bagi menyelesaikan masalah ini, architecture HA di bina. Walau bagaimanapun, untuk mencapai Availability 100% agak mustahil, tetapi tidak bermakna ia tidak boleh dicapai. Sebagai contoh. AWS memberi jaminan 99.95% availability untuk EC2 instance, ini bermaksud maksimum downtime untuk EC2 adalah 4.38 jam setahun, atau purata 21.56 minit sebulan.



Berikut adalah senarai Availability Percentage dan jumlah maksimum downtime.
Availability % Downtime per year Downtime per month* Downtime per week
90% ("one nine") 36.5 days 72 hours 16.8 hours
95% 18.25 days 36 hours 8.4 hours
97% 10.96 days 21.6 hours 5.04 hours
98% 7.30 days 14.4 hours 3.36 hours
99% ("two nines") 3.65 days 7.20 hours 1.68 hours
99.5% 1.83 days 3.60 hours 50.4 minutes
99.8% 17.52 hours 86.23 minutes 20.16 minutes
99.9% ("three nines") 8.76 hours 43.8 minutes 10.1 minutes
99.95% 4.38 hours 21.56 minutes 5.04 minutes
99.99% ("four nines") 52.56 minutes 4.32 minutes 1.01 minutes
99.999% ("five nines") 5.26 minutes 25.9 seconds 6.05 seconds
99.9999% ("six nines") 31.5 seconds 2.59 seconds 0.605 seconds
99.99999% ("seven nines") 3.15 seconds 0.259 seconds 0.0605 seconds



berbalik pada tujuan asal post ini, bagaimana untuk menyediakan infra HA untuk web app kita.

Create AMI Image

saya andaikan anda telah berjaya setup web app anda menggunakan EC2 instance. Jika tidak pasti bagaimana, anda boleh rujuk post saya yang lepas bertajuk aws : Memasang server di Amazon Elastic Compute Cloud (Amazon EC2) 

Tujuan kita create ami image adalah sebagai master copy untuk server-server yang kita telah setup sebelum ini. Dengan image ini nanti, kita tidak perlu lagi setup os dan aplikasi-aplikasi lain yang diperlukan oleh server kita.

Klik menu "instance (1)" , kemudian klik checkbox senarai instance yang kita ingin jadikan ami image (2) . kemudian klik butang "action (3)"



Select "Create Image (4)"




Masukkan nama image (5) , saya biasanya akan gunakan NamaApps di ikuti dengan tarikh saya bina image tersebut. Tick "no reboot (6)" jika server kita telah live. Jika tidak, instance anda akan di reboot sewaktu proses membina image nanti. Klik butang "Create Image (7)" untuk terus ke langkah seterusnya.



Satu popup dialog akan keluar. Anda boleh lihat ami image dengan klik pada "view pending image..(8)" . Klik butang "close (9)" untuk tutup dialog tersebut.



Kita boleh juga lihat senarai image dengan klik pada "AMIs (10)" menu, anak panah (11) menunjukkan senarai ami yang kita ada.



Create load balancer

Langkah seterusnya adalah menyediakan load balancer bagi membolehkan traffic web anda di hantar kepada lebih dari satu instance ( server ). Anda boleh ikut langkah-langkah dari posting aws : Load Balancing

Configure HA

Ok. kita akan mulakan configuration HA disini. Klik pada menu "Launch Configuration (12)", kemudian "Create Auto Scaling group (13)". Jika kita perhatikan, menu tersebut berada di bawah "Auto Scaling". Ini kerana HA merupakan sebahagian dari autoscaling. Kita akan bincangkan berkenaan Auto Scaling pada post akan datang.



klik "Create Launch Configuration (13)"



klik "My AMIs (15)" . kemudian pilih ami image yang kita create pada langkah sebelum ini. Klik butang "select (17)" untuk memilih ami image tersebut.



Pilih instance type yang ingin digunakan. dalam contoh ini saya gunakan t1 micro (18) . Anda boleh pilih mana-mana instance type dengan klik pada "All instance types" ataupun berdasarkan group instance seperti "General purpose" atau "Memory optimized". Senarai instance akan di paparkan di bahagian (19). Select instance type yang di inginkan (19) dan kemudian klik "Next: Configure details (20)"



Taip nama launch config (21). Klik "Next: Add Storage (22)"



Set saiz storage yang ingin digunakan (23). Nilai default adalah 8 gb. Klik "Next: Configure Security Group (24)"



Pilih "Select an existing security group (25)" untuk memilih security group yang kita sudah bina sebelum ini. Jika tidak pasti, anda boleh rujuk tutorial aws : Memasang server di Amazon Elastic Compute Cloud (Amazon EC2)  .Pilih security group dari senarai (26) dan klik "review (27)"



Review dan klik butang "Create launch configuration (28)"



Pilih "Choose an existing key pair (29)" dan pilih key pair dari senarai (30). Jika tidak pasti, rujuk  aws : Memasang server di Amazon Elastic Compute Cloud (Amazon EC2) untuk penerangan berkenaan key pair dan kegunaannya. Tick T&C (31) dan klik butang "Create launch configuration (32)"



Ok langkah seterusnya, Create Auto Scaling Group. Taip Group Name (33) . kemudian masukkan nilai Group size (34). Group size ini akan menentukan berapa banyak instance yang akan dibina. Saya letak jumlah instance = 2 untuk menunjukkan bagaimana HA berfungsi. Masukkan availability zone yang ingin digunakan (35) . Pastikan Availability zone kita tally dengan setting yang digunakan dalam Load Balancer. Rujuk tutorial aws : Load Balancing untuk maklumat lanjut berkenaan load balancer.

Tick "Receive traffic frim Elastic Load Balancer" dan taip name load balancer (36) . Kemudian klik butang "Next: Configure scaling policies (37)"



Klik "Keep this group at its initial size (38)" dan "Next: Configure Notification (39)"



Anda boleh set notification dengan klik butang "Add notification (40)". saya skip step ni dan terus ke klik butang "Review (41)"



Semak setting anda (42) dan klik "Create Auto Scaling Group (43)"



Selesai. Setting untuk HA selesai disini. Klik "View creating log (44)" untuk semak log atau klik "Close (45)" untuk tutup.

Nota: 2 instance baru akan di-create secara automatik ( group size dalam step sebelum ini = 2 )



Kita boleh semak semula setting autoscaling group dengan klik pada "Auto Scaling Group (46)" menu. (47) adalah senarai auto scaling group yang ada.



Semak

Untuk menyemak sama ada instance kita telah di-create ataupun belum, klik menu "Instances (48)" . (49) menunjukkan senarai instance yang telah di-create.



Untuk menguji HA, anda boleh buka browser enter DNS load balancer anda. Jika tidak pasti, boleh rujuk tutorial aws : Load Balancing



Jika perhatikan ujian di dalam video di atas, web site masih lagi live walaupun salah satu instance telah down ( terminated ). Di sinilah fungsi HA, web site masih lagi up walaupun salah satu instance telah down. AWS akan auto create instance baru berpandukan autoscaling policy yang kita set.Dalam tutorial ini saya set min instance = 2, maka aws akan pastikan terdapat 2 instance running sepanjang masa.

Apa akan jadi jika kesemua instance di terminate?. Jawapannya, website akan down. Namun, perkara ini jarang berlaku memandangkan setiap instance di create pada availability zone yang berbeza. Satu kelebihan menggunakan aws disini, kita tidak perlu manually create instance baru untuk menggantikan instance yang lama. Semuanya dilakukan secara automatik mengikut setting policy yang kita buat.

Kita juga boleh menggunakan architecture ini untuk update sebahagian instance mengikut jadual tanpa perlu down-kan website kita.

Next step adalah autoscaling. InsyaAllah saya akan kongsikan pada tutorial akan datang. Autoscaling membolehkan website kita scale-out secara automatik bila diperlukan.
Ada sebarang pertanyaan, cadangan, komen atau pembetulan? Sila nyatakan di ruangan komen di bawah.