Am un AWS Application Load Balancer configurat cu EC2 și un grup de scalare automată. Instanțele EC2 rulează un server web Windows+IIS. Serverul Web se conectează la o bază de date.
S-a întâmplat în unele situații (o dată la 2 luni) ca verificările de sănătate pentru ALB să înceapă să detecteze aplicația ca nesănătoasă și să elimine instanțele EC2. Există întotdeauna cel puțin 2 instanțe care rulează, iar acest lucru se întâmplă pentru toate instanțele în același timp.Încerc să înțeleg de ce se întâmplă acest lucru și nu găsesc niciun jurnal sau indicații utile despre unde provine acest lucru.
Vedeți cum instanțele scad la zero dintr-o dată pe 12/6:
Mărit:
Instanțele EC2 sunt terminate ca:
Verificarea sănătății este configurată pentru a trimite ping la o pagină care o face nu interogați baza de date, astfel încât un blocaj în baza de date nu pare cauza probabilă.
Când se întâmplă asta, timpul de răspuns crește vertiginos:
Și, de asemenea, măsurat de NewRelic:
Rețineți câteva lucruri:
- toate fazele răspunsului sunt mai lente (timp Redis, timp .NET etc.)
- se întâmplă tuturor serverelor să fie în același timp, așa că este puțin probabil să fie o problemă în interiorul serverului
- s-a întâmplat întotdeauna în afara orelor de lucru când sarcina este scăzută
Configurații de scalare automată:
Capacitate minima=2
Capacitate maxima=15
Distribuția instanțelor= 50% la cerere, 50% spot
Includeți capacitatea de bază la cerere=Desemnați primele 1 instanțe ca la cerere
Strategia de alocare la cerere=Prioritizată
Strategia de alocare spot=Prețul cel mai mic - diversificat în cele 10 pool-uri cu cel mai mic preț
Reechilibrare capacitate=Oprit
Protecție de scalare a instanței=Nu este protejată de scalare
Politici de terminare=Implicit
Timp de răcire implicit=300
Configurații grup țintă:
Protocol=HTTPS
Path=/path/to/login/page
Port=Port de trafic
Prag de sănătate = 2 succese consecutive ale verificării de sănătate
Prag nesănătos=4 eșecuri consecutive de verificare a stării de sănătate
Timeout=20 secunde
Interval=25 secunde
Coduri de succes=200