Ravindra BagaleCourses & study guides English

AWS मध्ये Auto Scaling म्हणजे काय? Min, Max आणि Desired सोप्या भाषेत

CloudWatch alarm average CPU जास्त राहिला की लोकांना आधीच कळवू शकतो (When to add a server: CloudWatch, threshold and period). पण तरीही माणसाला उठून server launch करावा लागतो. हा chapter तो माणूसच काढून टाकतो. Auto Scaling group launch template मधून servers launch करतो, त्यांना load balancer मागे ठेवतो, alarm सांगेल तसे add आणि remove करतो, आणि health check fail होणारा कुठलाही server बदलतो. min, desired आणि max चा खरा अर्थ worked examples सकट, max तुमचं bill कसं वाचवतो, आणि हे सगळं console मध्ये कसं बनवायचं, हे शिकाल.

या class मध्ये काय शिकणार

  • Manual scaling का फसतं
  • Alarm Auto Scaling group ला कसा चालवतो
  • Launch template मध्ये काय असतं
  • Min, desired आणि max, worked examples सकट
  • किती servers सुरू होतात, आणि max bill कसं वाचवतो
  • प्रत्येक tier ला एक load balancer आणि एक Auto Scaling group
  • ELB health checks ने self-healing
  • Console मध्ये बनवणे
  • Golden AMI आणि launch template versions
  • Target tracking, step, predictive आणि scheduled scaling
  • Warmup, grace period आणि तीन health check प्रकार
  • Instance refresh, maintenance policy आणि scale-in protection

1. Manual scaling का फसतं

फक्त alarm आणि SNS असेल तर scaling असं दिसतं:

  1. Average CPU 5 minutes 70% च्या वर राहतो; alarm वाजतो.
  2. SNS admin ला email करतो.
  3. Admin तो वाचतो, AMI मधून server launch करतो आणि target group मध्ये register करतो.
  4. Admin झोपलेला, प्रवासात किंवा busy असेल तर step 3 होतच नाही, आणि चालू servers slow होऊन crash होऊ शकतात.

Classroom line

Or you were busy on WhatsApp, on a call...

समजा आपण Hotstar आहोत आणि मोठी cricket match चालू आहे. Match रंगात आली की minutes मध्ये viewers वाढतात. नवीन servers ready व्हायला minutes लागतात, म्हणून launching आपोआप, लगेच सुरू व्हायला हवं.

2. Auto Scaling कसं चालतं

  1. CloudWatch alarm group चा average CPU बघतो.
  2. तो वाजला की Auto Scaling group ची scaling policy थेट call करतो, उदा. "1 instance add करा". (SNS फक्त लोकांना कळवायला; scaling साठी त्याची गरज नाही.)
  3. Policy desired एकाने वाढवते.
  4. Group त्याच्या launch template मधून, तुम्ही निवडलेल्या subnets मध्ये, server launch करतो.
  5. Group त्याला load balancer च्या target group मध्ये आपोआप register करतो. Health check pass झाला की त्याला traffic मिळतं.
  6. Low alarm वाजला (उदा. average 30% च्या खाली) की policy desired कमी करते आणि group एक server terminate करतो.
Alarm → scaling policy → launch → register CloudWatch alarm average CPU ≥ 70%, 5 min 1. दोन servers चालू. Average CPU 5 minutes 70% किंवा जास्त राहतो. Auto Scaling group min 1 / max 4 desired 2 → desired 3 2. Alarm scaling policy थेट call करतो: desired 2 → 3; template मधूनserver launch. Launch template AMI, t3.micro, web-sg launching Target group tg-web EC2 · EC2 · EC2 registered, healthy → traffic 3. Group त्याला tg-web मध्ये register करतो; health check pass झालाकी traffic.

Figure 1. Animation: average CPU 70% पार करतो आणि alarm Auto Scaling group ची policy call करतो; desired 2 वरून 3 होतो; launch template मधून नवीन server launch होतो; तो target group मध्ये register होतो आणि healthy झाल्यावर त्याला traffic मिळतं.

सगळे policy types (simple, step, target tracking, scheduled) Every Auto Scaling policy मध्ये आहेत.

3. Launch template: प्रत्येक नवीन server ची recipe

Group ला नक्की काय launch करायचं ते माहीत हवं. Launch template ते एकदाच ठेवतो:

  1. AMI: तुमच्या तयार web server ची image (Nginx, PHP, तुमचा code).
  2. Instance type: उदा. t3.micro.
  3. Key pair: SSH साठी, गरज असेल तर.
  4. Security group: उदा. web-sg, जो फक्त load balancer च्या SG कडून 80 allow करतो.
  5. Storage (EBS): root volume ची size आणि type.
  6. User data: पहिल्या boot ला चालणारी script, उदा. web server सुरू करायला किंवा latest code आणायला.

