Thuta Learning
ရှာဖွေရန်
IntermediateDevOpsbeginner

Load Balancing & Auto Scaling

စိတ်လျှော့ပါ။ ဒီခန်းကို စာအုပ်လိုမဟုတ်ဘဲ စကားပြောသလိုပဲ၊ နားလည်လွယ်အောင် ရှင်းပါမယ်။

ဒီခန်းပြီးရင် ဘာတတ်သွားမလဲ

  • Load Balancing & Auto Scaling ကို ကြောက်စရာမလိုအောင် နားလည်မယ်
  • ကိုယ်တိုင် AWS CLI/Console ကို run ကြည့်တတ်မယ်
  • Real project ထဲမှာ ဒီ concept ကို ချက်ချင်း အသုံးချတတ်မယ်

ခဏလေး ဒီလိုပဲ စဉ်းစားကြည့်

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 ပေးပါတယ်.

အတူတူ ကြည့်မယ်

bash
# 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>
You should see
$ 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 ဖြစ်) လုပ်ဖို့ မမေ့ပါနှင့်။

ဒီနေရာမှာ လူအများမှားတတ်တယ်

  • ASG ရဲ့ max size ကို account/budget limit ထက် ကြီးလွန်းအောင် ချထားခြင်း — traffic spike ဖြစ်ရင် cost ရုတ်တရက် ကြီးမားနိုင်ပါတယ်
  • Health check endpoint ကို database dependency ပါအောင် ရေးထားခြင်း (Kubernetes probe lesson ကလို) — database slow ဖြစ်ရင် healthy instance တွေကို 'unhealthy' လို့ မှားယူဆနိုင်ပါတယ်

အခု ကိုယ်တိုင် စမ်းကြည့်

ALB target group + ASG (min=2, max=4) config ကို ကိုယ်တိုင် ဒီဇိုင်းရေးကြည့်ပါ (documentation review, cost မလိုအပ်တဲ့ dry-run) — instance တစ်ခု unhealthy ဖြစ်ရင် ALB က ဘယ်လို response လုပ်မလဲ ရှင်းပါ။

You'll know it worked when: $ aws elbv2 describe-target-health --target-group-arn <arn> # Shows each instance's health state: healthy / unhealthy

Load Balancing & Auto Scaling | Thuta Learning