ခဏလေး ဒီလိုပဲ စဉ်းစားကြည့်
EC2 instance တစ်လုံးတည်းနဲ့ web app run ရင် instance က down သွားရင် (ဒါမှမဟုတ် traffic များလွန်းရင်) app ကို access လို့ မရနိုင်ပါဘူး။ Load Balancer (ALB - Application Load Balancer) က incoming traffic ကို instance အများ (backend target) ကို health check လုပ်ပြီး ခွဲဝေပေးပါတယ် — instance တစ်လုံး unhealthy ဖြစ်ရင် traffic ကို ကျန် instance တွေဆီပဲ route လုပ်ပေးပါတယ်။ Auto Scaling Group (ASG) ကတော့ 'min ဘယ်နှစ်ခု, max ဘယ်နှစ်ခု instance ရှိချင်တယ်' ဆိုတဲ့ policy ချထားပြီး, CPU usage (ဒါမှမဟုတ် custom metric) ပေါ်မူတည်ပြီး instance count ကို auto-adjust ပေးပါတယ် — Kubernetes ရဲ့ HPA concept နဲ့ ဆင်တူပါတယ်.
လက်တွေ့ scenario နဲ့ ချိတ်ကြည့်မယ်
ALB ရှေ့မှာ EC2 instance ၃ ခုကို target group အနေနဲ့ ချိတ်ထားရင်, traffic ကို instance ၃ ခုကို ညီညီညာညာ ခွဲဝေပေးပါတယ် — instance တစ်ခု crash သွားရင် ALB က health check fail ဖြစ်တာ သိပြီး ကျန် ၂ ခုဆီပဲ traffic ပို့ပါတယ်။ ASG ကို min=2, max=10 ချထားရင်, traffic များလာချိန် instance count ကို 10 အထိ auto-scale up, traffic ကျသွားရင် 2 အထိ scale down ပေးပါတယ်.
အတူတူ ကြည့်မယ်
# Create a target group and an ALB
aws elbv2 create-target-group --name tutorial-tg --protocol HTTP --port 80 --vpc-id vpc-0123456789abcdef0
aws elbv2 create-load-balancer --name tutorial-alb --subnets subnet-abc subnet-def
# Create an Auto Scaling Group: 2-10 instances
aws autoscaling create-auto-scaling-group \
--auto-scaling-group-name tutorial-asg \
--min-size 2 --max-size 10 --desired-capacity 2 \
--target-group-arns <target-group-arn>$ aws elbv2 describe-target-health --target-group-arn <arn>
# Shows each instance's health state: healthy / unhealthy၅ မိနစ် စမ်းကြည့်
ALB target group + ASG (min=2, max=4) config ကို ကိုယ်တိုင် ဒီဇိုင်းရေးကြည့်ပါ (documentation review, cost မလိုအပ်တဲ့ dry-run) — instance တစ်ခု unhealthy ဖြစ်ရင် ALB က ဘယ်လို response လုပ်မလဲ ရှင်းပါ။
သတိလေးတစ်ချက်
ALB နဲ့ ASG ၂ ခုစလုံးက running instance count အလိုက် hourly cost ဖြစ်ပါတယ် — practice ပြီးရင် ASG ကို delete (instance အားလုံး auto-terminate ဖြစ်) လုပ်ဖို့ မမေ့ပါနှင့်။