छोटं user data example:

```bash

!/bin/bash

sudo yum install nginx -y sudo service nginx start ```

Subnets template मध्ये नसतात; ते group मध्ये निवडायचे.

Golden AMI: एक development server बनवा, त्यावर Nginx आणि तुमचा code install करा, test करा, मग Actions > Image and templates > Create image. Template तोच AMI launch करतो, म्हणून प्रत्येक नवीन server boot ला सगळं install करण्याऐवजी एक-दोन minutes मध्ये तयार होतो.

Template versions: launch template app updates सारखे क्रमांक असलेले versions ठेवतो. Version 1 तुमच्या app 1.0 चा AMI वापरतो; app 2.0 तयार झालं की नवीन AMI बनवून तो त्याच template चा version 2 म्हणून save करता. मग group आपले servers नवीन version वर नेऊ शकतो (section 11).

Launch template vs Auto Scaling group: कोणाकडेकाय Launch template web-lt: काय launch करायचं AMI तुमची तयार web server image Instance type t3.micro Key pair SSH साठी, गरज असेल तर Security group web-sg: LB SG कडून 80 EBS root volume size आणि type User data पहिल्या boot ची script Auto Scaling group web-asg: कुठे आणि किती Subnets दोन AZs मधले web subnets Target group tg-web Health checks ELB, grace 300 s min / desired / max 1 / 2 / 4 Scaling policies CloudWatch alarms मधून

Figure 2. Launch template मध्ये AMI, instance type, key pair, security group, EBS storage आणि user data असतं. Auto Scaling group त्यात subnets, target group आणि min, desired आणि max जोडतो.

4. Min, desired आणि max

  1. Desired: आत्ता किती servers चालायला हवेत. Group नेहमी चालू संख्या desired इतकी ठेवायला काम करतो.
  2. Min: desired याच्या खाली कधीच जात नाही, रात्री 2 वाजता सुद्धा.
  3. Max: सगळे servers busy असले तरी desired याच्या वर कधीच जात नाही.

Worked example 1: scale out. समजा min 1, desired 2, max 4.

  1. Average CPU 70% च्या वर राहतो: desired 2 → 3. तिसरा server सुरू.
  2. अजून 70% च्या वर: desired 3 → 4.
  3. अजून 70% च्या वर: desired 4 च राहतो. 5वा server नाही, कारण max 4.

Worked example 2: scale in. तोच group रात्री 2 वाजता.

  1. Average CPU 30% च्या खाली: desired 4 → 3, मग 3 → 2, मग 2 → 1.
  2. अजून कमी: desired 1 च राहतो. Min 1 असताना 0 होऊ शकत नाही.
समजा min 1, desired 2, max 4 desired 2 EC2 EC2 · · सुरुवात: desired 2, म्हणून 2 servers चालू. desired 3 EC2 EC2 EC2 · CPU जास्त: desired 2 → 3. desired 4 EC2 EC2 EC2 EC2 अजून जास्त: 3 → 4. अजून जास्त: 4 च, 5वा नाही (max). 5वा server नाही desired 1 EC2 · · · रात्री 2, CPU कमी: 1 पर्यंत खाली, 0 कधीच नाही (min). slot 1 · slot 2 · slot 3 · slot 4 · min 1 · max 4

Figure 3. Animation: समजा min 1, desired 2, max 4. जास्त CPU ने desired 3 आणि मग 4 होतो, आणि max 4 ला थांबतो; रात्री कमी CPU ने तो 1 वर येतो, आणि min 1 ला थांबतो.

5. किती servers सुरू होतात?

Classroom line

Many say it starts with the minimum. No!

नवीन group desired इतके launch करतो, min नाही.

  1. समजा min 2, desired 3, max 6.
  2. बनवल्यावर 3 servers launch होतात.
  3. नंतर policies desired 2 ते 6 मध्ये कुठेही हलवतात.
नवीन group desired ने सुरू होतो, min ने नाही min 2   desired 3   max 6 EC2 launched EC2 launched EC2 launched ← min 2 · max 6 → बनवल्यावर: 3 servers launch (desired). नंतर policies desired 2ते 6 मध्ये कुठेही हलवतात.

Figure 4. समजा min 2, desired 3, max 6: group 3 servers (desired) सुरू करतो, आणि नंतर 2 ते 6 मध्ये हलतो.

