Websites

Een Node.js-app schalen en automatisch schalen

Auto-scaling grows and shrinks the number of instances running your Node.js app as CPU load changes, so busy periods get more capacity and quiet periods cost less. This guide covers the KPanel tab…

Auto-scaling vergroot en verkleint het aantal instances dat uw Node.js-app uitvoert als de CPU-belasting verandert, zodat drukke periodes meer capaciteit krijgen en rustige periodes minder kosten. Deze gids behandelt het KPanel-tabblad, alle instellingen, wat wordt gefactureerd, en hoe u een app veilig kunt schalen.

Waar schaling in KPanel te vinden is

  1. Meld u aan bij KPanel.
  2. Klik op Websites in de linkerzijbalk en klik vervolgens op de site.
  3. Open in het tabblad van de site Advanced en vervolgens Scaling.

Het directe adres is /websites/<site-id>/autoscale. Het oudere adres /websites/<site-id>/scaling werkt nog steeds en brengt u naar dezelfde plaats.

Auto-scaling-instellingen voor een Node.js-app in KPanel

Het tabblad verschijnt alleen op Node.js-sites. Het zal niet in het menu voorkomen voor een WordPress-, WooCommerce-, static-, PHP-, Python- of Ruby-site, omdat het mechanisme een Node.js-procescluster schaalt.

Eén tabblad, één configuratie

KPanel had hier voorheen twee tabbladen, Scaling en Autoscale, over één set instellingen. Ze waren twee weergaven van dezelfde configuratie, wat alleen maar verwarrend was, dus nu is er één tabblad Scaling: livestatus, de instellingen, recente schaalgebeurtenissen en het gebruiks- en kostenpaneel voor de huidige factureringsperiode, allemaal op één plek.

Hoe het werkt

Uw app wordt uitgevoerd als een procescluster. Auto-scaling bewaakt de gemiddelde CPU op de draaiende instances en voegt instances toe of verwijdert deze op basis van de drempels die u instelt.

Clustermodus is vereist. Als uw app niet al in clustermodus wordt uitgevoerd, schakelt het inschakelen van auto-scaling deze voor u in, wat een korte herstart veroorzaakt. De pagina vertelt u wanneer dit gebeurt.

De livestatus lezen

De statuskaart toont drie dingen:

  • Instances: hoeveel op dit moment draaien.
  • Avg CPU: de gemiddelde CPU over die instances.
  • Cluster: of de app in clustermodus staat. Indien nee, schakelt het inschakelen van auto-scaling deze over.

Als de app helemaal niet draait, staat op de kaart in plaats daarvan dat dit zo is.

Het tabblad toont ook Last scale, het moment van de meest recente schaalgebeurtenis, of never.

De instellingen

InstellingBereikWat het doet
Min instances1 tot 16De ondergrens. Schaalt nooit lager
Max instances1 tot 16De bovengrens. Schaalt nooit hoger
Scale up at CPU %5 tot 99Gemiddelde CPU boven dit voegt een instance toe
Scale down at CPU %1 tot 95Gemiddelde CPU onder dit verwijdert er een
Cooldown (sec)30 tot 3600Minimale wachttijd tussen schaalacties

De hoofdschakelaar is de toggle in de koptekst van de instellingenkaart. Wanneer auto-scaling uit is, zijn de instellingen gedimd en blijft uw app op het huidige aantal instances.

Verstandige startwaarden:

  • Min instances 1 of 2. Twee als u niet kunt tolereren dat een herstart van een enkele instance de app offline haalt.
  • Max instances op wat u bereid bent te betalen op het hoogtepunt, niet op de bovengrens.
  • Scale up rond 70 procent. Hoog genoeg zodat u niet betaalt voor speelruimte die u nooit gebruikt, laag genoeg zodat er tijd is om capaciteit toe te voegen voordat verzoeken in de wachtrij gaan staan.
  • Scale down rond 30 procent. Zorg voor een groot gat tussen de twee drempels.
  • Cooldown van een paar minuten. Dit is de meest onderschatte instelling.

Het stellen van de twee CPU-drempels dicht bij elkaar veroorzaakt flapping: het cluster schaalt omhoog, valt onmiddellijk onder de scale-down-drempel omdat de belasting nu breder is verdeeld, schaalt omlaag, piekt weer, en herhaalt zich. Zorg voor een groot gat en gebruik een ruime cooldown. Flapping kost geld en destabiliseert de app.

Schaalgebeurtenissen

Het tabblad geeft een lijst van recente schaalgebeurtenissen, nieuwste eerst, elk met de richting, het aantal instances voor en na, de CPU-waarde die het veroorzaakte, en het moment.

Dit is het logboek om na te kijken als de app zich onwettig gedroeg. Een reeks omhoog- en omlaaggebeurtenissen in een paar minuten betekent dat uw drempels te dicht bij elkaar liggen of uw cooldown te kort is. Een enkele opschaling die nooit meer omlaag gaat betekent dat de belasting hoog bleef, wat meer een capaciteitskwestie is dan een configuratie. Geen gebeurtenissen op het moment dat u er enkele verwachtte, betekent dat de CPU nooit een drempel heeft overschreden of auto-scaling is uitgeschakeld.

