KehittäjätSkaalaus

Skaalaus

Sovellusta voi ajaa useana kopiona usealla palvelimella. Voit tehdä sen käsin palvelimilla, jotka sinulla jo on (usea palvelin), tai antaa Hostwolfin lisätä ja poistaa palvelimia suoritinkuorman mukaan (automaattinen skaalaus). Kummassakin tapauksessa älä pidä tilaa sovelluksen omalla levyllä: laita data hallinnoituun tietokantaan, johon jokainen kopio yltää.

Usea palvelin#

Lisää sovellukselle toinen sovelluspalvelimistasi ja julkaise. Hostwolf tekee konttikuvan kerran, käynnistää kopion jokaisella palvelimella, ja sovelluksen pääpalvelin (primary) jakaa pyynnöt kaikkien terveiden kopioiden kesken. Jos kopio pysähtyy, pyynnöt menevät muille.

# The other server's destination (a Docker network on that server)
DEST=$(hw $API/servers/$OTHER_SERVER/destinations | jq -r '.[0].uuid')

hw -X POST $API/applications/$APP/destinations -d "{\"destination_uuid\": \"$DEST\"}"
hw -X POST $API/applications/$APP/start

hw $API/applications/$APP/destinations | jq   # primary + copies

$OTHER_SERVER on server_uuid kutsusta GET /hostwolf/servers. Näin lopetat kopion ajamisen palvelimella:

hw -X DELETE $API/applications/$APP/destinations/$DEST
  • Jokaisen palvelimen pitää olla yksi Hostwolf-sovelluspalvelimistasi. Pääpalvelinta ei voi poistaa; sillä sovelluksen build tehdään.
  • Julkaisun aikana jokainen palvelin käynnistää kopionsa uudelleen, ja pyynnöt menevät sillä välin käynnissä oleville kopioille.
  • Taltiot ovat palvelinkohtaisia: jokaisella kopiolla on omansa. Jaettu data kuuluu hallinnoituun tietokantaan.
  • SDK:ssa: applications.addServer(appUuid, serverUuid); MCP:ssä: add_app_server.

Automaattinen skaalaus#

Automaattinen skaalaus lisää sovelluspalvelimen, kun sovelluksen keskimääräinen suoritinkuorma pysyy korkeana, ja poistaa sen, kun kuorma laskee. Uudet palvelimet sijoitetaan kaupunkiin, josta tulee eniten liikennettä, tai sallimiisi kaupunkeihin. Jokainen lisätty palvelin on samankokoinen kuin sovelluksen pääpalvelin.

hw $API/applications/$APP/autoscaling | jq
{
  "configured": false,
  "blocker": null,
  "policy": {
    "enabled": false, "min_copies": 1, "max_copies": 2, "monthly_cap_usd": 50,
    "allowed_cities": [], "scale_up_cpu": 60, "scale_up_minutes": 2,
    "scale_down_cpu": 15, "scale_down_minutes": 5, "cooldown_minutes": 3
  },
  "cities": [{"id": "vultr:fra", "city": "Frankfurt", "country": "DE", "monthly_price": 18.79, "hourly_price": 0.0257}],
  "status": null
}

Ota se käyttöön PUT-pyynnöllä. Pois jättämäsi kentät säilyttävät arvonsa:

hw -X PUT $API/applications/$APP/autoscaling -d '{"enabled": true, "max_copies": 4, "monthly_cap_usd": 40}'
KenttäMerkitysOletus
enabledPäällä tai poisfalse
min_copies / max_copiesAina käynnissä olevat kopiot ja niiden enimmäismäärä (1–100)1 / 2
monthly_cap_usdAutomaattinen skaalaus lopettaa palvelinten lisäämisen, kun tämän kuun skaalaustunnit saavuttavat tämän summan, ja tiimin ylläpitäjät saavat sähköpostin50
allowed_citiesAlueiden tunnisteet, joihin palvelimia saa lisätä; tyhjä tarkoittaa lähellä kävijöitäsi[]
scale_up_cpu / scale_up_minutesLisää palvelin, kun suoritinkuorma on yli tämän prosentin näin kauan60 / 2
scale_down_cpu / scale_down_minutesPoista palvelin, kun suoritinkuorma on alle tämän prosentin näin kauan15 / 5
cooldown_minutesLyhin aika kahden muutoksen välillä3

Saman vastauksen cities listaa alueiden tunnisteet, jotka allowed_cities hyväksyy tälle sovellukselle, halvin ensin, sekä yhden palvelimen tuntihinnan siellä. GET /hostwolf/regions?size=s listaa jokaisen kaupungin ja kunkin koon hinnan; autoscaling: true merkitsee kaupungit, joita automaattinen skaalaus voi käyttää.

Laskutus: automaattisesti lisätyt palvelimet maksavat normaalihinnan tunneittain (kuukausihinta ÷ 730), ja summa lisätään seuraavaan palvelinlaskuusi. Kun tämän kuun skaalaustunnit saavuttavat rajan monthly_cap_usd, palvelimia ei enää lisätä ja tiimin ylläpitäjät saavat sähköpostin. status.spend_usd näyttää tämän kuun kulut tähän mennessä, ja status.copies listaa käynnissä olevat kopiot kaupunkeineen ja suoritinkuormineen.

Kun sitä ei voi ottaa käyttöön, blocker (ja 409-vastaus PUT-pyyntöön) kertoo syyn:

  • sovelluksen pääpalvelin ei ole yksi Hostwolf-sovelluspalvelimistasi, tai se ei ole käynnissä;
  • sovellukselle ei ole asetettu porttia (ports_exposes);
  • tiimilläsi ei ole aktiivista palvelintilausta, johon tunnit voisi lisätä.

Uuden palvelimen liittyminen kestää noin neljä minuuttia, joten aseta min_copies etukäteen, jos tiedät julkaisutapahtuman tulevan.

Push-julkaisut usealla kopiolla#

Push-julkaisut ja CI-julkaisut toimivat samoin usealla kopiolla: yksi build, ja sitten jokainen kopio päivitetään, myös palvelimet, jotka automaattinen skaalaus lisäsi.

Jumissa, tai puuttuuko päätepiste? Kerro meille osoitteessa app.hostwolf.net/contact tai [email protected].