6. Max तुमचं bill वाचवतो

  1. AWS वापरल्यानंतर bill करतो, चाललेल्या प्रत्येक server चं.
  2. योग्य max नसेल तर अचानक spike, CPU खाणारा bug, किंवा junk traffic चा पूर, plan पेक्षा कितीतरी जास्त servers launch करू शकतो.
  3. म्हणून max तुम्हाला परवडेल तेवढा ठेवा. खरी growth झाली आणि जास्त लागले, तर तो स्वतः, ठरवून वाढवा.

Classroom line

Don't launch more servers than you can pay for.

Worked example: max चा खर्च किती? समजा एका server चा खर्च तासाला ₹1 आहे (गणित सोपं ठेवायला घेतलेला गोल आकडा) आणि max 4. हा group जास्तीत जास्त 4 × ₹1 × 24 = दिवसाला ₹96 खर्च करू शकतो. Max 40 असेल तर ceiling दिवसाला ₹960. तुमच्या आकड्यांसाठी तुमच्या instance type ची खरी किंमत वापरा.

7. Subnets, AZs, आणि प्रत्येक tier ला एक group

  1. Group तुमच्या VPC मध्ये तुम्ही निवडलेल्या subnets मध्ये launch करतो, आणि servers त्यांच्या AZs मध्ये वाटतो. एका AZ मध्ये problem आला तर बाकीचे serve करत राहतात.
  2. Web tier आणि app tier चं काम आणि load वेगळं, म्हणून प्रत्येकाला स्वतःचा load balancer आणि स्वतःचा Auto Scaling group:
  3. Internet → internet-facing load balancer → web Auto Scaling group.
  4. Web tier → internal load balancer → app Auto Scaling group.
  5. Database RDS आहे, जो स्वतःच्या पद्धतीने scale होतो (मोठा instance, read replicas).

Classroom line

Each tier needs its own load balancer and its own Auto Scaling group; there's no other way.

प्रत्येक tier ला एक load balancer आणि एक AutoScaling group Internet Internet-facing ALB web-asg AZ a + AZ b web · web · web Internal ALB app-asg app · app RDS प्रत्येक tier स्वतःच्या load वर scale होतो; database स्वतःच्यापद्धतीने (मोठा instance, read replicas).

Figure 5. Internet ते internet-facing load balancer आणि दोन AZs मधला web Auto Scaling group; web tier ते internal load balancer आणि app Auto Scaling group; app tier ते RDS.

सगळं एकत्र, highly available: 2 AZs, प्रत्येकात 4 subnets: एक public (load balancer, NAT gateway, bastion), आणि web, app आणि database साठी private. म्हणजे 2 × 4 = 8 subnets.

8. Self-healing: फक्त load balancer vs Auto Scaling सोबत

फक्त load balancer:

  1. Server health check fail होतो आणि unhealthy mark होतो.
  2. त्याला traffic मिळत नाही, पण तो बिघडलेल्या अवस्थेत तिथेच राहतो, कोणी दुरुस्त करेपर्यंत. आता एक server कमी.

Load balancer + ELB health checks सोबत Auto Scaling group:

  1. Group load balancer ला त्याचे कुठले servers healthy आहेत ते विचारतो.
  2. Unhealthy server terminate होतो.
  3. Launch template मधून नवीन launch होऊन register होतो. कोणी जागं नसताना संख्या परत desired इतकी.

हे चालवणारी setting: group चा health check type default ने EC2 असतो, जो फक्त instance चालू आहे का एवढंच बघतो. Elastic Load Balancing health checks चालू करा, म्हणजे Nginx बंद पडलेला server पण बदलला जाईल. नवीन servers ना judge करण्याआधी boot व्हायला grace period द्या (उदा. 300 seconds).

आणखी एक: group चा server तुम्ही हाताने terminate केला तर group desired गाठायला सरळ नवीन launch करतो. Servers कायमचे बंद करायचे असतील तर desired आणि min 0 करा, किंवा group delete करा.

फक्त load balancer vs ELB health checks सोबतAuto Scaling फक्त load balancer ALB → EC2 unhealthy Traffic नाही, पण बिघडलेलाच राहतो. एक server कमी. LB + Auto Scaling (ELB health checks) ALB → EC2 unhealthy 1. Group ला तो unhealthy दिसतो (ELB check). terminated 2. Group तो terminate करतो; desired अजून 2. नवीन: healthy 3. Template मधून नवीन launch करून register करतो. Default health check type EC2 (फक्त instance चालू आहे का). Grace period(उदा. 300 s) सोबत ELB health checks चालू करा. हाताने terminate? तो बदलला जातो. कायमचं थांबवायला: desired आणि min 0,किंवा group delete.

Figure 6. Animation: फक्त load balancer असेल तर unhealthy server ला traffic मिळत नाही पण तो बिघडलेलाच राहतो; ELB health checks वापरणाऱ्या Auto Scaling group मध्ये unhealthy server terminate होतो आणि नवीन launch होऊन register होतो.

