AWS मध्ये SNS सोबत CloudWatch CPU Alarm कसा set up करायचा
तुमचा three-tier app आता custom VPC मध्ये चालतोय, मागे Multi-AZ database सकट (Amazon RDS Multi-AZ vs Read Replicas सोप्या भाषेत). पुढचा problem म्हणजे traffic. Users वाढले की एक web server पुरत नाही, आणि हे वेळेवर कोणीतरी ओळखायला हवं. या chapter मध्ये CloudWatch CPU वर कसं लक्ष ठेवतो, CloudWatch alarm SNS मधून लोकांना कसं कळवतो, load balancer पहिल्या दिवसापासून servers समोर का हवा, आणि target groups, health checks, listener rules आणि sticky sessions प्रत्येक request कोणत्या server ला जाणार ते कसं ठरवतात, हे बघू.
या class मध्ये काय शिकणार
- Scale up vs scale out, एका minute मध्ये
- दोन DNS A records म्हणजे load balancer का नाही
- CloudWatch CPU metric: threshold आणि period
- CloudWatch alarm ते SNS: topic, publisher, subscribers
- AMI मधून नवीन server
- पहिल्या दिवसापासून load balancer का, आणि A vs CNAME vs Alias
- Target groups आणि average CPU
- Health checks: interval आणि threshold, गणितासकट
- Listener rules: path-based routing
- Round robin, login चा problem आणि sticky sessions
- Console मध्ये बनवणे
- एका golden AMI मधून तीन servers, आणि browser मध्ये round robin
- Basic vs detailed monitoring, CloudWatch agent, custom metrics आणि logs
1. Users वाढले: scale up की scale out
का: समजा आपली site popular झाली आणि traffic दर आठवड्याला वाढतंय. एक t3.micro web server दमायला लागतो.
Classroom line
In a few days our site gets famous and traffic starts climbing.
Class मधलं वाक्य
काही दिवसांनी आपली website famous होईल, मग traffic वाढायला लागेल.
Classroom line – हिंदी
"Kuch din baad apna website famous ho jayega, to traffic badhne lagega."
- Scale up (vertical): मोठा instance type. Type बदलायला instance stop करावा लागतो, म्हणजे तेवढा वेळ site बंद. Details: Vertical scaling.
- Scale out (horizontal): त्याच size चे जास्त servers, शेजारी शेजारी. Downtime नाही, आणि live apps साठी हीच normal पद्धत. Details: Horizontal scaling.
Scale out केलं की दोन प्रश्न येतात, आणि हा chapter दोन्हींची उत्तरं देतो: एकाच नावाने users अनेक servers पर्यंत कसे पोचणार, आणि server कधी वाढवायचा?
2. दोन servers, एक domain: फक्त DNS का पुरत नाही
समजा example.com चे दोन web servers आहेत. पटकन सुचणारी idea म्हणजे एकाच नावासाठी दोन A records, प्रत्येक server च्या IP साठी एक. मग DNS दोन्ही IPs आळीपाळीने देतो (DNS round robin).
थोडं load वाटलं जातं, पण:
- असमान: browsers, phones आणि ISPs उत्तर cache करतात. पूर्ण office किंवा पूर्ण mobile network एकाच IP ला चिकटू शकतं.
- Health checks नाहीत: server 2 बंद पडला तरी DNS त्याचा IP देत राहतो, आणि त्या users ना error येतो.
- बदलायला वेळ: बंद IP काढला तरी cache केलेली उत्तरं expire झाल्यावरच फरक पडतो (record चा TTL).
Load balancer तिन्ही सोडवतो: users एकाच नावावर येतात, आणि load balancer प्रत्येक request साठी healthy server निवडतो. आधी हाताने करून बघायचं असेल तर Manual load balancing.
Figure 1. दोन A records load असमान वाटतात (उत्तरं cache होतात) आणि बंद server कडे users पाठवत राहतात. Load balancer एक नाव देतो आणि प्रत्येक request फक्त healthy server कडे पाठवतो.
3. Server कधी वाढवायचा: CloudWatch, threshold आणि period
Amazon CloudWatch तुमच्या resources कडून आकडे (metrics) गोळा करतो. EC2 साठी इथे आपण CPUUtilization बघतो, percent मध्ये.
"CPU 70% च्या वर, server वाढवा" का नाही? एका spike ने पण trigger होईल.
- समजा CPU एका minute साठी 90% ला जातो आणि परत 40% वर येतो.
- नवीन server boot होऊन ready व्हायला काही minutes लागतात. तोपर्यंत spike संपलेला असतो, आणि नको असलेल्या server चे पैसे लागतात.
- म्हणून threshold आणि period एकत्र वापरा: 5 minutes ची average CPU ≥ 70%.
- पूर्ण period भर load जास्त राहिलं तरच alarm वाजतो.
Spiky apps मध्ये alarm लवकर. समजा आपण Instagram आहोत आणि breaking news आली: minutes मध्ये users येऊन पडतात. नवीन servers ready व्हायला minutes लागतात, म्हणून team कमी threshold ठेवते, उदा. 50%, किंवा छोटा period, म्हणजे servers लवकर वाढायला लागतात.
Figure 2. समजा CPU एका minute साठी 90% ला गेला: 5-minute average 70% च्या खालीच राहतो, म्हणून alarm नाही. CPU जास्त वेळ वरच राहिला की 5-minute average 70% पार करतो आणि alarm वाजतो.
Alarm states आणि settings बद्दल आणखी: CloudWatch alarm.
Basic vs detailed monitoring
- Basic monitoring (free, by default चालू): EC2 दर 5 minutes ला एक data point पाठवतो.
- Detailed monitoring (paid): दर 1 minute ला एक data point.
- Worked example: CPU 10:05 ला उडी मारतो. Basic monitoring मध्ये पुढचा data point कदाचित 10:10 लाच येईल, म्हणजे alarm 5 minutes पर्यंत उशिरा react करतो, आणि नवीन servers येण्याआधी overload झालेला server बंद पडू शकतो. Detailed monitoring मध्ये alarm ला ते साधारण 10:06 पर्यंत दिसतं.
- म्हणूनच नवीन instance चा Monitoring tab सुरुवातीला रिकामा दिसतो: पहिले 5-minute points अजून आलेले नसतात.
- CPU वर scale होणाऱ्या live projects साठी detailed monitoring चालू करा.
Classroom line
What's the problem with basic monitoring? You get an update only every 5 minutes.
Class मधलं वाक्य
"Basic monitoring madhe problem kay ahe? Har 5 minute nantar update milto."
Basic monitoring मध्ये problem काय आहे? दर 5 minute नंतर update मिळतो.
Classroom line
What's the problem with basic monitoring? You get an update only every 5 minutes.
CloudWatch ला by default काय दिसतं, आणि काय नाही
- Default EC2 metrics operating system च्या बाहेरून येतात:
CPUUtilization,NetworkIn,NetworkOut,NetworkPacketsIn,NetworkPacketsOut, disk आणि status checks. - Memory (RAM) आणि disk-space usage default metrics नाहीत. AWS ला virtual machine hypervisor कडून दिसतं, OS च्या आतून नाही.
- ते मिळवायला server वर CloudWatch agent install करा. तो memory, disk आणि तुमचे स्वतःचे metrics पाठवतो.
- Custom metrics: समजा आपण shopping app बनवतोय आणि "Share" button चे clicks मोजायचे आहेत. App प्रत्येक count
PutMetricDataAPI ने CloudWatch ला पाठवतं, आणि तुम्ही CPU सारखाच त्याचा graph आणि alarm बनवू शकता. - Logs: access logs 8 GB root disk वर वाढू देऊ नका; requests चा पूर आला तर disk भरून server थांबू शकतो. CloudWatch agent ते CloudWatch Logs log group मध्ये पाठवू शकतो.
- AWS, Azure आणि Google Cloud एकत्र वापरणाऱ्या teams सगळ्या clouds साठी एक dashboard म्हणून बऱ्याचदा Prometheus आणि Grafana वापरतात. AWS वर CloudWatch हाच built-in पर्याय आहे.
Alarm states:
- Insufficient data: alarm नुकताच सुरू झालाय, किंवा अजून पुरेसे data points नाहीत.
- OK: metric threshold च्या आत आहे.
- In alarm: metric ने period भर threshold ओलांडला; actions (उदा. SNS) चालतात.
4. रात्री 3 वाजता graphs कोणी बघत नाही: alarm ते SNS
का: माणूस रात्रभर CPU graph कडे बघत बसू शकत नाही.
Classroom line
What if the night-shift person falls asleep?
Class मधलं वाक्य
Night shift वाला झोपला तर?
Classroom line – हिंदी
"Night shift me ho sakta hai wo so gaya to?"
म्हणून alarm स्वतःच लोकांना कळवतो, Amazon SNS (Simple Notification Service) मधून:
- Topic: नाव दिलेला channel, उदा.
cpu-high-alerts. - Publisher: topic ला message पाठवणारा. इथे CloudWatch alarm.
- Subscribers: topic वरचा प्रत्येक message घेणारे: email, SMS, mobile push, Lambda function आणि आणखी.
- Email subscriber ला आधी AWS कडून mail येतो आणि त्याला Confirm subscription click करावं लागतं. तोपर्यंत काहीच deliver होत नाही.
Figure 3. Animation: 5 minutes ची average CPU 70% पार करते; alarm ALARM मध्ये जातो आणि topic cpu-high-alerts ला publish करतो; SNS प्रत्येक confirmed subscriber ला message deliver करतो.
Email set-up बद्दल आणखी: SNS: email when the alarm changes.
5. नवीन server AMI मधून येतो
Alert आला. Admin नक्की काय launch करणार?
Classroom line
We don't rebuild everything from scratch.
Class मधलं वाक्य
सगळं परत scratch पासून करत बसायचं नाही.
Classroom line – हिंदी
"Sab phir se scratch se karte nahi baithna hai."
- चालू असलेल्या web server ची एकदा AMI बनवा (Nginx, PHP, तुमचा code, सगळं set up केलेलं).
- Alert आला की त्या AMI मधून नवीन instance launch करा. काहीच install न करता तो minutes मध्ये ready.
- त्याला load balancer मागे add करा (section 7).
हे हाताने करायला अजूनही जागा माणूस लागतो. Auto Scaling हेच steps तुमच्यासाठी करतो; ते Auto Scaling मध्ये आहे.
6. पहिल्या दिवसापासून load balancer
Classroom line
Even with one server, use a load balancer.
Class मधलं वाक्य
एकच server वापरत असाल तरी load balancer वापरायचा.
Classroom line – हिंदी
"Bhale aap ek server use kar rahe ho, fir bhi load balancer use karna hai."
एकाच server ला का? DNS मुळे.
- Load balancer नसेल तर तुमचा domain थेट server च्या IP कडे जातो (A record).
- ज्या दिवशी दुसरा server लागेल, त्या दिवशी domain load balancer कडे हलवावा लागेल.
- तो DNS बदल cache केलेली उत्तरं expire झाल्यावरच पसरतो, म्हणजे TTL वर अवलंबून. तोपर्यंत काही users जुन्याच IP वर जातात, आणि तेही तुमच्या सगळ्यात busy दिवशी.
- पहिल्या दिवसापासून load balancer असेल तर domain कधीच बदलत नाही. फक्त त्याच्या मागे servers add करायचे.
Load balancer कडे कुठला DNS record point करतो?
- A record: नाव → IP address. Load balancer ला वापरण्यासारखा एक fixed IP नसतो.
- Load balancer तुम्हाला DNS name देतो, उदा.
my-alb-123456.ap-south-1.elb.amazonaws.com(पुढेhttp://नाही). - CNAME: नाव → दुसरं नाव. दुसऱ्या DNS provider वर
www.example.comसाठी हा वापरा. Root domainexample.comवर CNAME चालत नाही. - Alias A record (Route 53): नाव load balancer कडे point करतो आणि root domain वर पण चालतो. Domain Route 53 मध्ये असेल तर हाच नेहमीचा choice.
Figure 4. A record: नाव ते IP. CNAME: नाव ते दुसरं नाव, दुसऱ्या DNS provider वर www साठी. Route 53 मध्ये Alias A: नाव ते load balancer, root domain वर पण. Load balancer चं DNS name my-alb-123456.ap-south-1.elb.amazonaws.com सारखं दिसतं.
7. Target groups आणि average CPU
Target group म्हणजे एक काम करणाऱ्या servers ची list, सोबत port आणि health check. Load balancer requests target group कडे पाठवतो, थेट servers कडे नाही. पूर्ण details: Target groups.
- समजा एका account मध्ये दोन apps आहेत: प्रत्येक app च्या servers साठी एक target group.
- नवीन server ला traffic तेव्हाच मिळतं जेव्हा तो target group मध्ये register होतो.
एका server वर नाही, average वर scale करा. समजा 3 servers चा CPU 80%, 70% आणि 60% आहे.
- Average = (80 + 70 + 60) / 3 = 70%.
- 5 minutes असंच राहिलं तर alarm वाजतो: 4था server add करा.
- आता load 4 servers वर वाटलं जातं, आणि average खाली येतो.
प्रत्यक्षात group चा average Auto Scaling group च्या CPUUtilization metric मधून येतो, जो CloudWatch सगळ्या servers वर average करतो.
Classroom line
It's 2 AM, everyone's asleep, nobody's using it.
Class मधलं वाक्य
रात्रीचे दोन वाजले, लोक झोपले, कोणी वापरत नाहीये.
Classroom line – हिंदी
"Raat ke do baj gaye, log so gaye, koi use nahi kar raha."
Scale in पण. रात्री 2 वाजता average खूप खाली जातो, म्हणून एक server काढा आणि त्याचे पैसे वाचवा. दुसरा, low alarm (उदा. average 30% च्या खाली) हे करतो.
Figure 5. समजा target group मधले तीन servers 80%, 70% आणि 60% CPU वर आहेत: average 70%, म्हणून चौथा server add होतो. रात्री 2 वाजता average खाली येतो आणि एक server काढला जातो.
8. Health checks: कोणाला traffic मिळत नाही
का: server चालू असतो पण त्यावरचा Nginx बंद असू शकतो. Check नसेल तर load balancer users ना तिकडेच पाठवत राहतो.
कसं चालतं:
- प्रत्येक interval ला (उदा. 30 seconds), load balancer प्रत्येक target वर एक path मागतो, जसं
/किंवा/index.html. - HTTP 200 = pass.
- Unhealthy threshold = target unhealthy mark व्हायला सलग किती checks fail व्हायला हवेत (किमान 2).
- Unhealthy target ला traffic मिळत नाही; बाकीचे ते वाटून घेतात.
- Load balancer त्याला check करत राहतो. सलग healthy threshold इतके pass झाले की traffic परत सुरू.
Classroom line
A check went out, the server didn't answer.
Class मधलं वाक्य
एक request पाठवली, server ने उत्तर दिलं नाही.
Classroom line – हिंदी
"Ek request bheja, server ne response nahi kiya."
Figure 6. Animation: load balancer तीन servers वर /index.html check करतो आणि सगळे 200 देतात; server 2 वरचा Nginx बंद पडतो आणि सलग दोन checks fail होतात; server 2 unhealthy mark होतो आणि checks चालू असताना त्याचं traffic servers 1 आणि 3 कडे जातं.
गणित: बंद server वर users किती वेळ जातात? Interval 5 ते 300 seconds असू शकतो.
- Interval 30 s × unhealthy threshold 2 = 1 minute पर्यंत requests बंद server कडे.
- Interval 5 s × threshold 2 = साधारण 10 seconds.
- छोटा interval लवकर react करतो, पण छोट्या hiccup ने पण server लवकर unhealthy होऊ शकतो. App प्रमाणे ठरवा.
Health checks चे प्रत्येक request चे पैसे लागत नाहीत. Application Load Balancer चं bill per hour आणि usage (LCUs) प्रमाणे.
Figure 7. Interval 30 s आणि unhealthy threshold 2: दोन failed checks, server बाहेर जायला साधारण 1 minute पर्यंत. Interval 5 s आणि threshold 2: साधारण 10 seconds.
Load balancer फक्त traffic पाठवणं थांबवतो; बिघडलेला server तसाच राहतो. तो आपोआप बदलणं हे Auto Scaling चं काम. सगळी settings Health checks मध्ये.
9. Listener rules: प्रत्येक path त्याच्या target group कडे
समजा आपण Instagram आहोत. Reels बघणं हलकं काम; video upload करणं जड (तो घ्यायचा, process करायचा, store करायचा).
Classroom line
If you put everything on one server...
Class मधलं वाक्य
"Sagle eka server var takla tar..."
सगळं एकाच server वर टाकलं तर...
Classroom line
If you put everything on one server...
- दोघांनी एकच servers चा pool वापरला तर uploads च्या burst ने CPU संपतो आणि सगळ्यांचे reels slow होतात.
- म्हणून दोन target groups:
tg-reelsलहान servers सोबत (समजा 4 GB RAM) आणिtg-uploadमोठ्या servers सोबत (समजा 32 GB RAM). प्रत्येक स्वतंत्र scale होतो.
कोणता group ते कोण ठरवतो? Listener.
- Listener म्हणजे load balancer ज्या protocol आणि port वर ऐकतो तो:
HTTP:80किंवाHTTPS:443. - त्याचे rules priority क्रमाने check होतात:
- Path
/reels*→tg-reels. - Path
/upload*→tg-upload. - Default (बाकी सगळं) →
tg-web.
Figure 8. HTTPS:443 वरचा एक listener path check करतो: /reels* tg-reels कडे (लहान servers), /upload* tg-upload कडे (मोठे servers), आणि बाकी सगळं default tg-web कडे.
आणखी rule types (host, header) आणि अनेक groups: Multiple target groups आणि Different HTTP listeners.
10. Round robin, login चा problem, आणि sticky sessions
Target group च्या आत, Application Load Balancer default ने round robin वापरतो:
Classroom line
Simple: first request here, second here, third here.
Class मधलं वाक्य
Simple आहे: पहिली request इकडे, दुसरी इकडे, तिसरी इकडे.
Classroom line – हिंदी
"Simple hai: pehla request idhar, dusra idhar, teesra idhar."
- Request 1 → server 1.
- Request 2 → server 2.
- Request 3 → server 3.
- Request 4 → परत server 1.
Problem: समजा app login session ज्या server ने login handle केलं त्याच्या memory मध्ये ठेवतो.
- User login करतो; request 1 server 1 कडे गेली, आता त्याला user लक्षात आहे.
- पुढचा click server 2 कडे जातो, ज्याने user ला कधी पाहिलंच नाही.
- Server 2 परत login screen दाखवतो.
Classroom line
I just logged in and the login screen came back!
Class मधलं वाक्य
आत्ताच तर login केलं, परत login screen आला!
Classroom line – हिंदी
"Abhi-abhi to maine login kiya hai, phirse login screen aaya!"
Fix 1: sticky sessions (target group ची setting, extra पैसे नाहीत):
- पहिल्या response वर load balancer browser मध्ये एक cookie (
AWSALB) ठेवतो, ज्यात कोणत्या target ने serve केलं ते असतं. - Browser पुढच्या प्रत्येक request सोबत ती cookie पाठवतो.
- Load balancer ती वाचून user ला त्याच server कडे पाठवतो, तुम्ही ठरवलेल्या duration पर्यंत (उदा. 1 दिवस).
- Load balancer login बद्दल काहीच store करत नाही; cookie browser मध्ये राहते.
Fix 2, लांबच्या दृष्टीने चांगला: shared session store. Sessions Redis किंवा database मध्ये ठेवा, म्हणजे कुठलाही server कुठल्याही user ला serve करू शकतो. मग कोणाला logout न करता server काढता किंवा बदलता येतो.
Figure 9. Animation: round robin मध्ये, पुढची request server 2 कडे गेली की server 1 वरचं login हरवतं; sticky sessions मध्ये browser मधली AWSALB cookie प्रत्येक request परत server 1 कडे आणते; shared session store असेल तर कुठलाही server चालतो.
Target निवडायच्या इतर पद्धती (least outstanding requests, weighted): Routing policy. कुठला load balancer type निवडायचा ते पुढच्या chapter मध्ये, आणि Which load balancer to use मध्ये.
11. Console मध्ये बनवा
Part A: SNS topic
- SNS > Topics > Create topic, type Standard, नाव
cpu-high-alerts, Create topic. - Create subscription, protocol Email, endpoint: तुमचा email address.
- AWS चा mail उघडा आणि Confirm subscription click करा. Status Confirmed होतो.
Part A2: एका golden AMI मधून तीन web servers
का: load balancer मागचा प्रत्येक server सारखीच site दाखवायला हवा. एक server बनवा, तो image (golden AMI) म्हणून save करा, आणि बाकीचे त्यातून launch करा.
- Public subnet मध्ये Amazon Linux 2023 t2.micro launch करा, 22 आणि 80 open असलेल्या security group सोबत.
- Nginx install आणि start करा:
sudo yum install nginx -y
sudo service nginx start
sudo systemctl enable nginx
- शेवटच्या line मुळे प्रत्येक reboot नंतर Nginx परत सुरू होतो, म्हणून image मधून launch केलेले servers लगेच pages देतात.
/usr/share/nginx/html/index.htmlमध्ये<h1>FIRST</h1>ठेवा.- Actions > Image and templates > Create image, name
firstami. AMI Available होईपर्यंत थांबा. - AMIs > firstami > Launch instance from AMI: त्याच security group सोबत अजून 2 launch करा.
- त्यांच्यावर page
<h1>SECOND</h1>आणि<h1>THIRD</h1>करा, म्हणजे कोणत्या server ने उत्तर दिलं ते दिसेल. - काही AZs मध्ये प्रत्येक instance type मिळत नाही (उदा.
us-east-1e). Capacity किंवा type मुळे launch fail झालं तरus-east-1aकिंवाus-east-1bनिवडा.
Classroom line
A load balancer never launches in a single zone.
Class मधलं वाक्य
"Load balancer kadhich single zone madhe launch hot nahi."
Load balancer कधीच single zone मध्ये launch होत नाही.
Classroom line
A load balancer never launches in a single zone.
Part B: target group
- EC2 > Target groups > Create target group, type Instances, नाव
tg-web, protocol HTTP, port 80, तुमचा VPC. - Health checks: path
/index.html. Advanced health check settings मध्ये interval आणि unhealthy threshold ठेवा (section 8). - Register targets: web servers tick करा, Include as pending below, Create target group.
Worked example: lab साठी जलद health-check settings
- Path
/index.html, success code200. - Healthy threshold 2, unhealthy threshold 2.
- Timeout 3 seconds, interval 5 seconds.
- बंद पडलेला server 2 × 5 = साधारण 10 seconds मध्ये बाहेर; दुरुस्त झालेला अजून 2 × 5 = साधारण 10 seconds मध्ये परत.
- Register targets मध्ये Include as pending below click केल्यावरच server add होतो.
Classroom line
It gets added only if you click Include as pending below.
Class मधलं वाक्य
"Include as pending below kela asel tarach te pudhe add hoil."
Include as pending below केलं असेल तरच ते पुढे add होईल.
Classroom line
It gets added only if you click Include as pending below.
Part C: load balancer आणि listener rules
- EC2 > Load balancers > Create load balancer > Application Load Balancer, scheme Internet-facing.
- तुमचा VPC आणि वेगवेगळ्या AZs मधले किमान दोन public subnets निवडा.
- Security group
alb-sg: 80 (आणि 443) सगळीकडून allow. Web servers चा SG फक्तalb-sgकडून 80 allow करतो. - Listener HTTP:80, default action:
tg-webकडे forward. Create load balancer. - Listener उघडा, Manage rules > Add rule: condition Path
/reels*, actiontg-reelsकडे forward./upload*→tg-uploadसाठी परत तसंच. - Load balancer चं DNS name copy करून browser मध्ये उघडा. Route 53 मध्ये तुमच्या domain साठी त्याच्याकडे point करणारा Alias A record बनवा.
Part D: sticky sessions (app sessions server memory मध्ये ठेवत असेल तरच)
tg-webउघडा > Attributes > Edit.- Stickiness tick करा, type Load balancer generated cookie, duration 1 day. Save changes.
Part E: CloudWatch alarm
- CloudWatch > Alarms > Create alarm > Select metric > EC2 > Per-Instance Metrics, web server चा
CPUUtilizationनिवडा. - Statistic Average, period 5 minutes.
- Condition Greater/Equal than 70.
- Notification: In alarm →
cpu-high-alertsला पाठवा. - नाव
cpu-high-web, Create alarm.
Part F: test करा
- एका web server वर Nginx बंद करा:
sudo service nginx stop. Interval × threshold नंतर target unhealthy दिसतो, आणि site दुसऱ्या server वरून चालूच राहते. - परत चालू करा:
sudo service nginx start. Healthy threshold नंतर तो परत healthy. - CPU वर load द्यायला stress tool install करा:
sudo yum install stress-ng -y, मगstress-ng --cpu 2 --timeout 600चालवा. साधारण 5 minutes मध्ये alarm In alarm होतो आणि email येतो.
Part G: round robin बघा
- तीन servers (FIRST, SECOND, THIRD) target group मध्ये register करा आणि load balancer चं DNS name उघडा.
- काही वेळा refresh करा: page बदलतं, उदा. FIRST, THIRD, SECOND. ALB by default healthy targets मध्ये round robin ने requests वाटतो.
- Servers चे स्वतःचे public IPs try करा: ते अजून उत्तर देतात. Servers चा port 80 rule source = load balancer चा security group करा, म्हणजे users load balancer ला टाळून जाऊ शकत नाहीत.
Part H: detailed monitoring आणि 1-minute alarm
- EC2 > Instances, server select करा, Actions > Monitor and troubleshoot > Manage detailed monitoring, Enable tick करा, Confirm.
- CloudWatch > Alarms > Create alarm > Select metric > EC2 > Per-Instance Metrics > त्या server चा CPUUtilization.
- Statistic Average, period 1 minute, threshold type Static, Greater/Equal 50.
- In alarm → तुमच्या SNS topic ला पाठवा. नाव
ec2alarm, Create alarm. तो Insufficient data मध्ये सुरू होतो, मग OK दाखवतो. - CPU load करा:
sudo yum install stress-ng -y
stress-ng --cpu 6 --timeout 120
- काही minutes मध्ये alarm In alarm मध्ये जातो आणि email येतो. Test संपल्यावर तो परत OK होतो.
12. काही चुकलं तर
- Alert email येत नाही: subscription अजून Pending confirmation आहे. AWS mail मधली link click करा (spam पण बघा).
- सगळे targets unhealthy: web SG
alb-sgकडून 80 allow करत नाही, Nginx बंद आहे, किंवा health-check path 404 देतो. - Alarm कधीच वाजत नाही: चुकीचा metric (दुसरा instance), किंवा threshold पूर्ण period भर राहत नाही.
- Users सारखे logout होतात: sessions server memory मध्ये आहेत आणि stickiness बंद आहे. ती चालू करा, किंवा sessions shared store मध्ये हलवा.
/uploadचुकीच्या servers कडे जातं: rules चा क्रम चुकलाय, किंवा path pattern मध्ये*नाही.- Server ला SSH timeout होतो: एक एक check करा: server public subnet मध्ये आहे; internet gateway attach आहे; subnet च्या route table मध्ये IGW कडे
0.0.0.0/0आहे; security group तुमच्या IP कडून port 22 allow करतो. - Office मध्ये SSH चाललं पण घरी नाही: My IP rule तो बनवताना तुमचा जो public IP होता तो ठेवतो. घरी तुमचा internet provider वेगळा public IP देतो. Rule edit करून परत My IP निवडा.
Classroom line
Once your IP changes, the connection here is cut.
Class मधलं वाक्य
"Tumchi IP change zali ki ithla wire cut zala."
तुमचा IP बदलला की इथली wire cut झाली.
Classroom line
Once your IP changes, the connection here is cut.
- एका server ला कधीच traffic मिळत नाही: त्याची Availability Zone load balancer वर enable नाही. जिथे targets आहेत त्या सगळ्या AZs select करा.
- Lab नंतरही bill मध्ये थोडा charge राहतो: नको असलेला AMI अजून त्याचे EBS snapshots ठेवतो. AMI deregister करा आणि त्याचे snapshots delete करा.
Classroom line
In a hurry, some people forget to click 'Include as pending below'.
Class मधलं वाक्य
"Kahi gadbadit 'include as pending below' visartat."
काही जण गडबडीत 'include as pending below' विसरतात.
Classroom line
In a hurry, some people forget to click 'Include as pending below'.
Ravindra Bagale's Tip
पहिल्याच दिवशी load balancer समोर ठेवा, एका server साठी सुद्धा, आणि Alias record ने domain त्याच्याकडे point करा. Health-check path असा page ठेवा ज्याला खरंच app चालायला लागतो. आणि alarm नेहमी period च्या average वर ठेवा, एका spike वर कधीच नाही.
13. संपूर्ण class एका page वर
- Scale up = मोठा instance, stop करावा लागतो. Scale out = जास्त servers, downtime नाही.
- दोन A records load असमान वाटतात आणि बंद server कडे users पाठवत राहतात. Load balancer दोन्ही सोडवतो.
- Threshold + period वर alarm: 5 minutes ची average CPU ≥ 70%. Spiky apps मध्ये alarm लवकर.
- SNS: topic, publisher (alarm), subscribers (email, SMS, Lambda...). Email ला Confirm subscription लागतं.
- नवीन servers तयार AMI मधून. Auto Scaling हे automatic करतो.
- पहिल्या दिवसापासून load balancer. त्याचं DNS name Alias A record (Route 53) मध्ये किंवा www साठी CNAME मध्ये.
- Target group = एका कामाचे servers + health check. Group च्या average CPU वर scale; रात्री scale in.
- Health check: interval 5-300 s, unhealthy threshold किमान 2. 30 s × 2 = 1 minute पर्यंत; 5 s × 2 ≈ 10 s.
- Listener rules path प्रमाणे route करतात: /reels आणि /upload त्यांच्या groups कडे, बाकी default कडे.
- Round robin मध्ये server memory मधलं login हरवू शकतं. Sticky sessions (AWSALB cookie, extra पैसे नाहीत) किंवा, अजून चांगलं, shared session store.
14. घरी करून बघा
घरी करून बघा
Task 1: कागदावर
- समजा 4 servers 90%, 60%, 50% आणि 40% CPU वर आहेत. Average किती? "5 minutes ≥ 70%" वाला alarm वाजेल का?
- Interval 10 s, unhealthy threshold 3: बंद server वर users साधारण किती वेळ जाऊ शकतात?
Task 2: console मध्ये
- SNS topic बनवा आणि email subscription confirm करा.
- ALB मागे
tg-webमध्ये दोन web servers ठेवा. DNS name उघडून refresh करा: pages दोन्ही servers कडून यायला हवीत (index.htmlमध्ये hostname दाखवा). - एकावर Nginx बंद करा, तो unhealthy होताना बघा, मग परत चालू करा.
stress-ngचालवा आणि alarm email ची वाट बघा.
Task 3: clean up
- आधी load balancer delete करा, मग target groups, alarm आणि topic. Extra servers terminate करा. Load balancer असेपर्यंत दर तासाला bill लागतं.
Recap
थोडक्यात
- जास्त servers ने scale out करा, आणि पहिल्या दिवसापासून load balancer समोर ठेवा.
- CloudWatch period च्या average वर alarm देतो, आणि SNS subscribe केलेल्या लोकांना कळवतो.
- Target groups मध्ये servers असतात; health checks बंद server ला rotation मधून बाहेर काढतात.
- Listener rules प्रत्येक path त्याच्या group कडे पाठवतात.
- Round robin मध्ये logins साठी sticky sessions किंवा shared session store लागतं.
सराव Tasks
Amravati Agro Market हा अमरावती मधला शेती व्यवसाय आहे. Anjali Thakre त्यांचं IT व cloud काम पाहतात. त्यांचे पैसे INR मध्ये मोजले जातात आणि AWS resources ap-south-1 Region मध्ये चालतात. खालच्या tasks मध्ये तुम्ही या lesson मध्ये शिकलेलं वापरून त्यांची खरी कामं करता. सगळी नावं, account IDs, IP addresses व numbers सरावासाठी काल्पनिक आहेत.
0 / 11
सोपं SNS topic बनवा
का: Topic म्हणजे channel: एकदा publish, सगळ्या subscribers ना मिळतं.
काय करायचं: amravatiagro-alerts topic बनवा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
सोपं Firing alarms दाखवा
का: Incident मध्ये आधी ALARM state मधले alarms पाहा.
काय करायचं: फक्त ALARM state असलेले alarms describe करा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
सोपं Namespace मधले metrics दाखवा
का: Service साठी AWS कोणते metrics गोळा करतो ते पाहा.
काय करायचं: AWS/EC2 namespace मधले metrics दाखवा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
सोपं एका topic वर publish
का: Alerting app ला फक्त publish लागतं.
काय करायचं: फक्त arn:aws:sns:ap-south-1:120348739971:amravatiagro-alerts वर sns:Publish allow करा.
- { "Version": "2012-10-17", "Statement": [ ... ] } ने सुरू करा.
- प्रत्येक statement मध्ये Effect, Action व Resource लिहा.
- Task ला लागेल तेवढंच द्या (least privilege).
- Double quotes व commas नीट वापरा. Check answer दाबा.
मध्यम Target health तपासा
का: Targets unhealthy असल्यास site 502/503 errors दाखवते.
काय करायचं: arn:aws:elasticloadbalancing:ap-south-1:120348739971:targetgroup/amravatiagro-tg/6d0ecf831eec9f09 मधल्या targets चं health दाखवा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
मध्यम Email subscribe करा
का: Email subscribers नी messages मिळण्याआधी confirm link दाबावी लागते.
काय करायचं: ops@amravatiagro.in ला email ने arn:aws:sns:ap-south-1:120348739971:amravatiagro-alerts वर subscribe करा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
मध्यम Custom metric publish करा
का: Custom metrics ने business numbers वर graph व alarm करता येतो.
काय करायचं: Namespace AmravatiAgroMarket/Shop मध्ये OrdersPlaced metric value 15 सह publish करा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
मध्यम Kubernetes LoadBalancer Service
का: LoadBalancer Service ला AWS load balancer मिळतो.
काय करायचं: app: web select करणारी LoadBalancer Service, port 80 → targetPort 8080.
- Task मधल्या top-level keys पासून सुरू करा.
- Child keys 2 spaces ने indent करा (tabs नकोत).
- प्रत्येक property मध्ये task मधली value भरा.
- Check answer दाबा. Keys चा क्रम महत्त्वाचा नाही.
अवघड CPU alarm बनवा
का: Alarm metric पाहतो व users ला कळण्याआधी तुम्हाला कळवतो.
काय करायचं: amravatiagro-cpu-high alarm बनवा: AWS/EC2 CPUUtilization, 300 seconds चा Average, 1 evaluation period, GreaterThanThreshold 80, InstanceId=i-01bdd3bc430211a2b साठी, arn:aws:sns:ap-south-1:120348739971:amravatiagro-alerts ला notify.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
अवघड Application Load Balancer बनवा
का: High availability साठी ALB ला वेगवेगळ्या AZs मधले किमान दोन subnets लागतात.
काय करायचं: amravatiagro-alb नावाचा ALB subnets subnet-02034cb3ddb1bb1 व subnet-0034cb3ddb1bb2 मध्ये security group sg-02034ba3cca14c3b2 सह बनवा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
अवघड HTTP listener जोडा
का: Listener port वर traffic स्वीकारतो व target group कडे पाठवतो.
काय करायचं: Load balancer arn:aws:elasticloadbalancing:ap-south-1:120348739971:loadbalancer/app/amravatiagro-alb/50dc6c495c0c9188 वर port 80 चा HTTP listener बनवा जो arn:aws:elasticloadbalancing:ap-south-1:120348739971:targetgroup/amravatiagro-tg/6d0ecf831eec9f09 कडे forward करेल.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
झटपट उजळणी cards
हा lesson दोन मिनिटांत revise करा. Cards phone वर save करा किंवा PNG download करा. प्रत्येक card वरचा QR त्याचा lesson उघडतो.












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