Wat auto-scaling kost

Instances boven de basisallocatie van uw plan worden per seconde gemeten en gefactureerd. Het tabblad toont voor de huidige periode:

  • Instance-time used, in uren en minuten, met de onbewerkte instance-seconden eronder.
  • Spent so far in deze periode.
  • Projected month-end, geëxtrapoleerd op basis van tot nu toe gebruikt.
  • Tracking, hoeveel gebruiksvensters zijn gefactureerd uit het totaal geregistreerde.
  • Period progress, verstreken dagen uit de dagen in de maand.

Het tarief per seconde wordt bovenaan hetzelfde paneel weergegeven, zodat het bedrag waarover u wordt gefactureerd altijd zichtbaar is naast het gebruik waarop het van toepassing is.

De projectie is het getal om in de gaten te houden. Het extrapokeert van wat u tot nu toe heeft gebruikt, dus een ongewoon drukke week begin van de maand zal het overschatten. Check het een paar dagen in, dan opnieuw halverwege de maand, voordat u conclusies trekt. Als het hoger is dan u wilt, verlaag dan het maximale aantal instances in plaats van de scale-up-drempel te verhogen: de bovengrens is een harde limiet, een drempel is slechts een hint.

Omlaag schalen naar het minimum stopt de meting. Als u auto-scaling helemaal uitschakelt, blijft de app op het huidige aantal instances draaien, dus zet het eerst terug naar het minimum als kosten de reden zijn om het uit te schakelen.

Een app veilig voor schaling maken

De pagina draagt een waarschuwing, en het is het belangrijkste wat erop staat: uw Node.js-app moet clusterproef zijn om schoon over instances te schalen.

In de praktijk betekent dit:

Geen in-memory-sessietoestand. Als de sessie van een aangemelde gebruiker in het geheugen van één instance leeft, zijn ze afgemeld telkens wanneer een verzoek op een ander instance terechtkomt. Verplaats sessies naar een gedeeld archief.

Geen in-memory-cache waarop u voor juistheid vertrouwt. Elke instance heeft de zijne. Een cache die consistent moet zijn, moet gedeeld zijn.

Geen lokale bestandssysteemschrijfbewerkingen die u verwacht terug te lezen. Uploads die door één instance naar lokale schijf worden geschreven, zijn onzichtbaar voor de anderen. Schrijf naar gedeelde opslag.

Geen onbeveiligd gepland werk. Als een timer in de app wordt uitgevoerd, voert elke instance dit uit, dus een nachtelijke taak op vier instances voert vier keer uit. Verplaats gepland werk naar een cron-taak, of beveilig het met een slot. Zie Cron Jobs.

Geen aanname dat het aantal instances stabiel is. Alles dat werk partitioneert op basis van instance-index breekt het moment dat de telling verandert.

Als een van deze op uw app van toepassing is, repareer ze voordat u auto-scaling inschakelt. Een app die niet clusterproef is, mislukt op manieren die intermitterend zijn en moeilijk te reproduceren zijn, omdat ze ervan afhangen welke instance welk verzoek bediende.

Probleemoplossing

De toggle kan niet worden ingeschakeld. Het inschakelen vereist de schrijfbevoegdheid van de site. Met een alleen-lezen rol zijn de besturingselementen uitgeschakeld.

De app is opnieuw gestart toen ik auto-scaling inschakelde. Verwacht. Overschakelen naar clustermodus vereist een herstart, en het gebeurt eenmaal.

Gebruikers worden willekeurig afgemeld. Klassiek symptoom van niet-clusterproef. Sessies staan in het geheugen en verzoeken landen op verschillende instances.

Instances werden omhoog geschaald en kwamen nooit omlaag. De belasting bleef ofwel boven de scale-down-drempel, of iets houdt de CPU onafhankelijk van verkeer hoog. Controleer de gebeurtenissenlijst en kijk naar wat de app werkelijk doet.

Een geplande taak is meerdere keren uitgevoerd. Elke instance voerde deze uit. Verplaats dit naar een cron-taak of voeg een slot toe.

Er wordt niets geschaald. Bevestig dat de toggle aan is, de app draait, en clustermodus is ingeschakeld. Controleer vervolgens of CPU werkelijk uw scale-up-drempel in de gebeurtenissenlijst heeft overschreden.

De kosten zijn hoger dan verwacht. Controleer de gebeurtenissenlijst op flapping en verlaag vervolgens uw maximale aantal instances.

Gerelateerde pagina's

Nog steeds hulp nodig?

Stuur ons een e-mail op support@kapsulehost.com of open een chat in KPanel.

KPanel openen
Een Node.js-app schalen en automatisch schalen