याचं lab version: Auto Scaling आणि How this connects to scaling.

9. Scaling policy चे प्रकार

का: "CPU जास्त झाला की server add करा" हा फक्त एक मार्ग आहे. वेगवेगळ्या traffic साठी AWS चार देतो.

  1. Target tracking (dynamic): तुम्ही एक target देता, उदा. "average CPU 50% ठेवा". Average त्याच्यावर गेला की group servers add करतो आणि बराच खाली आला की remove करतो. CloudWatch alarms तो स्वतः बनवतो आणि सांभाळतो. हाच नेहमीचा पर्याय.
  2. Step किंवा simple scaling (dynamic): alarms तुम्ही स्वतः बनवता आणि काय करायचं ते सांगता, उदा. "CPU ≥ 70% 5 minutes: 1 server add करा" (section 13, Part C).
  3. Predictive scaling: AWS तुमच्या जुन्या traffic वरून शिकतो आणि नेहमी येणाऱ्या peak आधी servers launch करतो. समजा आपण Netflix आहोत आणि दर Friday संध्याकाळी 6 ला traffic उडी मारतो: predictive scaling साधारण 5:55 पर्यंत servers चालू ठेवू शकतो.
  4. Scheduled scaling: ठरलेल्या date आणि time साठी capacity तुम्ही set करता. समजा आपण Flipkart आहोत आणि sale सकाळी 6 ला सुरू होतो, किंवा phone launch 10 ला, किंवा cricket match संध्याकाळी 6 ला: desired त्याच्या जरा आधी वाढेल असा schedule करा.
  5. Dynamic policies load आल्यावर react करतात; predictive आणि scheduled त्याच्या आधीच तयार होतात.

Classroom line

Suddenly people come and traffic starts rising.

Worked example: एक busy server असून scale out का होत नाही

  1. Group मध्ये 2 servers आणि 50% average CPU वर target tracking policy.
  2. फक्त एका server ला 100% stress करा; दुसरा 0% जवळ राहतो.
  3. Average = (100 + 0) ÷ 2 = 50%. तो target वरच आहे, वर नाही, म्हणून group कदाचित server add करणार नाही.
  4. दोन्हींना 100% stress करा: average = (100 + 100) ÷ 2 = 100%, 50% च्या खूप वर, म्हणून group max 4 पर्यंत अजून servers launch करतो.

10. Warmup, grace period आणि health checks

Instance warmup (उदा. 60 seconds): नवीन server ला boot होऊन Nginx सुरू करायला वेळ लागतो, आणि तेवढ्या वेळात त्याचे CPU आकडे normal नसतात. Warmup संपेपर्यंत त्याचे metrics group च्या average मधून बाहेर ठेवले जातात, म्हणजे boot होणाऱ्या एका server मुळे अजून scaling होत नाही.

Health check grace period (उदा. 60 ते 300 seconds): launch नंतर server ची health ठरवण्याआधी group किती थांबतो. खूप कमी ठेवला तर boot होत असलेले servers loop मध्ये terminate होतात.

Health check प्रकार:

  1. EC2 (नेहमी चालू): instance स्वतः चालू आहे का ते check करतो.
  2. Elastic Load Balancing: server ने target group चा health check पण pass करायला हवा, उदा. Nginx / ला उत्तर देतो.
  3. Amazon EBS: attach केलेला EBS volume impaired झाला (I/O किंवा hardware problem) की instance unhealthy ठरवतो. Disk किती भरली ते तो check करत नाही; disk usage साठी CloudWatch agent लागतो.

11. Downtime शिवाय servers update करणं

का: समजा load balancer मागे 10 servers तुमचं app version 1.0 चालवतात, आणि version 2.0 तयार आहे. सगळे 10 बंद करून नवीन सुरू केले तर site बंद पडेल.

  1. Version 2.0 सकट नवीन AMI बनवा आणि तो launch template चा version 2 म्हणून save करा.
  2. Group ला नवीन version कडे point करा.
  3. Group वर Instance refresh सुरू करा. तो batches मध्ये servers बदलतो, आणि minimum healthy percentage राखतो, उदा. 90%, म्हणजे 10 पैकी एका वेळी फक्त 1 बदलतो.

Instance maintenance policy: server बदलताना group काय करतो.

  1. Launch before terminating: नवीन server सुरू करा, तो healthy होईपर्यंत थांबा, मग जुना terminate करा. Capacity कधीच कमी होत नाही; थोडा वेळ एका extra server चे पैसे लागतात.
  2. Terminate and launch: आधी जुना terminate, मग नवीन सुरू. स्वस्त, पण बदलताना capacity कमी होते.

Classroom line

