Salah satu keunggulan menggunakan AWS adalah kemudahan untuk availability. Penggunaan multiple server atau instance adalah teknik untuk membuat sebuah aplikasi agar selalu available. AWS menyediakan load balancer services yang memudahkan kita untuk memanage banyak instance untuk bekerja bersama-sama. Point penting penggunaan Load Balancer adalah untuk menyeimbangkan load atau beban kerja untuk didistribusikan ke beberapa instance.
Sebenarnya website ini hanya berjalan pada 1 instance saja sehingga saya tidak perlu setup load balancer. Tujuan saya menggunakan load balancer adalah untuk menyembunyikan IP asli server dan untuk mendapatkan free SSL certificate dari AWS. Secara security IP address server kita tidak terexpose. Jika akan dilakukan ddos maka yang kena adalah load balancer bukan server secara langsung.
Membuat Target Group
Sebelum membuat load balancer, kita perlu membuat Target group terlebih dahulu. Target group berisi instance yang akan menjadi target dari load balancer.
- Masuk ke EC2 Instance kemudian ke target group
2. Create Target Group pilih instance
3. Beri nama Target group dan pilih port 80. untuk protocol bisa dipilih HTTP1
4. Untuk healht check pilih HTTP. Kemudian untuk path biarkan default / kecuali kalian punya 1 folder khusus yang akan digunakan untuk check jika web server (apache/nginx) aktif. kemudian klik next
5. Langkah selanjutnya adalah meregister instance yang aktif di dalam 1 VPC. Instance yang dipilih di sini akan menjadi instance target dari Load Balancer. Klik instance kemudian klik add include as pending below
6. Scroll ke bawah. Instance yang dipilih akan muncul di sini. klik create target group untuk membuat target group
Membuat Load Balancer
Setelah target group dibuat. Kita lanjut ke menu utama yaitu pembuatan load balancer.
- Masuk ke menu Load Balancer di EC2 kemudian klik Create Load Balancer
2. Pilih Application Load Balancer
3. Beri Nama load balancer. untuk scheme pilih internet karena load balance ini akan diakses dari public internet. IP address type pilih IPv4, jika kamu menggunakan IPv6 bisa dipilih dualstack
4. Selanjutnya pilih VPC tempat target group dibuat. Lalu pilih availability zone. minimal 2 availability zone harus dipilih mestikan kita tidak punya Ec2 di AZ tersebut. Load balancer secara best practise minimal 2 instanse di AZ yang berbeda
5. Selanjutnya pilih security group untuk ALB. Pilihan default sudah cukup karena prinsipnya ALB hanya akan menerima incoming dari luar untuk diteruskan ke Target group. Namun jika mau lebih strict bisa dibuat security group incoming hanya port HTTP dan HTTPS saja. kemudian outgoingnya ke Target group
Pada bagian listener pilih port 80 kemudian forward ke target group yang tadi kita buat
6. Langkah terakhir adalah klik create load balancer
7. Tunggu sampai statusnya aktif seperti ini
Pointing Load Balance ke Domain
Langkah selanjutnya adalah pointing Load Balancer ke domain kita. Jika kamu menggunakan AWS route 53 kamu bisa langsung poiniting ke Load Balancer dengan alias lalu pilih load balancer yang tadi dibuat
- Masuk ke route 53 kemudian change record root domain dan subdomain www. pilih A record kemudian aktifkan alias. Pilih Alias to Application and Classic Load Balancer, pilih Region kemudian pilih Load Balance yang tadi dibuat
2. Lakukan langkah yang sama untuk subdomain (www) dan Ipv6 menggunakan AAAA record
Bagaimana jika kita tidak menggunakan AWS Route 53?
pada dasarnya record yang dicatat hanyalah A record biasa dengan multiple IP address target. Hanya saja route 53 punya feature untuk pointing ke kedua IP address berdasarkan loadnya. Jika kita menggunakan DNS manager selain route 53, cukup arahkan ke IP address Load balancernya
Bagaimana cara mendapatkan IP address Load Balancernya?
- Check DNS Name Load Balancer yang kita buat. informasi ini ada di load balancer tab description
2. Gunakan command Nslookup di command prompt atau terminal untuk mendapatkan IP addressnya seperti berikut
3. setelah mendapatkan IP addressnya. buat 2 A record ke 2 IP address tersebut. IP ini bisa lebih dari 2 tergantung dari AZ yang dipilih saat pembuatan load balancer.
Sebenarnya pointing manual seperti ini bisa jadi kurang efektif untuk case load balancer yang proper. karena distribusi load ke masing-masing IP akan sangat tergantung dari DNS manager memilih IP addressnya. Jika DNS manager yang digunakan tidak memiliki fitur distribusi load bisa jadi malah hanya 1 IP address saja yang dipointing sehingga load balancernya tidak efektif.