Some people worry that launching 10 new servers first will raise their bill.

12. Scale-in protection

  1. Instance scale-in protection group scale in करताना तो instance terminate होऊ देत नाही. मधेच तुटू नये असं मोठं काम करणाऱ्या server साठी वापरा.
  2. छोट्या dips ना protection लागत नाही. समजा आपण cricket match stream करतोय: ad break मध्ये viewers काही minutes कमी होतात आणि परत येतात. Target tracking हळू आणि सावधपणे scale in करतो, आणि policy साठी scale-in बंदही करता येतो, म्हणजे एका minute नंतर परत लागणारे servers group काढत नाही.

13. Console मध्ये बनवा

Part A: launch template

  1. EC2 > Launch templates > Create launch template, नाव web-lt.
  2. Provide guidance to help me set up a template that I can use with EC2 Auto Scaling tick करा.
  3. AMI: तुमची web server AMI (My AMIs). Instance type: t3.micro. Key pair: तुमची.
  4. Network settings: subnet निवडू नका; security group web-sg निवडा.
  5. Advanced details > User data: section 3 मधली script paste करा. Create launch template.

Part B: Auto Scaling group

  1. EC2 > Auto Scaling groups > Create Auto Scaling group, नाव web-asg, launch template web-lt. Next.
  2. Network: तुमचा VPC, आणि दोन AZs मधले web subnets. Next.
  3. Load balancing: Attach to an existing load balancer, target group tg-web निवडा (तो कसा बनवला).
  4. Health checks: Turn on Elastic Load Balancing health checks tick करा, grace period 300 seconds. Next.
  5. Group size: desired 2, min 1, max 4.
  6. Scaling: आत्ता No scaling policies निवडा (Part C मध्ये add करू). लोकांना launches बद्दल कळावं म्हणून optional SNS notification टाका. Create Auto Scaling group.
  7. दोन servers launch होऊन tg-web मध्ये healthy targets म्हणून दिसतात.

Part C: CloudWatch alarm ने चालणारी scaling policy

  1. CloudWatch > Alarms > Create alarm > Select metric > EC2 > By Auto Scaling Group, web-asg, CPUUtilization. Statistic Average, period 5 minutes, ≥ 70. Email नको असेल तर notification काढा. नाव web-cpu-high, Create alarm.
  2. web-cpu-low तसाच बनवा, < 30 सोबत.
  3. web-asg > Automatic scaling > Create dynamic scaling policy उघडा, type Simple scaling, alarm web-cpu-high, action Add 1 capacity units, मग 300 seconds थांबा. Create.
  4. Alarm web-cpu-low आणि action Remove 1 capacity units सोबत दुसरी policy बनवा.
  5. (Target tracking policy, "average CPU 50% ठेवा", दोन्ही alarms तुमच्यासाठी बनवते; production मध्ये नेहमी हीच निवड.)

Part D: test करा

  1. दोन्ही servers वर SSH करून sudo yum install stress-ng -y आणि stress-ng --cpu 2 --timeout 900 चालवा.
  2. साधारण 5 minutes मध्ये web-cpu-high In alarm होतो; Activity मध्ये launch दिसतो; desired 3, नंतर 4, कधीच 5 नाही.
  3. Stress संपलं की web-cpu-low तो परत खाली आणतो, 1 च्या खाली कधीच नाही.
  4. एका server वर Nginx बंद करा: sudo service nginx stop. तो tg-web मध्ये unhealthy होतो, आणि group त्याला बदलतो.

Part E: group ला स्वतःचा load balancer बनवू द्या

  1. Create Auto Scaling group मध्ये Load balancing step वर Attach to a new load balancer निवडा: Application Load Balancer, Internet-facing, port 80 वर नवीन target group.
  2. Health checks: Elastic Load Balancing health checks चालू करा, grace period 60 seconds. Group size: desired 2, min 1, max 4. Policy: Target tracking, Average CPU utilization, target 50, instance warmup 60 seconds. Maintenance policy: Launch before terminating.
  3. Activity मध्ये launches दिसतात, उदा. "changing the desired capacity from 0 to 2". Instance management मध्ये दोन्ही InService दिसतात; target group मध्ये ते initial मधून healthy होतात.
  4. Load balancer चं DNS name उघडा. Timeout झालं तर load balancer चा security group internet कडून HTTP 80 allow करत नाही: त्यात HTTP, 80, 0.0.0.0/0 add करा, आणि page load होतं.
  5. Servers च्या security group वर 80 फक्त load balancer च्या security group कडून allow करा. Servers ना public IPs लागत नाहीत: load balancer त्यांच्यापर्यंत private IPs वर पोहोचतो.

Part F: group मधल्या server ला SSH

  1. EC2 Instance Connect किंवा SSH साठी servers च्या security group मध्ये port 22 open हवा; 0.0.0.0/0 पेक्षा My IP वापरा.
  2. Private subnets मधल्या servers साठी jump server मधून जा: ssh -J ec2-user@<jump-public-ip> ec2-user@<private-ip> (Bastion Host आणि NAT Gateway ने Private EC2 कसा access करायचा).
  3. Windows वर PowerShell मध्ये chmod 400 चालत नाही. Key file च्या Properties > Security > Advanced मध्ये inheritance disable करा आणि फक्त तुमच्या user ला Read ठेवा; किंवा Git Bash किंवा WSL मधून SSH चालवा.
  4. सैल permissions असलेल्या key ला UNPROTECTED PRIVATE KEY FILE warning येते. Login आधी Connection closed किंवा timeout म्हणजे सहसा network, security group किंवा firewall problem, key नाही.

Classroom line

To create fake traffic we go inside the EC2 and run the stress command.

14. काही चुकलं तर

  1. नवीन servers launch होतात पण unhealthy च राहतात: user data fail झाला, AMI तयार web server ची नाही, किंवा web-sg load balancer SG कडून 80 allow करत नाही.
  2. Servers सारखे terminate आणि launch होत राहतात: boot ला लागणाऱ्या वेळेपेक्षा grace period छोटा, किंवा health-check path error देतो.
  3. Unhealthy target कधीच बदलला जात नाही: group चा health check type अजून फक्त EC2. ELB health checks चालू करा.
  4. Alarm वाजतो पण काहीच launch होत नाही: desired आधीच max वर आहे, किंवा alarm scaling policy ला नाही, फक्त SNS ला जोडलाय.
  5. तुम्ही servers terminate केले पण ते परत आले: group आपलं काम करतोय. Desired आणि min 0 करा, किंवा group delete करा.

Ravindra Bagale's Tip

वेळ लागणारं सगळं AMI मध्येच ठेवा आणि user data छोटा ठेवा, म्हणजे नवीन server एक-दोन minutes मध्ये ready होईल. ELB health checks नेहमी योग्य grace period सोबत चालू करा. आणि max हा technical नाही, budget चा निर्णय समजा: तो वाढवण्याआधी अजून एका server चा खर्च लिहून काढा.

15. संपूर्ण class एका page वर

  1. Alarm → SNS → माणूस म्हणजे manual scaling; माणूस busy किंवा झोपलेला असेल तर फसतं.
  2. Auto Scaling: alarm group ची scaling policy थेट call करतो; SNS फक्त लोकांसाठी.
  3. Launch template: AMI, instance type, key pair, SG, EBS, user data. Subnets group मध्ये निवडायचे.
  4. Desired = आत्ता चालू; min = खालची मर्यादा; max = वरची मर्यादा. Min 1, desired 2, max 4: वर 4 पर्यंत, खाली 1 पर्यंत.
  5. नवीन group desired ने सुरू होतो, min ने नाही (min 2, desired 3, max 6 → 3).
  6. Max म्हणजे तुमची खर्चाची मर्यादा; ठरवून वाढवा.
  7. प्रत्येक tier: स्वतःचा load balancer (internet-facing / internal) आणि स्वतःचा group, AZs मध्ये.
  8. ELB health checks चालू असतील तर group unhealthy servers बदलतो; फक्त load balancer त्यांना traffic पाठवणं थांबवतो एवढंच.
  9. हाताने terminate → बदलला जातो. कायमचं थांबवायला: desired आणि min 0, किंवा group delete.
  10. Policy प्रकार: target tracking (target राखा), step/simple (तुमचे alarms), predictive (नेहमीच्या peaks आधी), scheduled (ठरलेल्या dates).
  11. Warmup boot होणारे servers average बाहेर ठेवतो; grace period health ठरवणं पुढे ढकलतो; EBS health checks impaired volumes पकडतात, भरलेल्या disks नाही.
  12. नवीन version: नवीन AMI → template version 2 → instance refresh; launch before terminating capacity राखतो.
  13. Scale-in protection मोठं काम करणाऱ्या server ला terminate होऊ देत नाही.

16. घरी करून बघा

घरी करून बघा

Task 1: कागदावर

  1. Min 2, desired 2, max 5. CPU खूप वेळ जास्त राहतो. शेवटी desired किती? मग traffic शून्य होतं. आता desired किती?
  2. Min 1, desired 4, max 8: group बनवल्यावर किती servers launch होतात?
  3. समजा एका server चा खर्च तासाला ₹2. Max 6 असलेला group दिवसाला जास्तीत जास्त किती खर्च करू शकतो?

Task 2: console मध्ये

  1. तुमच्या ALB मागे web-lt आणि web-asg (min 1, desired 2, max 4) बनवा, ELB health checks चालू ठेवून.
  2. High आणि low simple scaling policies टाका, stress-ng चालवा, आणि desired हलताना बघा.
  3. एक instance हाताने terminate करा आणि group तो बदलताना बघा.

Task 3: clean up

  1. Auto Scaling group delete करा (तो त्याचे servers terminate करतो), मग alarms, launch template आणि load balancer.

Recap

थोडक्यात

  1. Auto Scaling group servers launch करणाऱ्या माणसाची जागा घेतो.
  2. Launch template काय launch करायचं ते सांगतो; group कुठे आणि किती ते सांगतो.
  3. Desired min आणि max मध्ये हलतो; नवीन group desired ने सुरू होतो.
  4. Max bill वाचवतो.
  5. ELB health checks load balancer चं "वगळ" group च्या "बदल" मध्ये बदलतात.

सराव Tasks

या scenario बद्दल

Nairobi Ride हा नैरोबी मधला वाहतूक व्यवसाय आहे. Wanjiru Kamau त्यांचं IT व cloud काम पाहतात. त्यांचे पैसे KES मध्ये मोजले जातात आणि AWS resources af-south-1 Region मध्ये चालतात. खालच्या tasks मध्ये तुम्ही या lesson मध्ये शिकलेलं वापरून त्यांची खरी कामं करता. सगळी नावं, account IDs, IP addresses व numbers सरावासाठी काल्पनिक आहेत.

0 / 10

सोपं Auto Scaling group describe करा

का: Group चे सध्याचे instances व sizes पाहा.

काय करायचं: nairobiride-asg Auto Scaling group describe करा.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

मध्यम Desired capacity बदला

का: मोठ्या sale आधी desired capacity वाढवा.

काय करायचं: nairobiride-asg ची desired capacity 4 करा.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

मध्यम Min व max size बदला

का: Max bill वाचवतो; min site चालू ठेवतो.

काय करायचं: nairobiride-asg चे min 1 व max 10 करा.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

मध्यम Target health तपासा

का: Targets unhealthy असल्यास site 502/503 errors दाखवते.

काय करायचं: arn:aws:elasticloadbalancing:af-south-1:104591109902:targetgroup/nairobiride-tg/6d0ecf831eec9f09 मधल्या targets चं health दाखवा.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

मध्यम Kubernetes LoadBalancer Service

का: LoadBalancer Service ला AWS load balancer मिळतो.

काय करायचं: app: web select करणारी LoadBalancer Service, port 80 → targetPort 8080.

कसं करायचं:
  1. Task मधल्या top-level keys पासून सुरू करा.
  2. Child keys 2 spaces ने indent करा (tabs नकोत).
  3. प्रत्येक property मध्ये task मधली value भरा.
  4. Check answer दाबा. Keys चा क्रम महत्त्वाचा नाही.

अवघड Auto Scaling group बनवा

का: Min, max व desired किती servers चालतील ते ठरवतात.

काय करायचं: Launch template nairobiride-lt पासून nairobiride-asg बनवा: min 2, max 6, desired 2, subnets subnet-0045d110dd02bb1,subnet-045d110dd02bb2.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

अवघड Launch template बनवा

का: Launch template म्हणजे Auto Scaling प्रत्येक नवा server बनवण्यासाठी वापरते ती recipe.

काय करायचं: lt.json मधल्या settings वापरून nairobiride-lt launch template बनवा.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

अवघड Instance refresh ने नवी AMI आणा

का: Instance refresh servers थोडे-थोडे बदलतो, site चालू राहते.

काय करायचं: nairobiride-asg वर instance refresh सुरू करा.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

अवघड Application Load Balancer बनवा

का: High availability साठी ALB ला वेगवेगळ्या AZs मधले किमान दोन subnets लागतात.

काय करायचं: nairobiride-alb नावाचा ALB subnets subnet-0045d110dd02bb1 व subnet-045d110dd02bb2 मध्ये security group sg-0045c110cc024c3b2 सह बनवा.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

अवघड HTTP listener जोडा

का: Listener port वर traffic स्वीकारतो व target group कडे पाठवतो.

काय करायचं: Load balancer arn:aws:elasticloadbalancing:af-south-1:104591109902:loadbalancer/app/nairobiride-alb/50dc6c495c0c9188 वर port 80 चा HTTP listener बनवा जो arn:aws:elasticloadbalancing:af-south-1:104591109902:targetgroup/nairobiride-tg/6d0ecf831eec9f09 कडे forward करेल.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

झटपट उजळणी cards

हा lesson दोन मिनिटांत revise करा. Cards phone वर save करा किंवा PNG download करा. प्रत्येक card वरचा QR त्याचा lesson उघडतो.

तुलना card: Launch template vs Auto Scaling group. Launch template: EC2 launch करायच्या saved settings. Auto Scaling group: योग्य संख्येने EC2 चालू ठेवणारा group.
तुलना: Launch template vs Auto Scaling group · PNG download करा
तुलना card: Load balancer alone vs Load balancer + Auto Scaling. Load balancer alone: ठरलेल्या servers मध्ये traffic वाटतो. Load balancer + Auto Scaling: Traffic वाटतो, आणि Auto Scaling group servers ची संख्या सांभाळतो.
तुलना: Load balancer alone vs Load balancer + Auto Scaling · PNG download करा
उजळणी card: Launch template म्हणजे काय?. Auto Scaling रात्री 2 वाजता कोणी नसताना servers वाढवतं. नक्की काय launch करायचं ते त्याला माहीत हवं. Launch template म्हणजे recipe: AMI, instance type, key pair, security group, storage आणि user data. EC2 › Launch templates › Create. Subnets इथे नाहीत; group मध्ये निवडता. AMI ami-0web1, t3.micro, web-sg, 8 GiB gp3.
उजळणी card: Launch template म्हणजे काय? · PNG download करा
उजळणी card: Auto Scaling मध्ये min, desired आणि max. Sale च्या दिवशी कमी servers crash होतात; रात्री जास्त servers पैसे वाया घालवतात. Desired = आत्ता चालणारे servers. Min = desired किती खाली जाऊ शकतो. Max = किती वर. Auto Scaling group मध्ये set करा. Policies desired ला min आणि max मध्ये बदलतात. min 1, desired 2, max 4. Sale: desired 2 › 3 › 4, कधीच 5 नाही.
उजळणी card: Auto Scaling मध्ये min, desired आणि max · PNG download करा
उजळणी card: CPU alarm group कसा scale करतो. Traffic न सांगता वाढतं. Servers आपोआप वाढायला हवेत. Average CPU वरचा CloudWatch alarm group ची scaling policy call करतो. Policy desired बदलते. High alarm: 1 instance add. Low alarm: 1 remove. नवीन servers स्वतः target group मध्ये जातात. Average CPU 78% › alarm › desired 2 वरून 3.
उजळणी card: CPU alarm group कसा scale करतो · PNG download करा
उजळणी card: Golden AMI म्हणजे काय?. नवीन server काही seconds मध्ये traffic द्यायला हवा, 10 minutes install नंतर नाही. Golden AMI म्हणजे Nginx, PHP आणि code आधीच असलेल्या tested server ची image. एक server बनवून test करा, मग Actions › Image and templates › Create image. Template मध्ये वापरा. App 2.0 तयार: नवीन AMI ami-0web2 › template version 2.
उजळणी card: Golden AMI म्हणजे काय? · PNG download करा
तुलना: Scale out vs Scale in. Scale out: Desired वाढवून group servers add करतो. Scale in: Desired कमी करून group servers काढतो.
तुलना: Scale out vs Scale in · PNG download करा
मुलाखत card: Auto Scaling group म्हणजे काय?. AZs मध्ये योग्य संख्येने EC2 servers चालू ठेवणारा group. Load आला की servers वाढवतो, शांत वेळी कमी करतो, unhealthy बदलतो. Launch template + subnets + min/desired/max + target group.
मुलाखत card: Auto Scaling group म्हणजे काय? · PNG download करा
मुलाखत card: Server health check fail झाला की Auto Scaling group काय करतो?. Unhealthy server terminate करून नवीन launch करतो. चालू servers ची संख्या नेहमी desired एवढी हवी. ELB health checks वापरा म्हणजे फक्त बंद VM नाही, बंद website पण बदलली जाते.
मुलाखत card: Server health check fail झाला की Auto Scaling group काय करतो? · PNG download करा
मुलाखत card: Launch template मध्ये user data म्हणजे काय?. प्रत्येक नवीन server च्या पहिल्या boot ला एकदा चालणारी script. Setup आपोआप पूर्ण करते, उदा. Nginx start किंवा code pull. Advanced details मध्ये add करा:
मुलाखत card: Launch template मध्ये user data म्हणजे काय? · PNG download करा
मुलाखत card: Load वाढतच आहे पण desired = max झालं तर काय?. अजून काहीच launch होत नाही. Group max ला थांबतो. Max तुमचं bill अनियंत्रित scaling पासून वाचवतो. खरं traffic गरज असेल तर max वाढवा.
मुलाखत card: Load वाढतच आहे पण desired = max झालं तर काय? · PNG download करा

अजून cards: Ravi Sir's Cards.