Kuor­mi­tuk­sen ta­sa­pai­not­ta­mi­sen avulla pal­ve­li­meen koh­dis­tu­va liikenne voidaan jakaa ta­sai­ses­ti eri lait­teis­to­re­surs­seil­le kuor­mi­tuk­sen ta­sa­pai­not­ta­jak­si kutsutun teknisen ratkaisun avulla. Tämä takaa vakaat yh­teys­no­peu­det, mikä on rat­kai­se­van tärkeää uusien liidien ja asiak­kai­den hank­ki­mi­sen kannalta.

Mitä on kuor­mi­tuk­sen ta­sa­pai­not­ta­mi­nen?

Kuor­mi­tuk­sen ta­sa­pai­not­ta­mi­nen on erityisen yleistä pal­ve­lin­tek­nii­kas­sa, ja sillä tar­koi­te­taan me­ne­tel­mää, jossa pyynnöt jaetaan taustalla eri pal­ve­li­mil­le ilman, että käyttäjät huomaavat sitä. Tätä varten käy­tet­tä­vä kuor­mi­tuk­sen ta­sa­pai­not­ta­ja voidaan toteuttaa lait­teis­to­na tai oh­jel­mis­to­na. Se osoittaa useita pal­ve­li­mia yhdelle verk­ko­tun­nuk­sel­le ai­heut­ta­mat­ta osoi­te­ris­ti­rii­to­ja, ja palveluun pääsee verk­ko­tun­nuk­sen kautta.

Ali­pal­ve­li­mil­le annetaan nimet li­sää­mäl­lä verk­ko­tun­nuk­seen www1, www2, www3 jne. Tämä mah­dol­lis­taa kuor­mi­tuk­sen ta­sa­pai­not­ta­mi­sen, jolloin verk­ko­si­vus­to on käy­tet­tä­vis­sä samalla URL-osoit­teel­la, vaikka sen takana onkin useita pal­ve­li­mia. Näin vältytään pal­ve­li­mien yli­kuor­mi­tuk­sel­ta, sillä ulkoiset pyynnöt jaetaan klusterin eri fyysisten koneiden kesken. Käyttäjät eivät yleensä huomaa tätä, koska pyyntöjen jakaminen tapahtuu taustalla mo­ni­mut­kais­ten al­go­rit­mien avulla.

Kuor­mi­tuk­sen ta­sa­pai­not­ta­mi­nen voi olla mer­ki­tyk­sel­lis­tä myös muissa yh­teyk­sis­sä kuin verk­ko­pal­ve­li­mis­sa, esi­mer­kik­si tie­to­ko­neis­sa, joissa on useita pro­ses­so­rei­ta. Täl­lai­sis­sa ta­pauk­sis­sa kuor­mi­tuk­sen ta­sa­pai­not­ta­ja varmistaa, että kuormitus jakautuu ta­sai­ses­ti eri pro­ses­so­rei­den kesken, jolloin saadaan lisää las­ken­ta­te­hoa. Kuor­mi­tuk­sen ta­sa­pai­not­ta­jil­le on kysyntää myös käy­tet­täes­sä Ku­ber­ne­te­sin kaltaisia kont­tioh­jel­mis­to­ja. Tällöin ne var­mis­ta­vat, että työ­kuor­mat ja­kau­tu­vat te­hok­kaas­ti eri podien kesken.

Miten kuor­mi­tuk­sen ta­sa­pai­no­tus toimii?

Verk­ko­pal­ve­li­mel­le lähetetyt pyynnöt, esi­mer­kik­si sivun kat­se­lu­ker­rat, kä­si­tel­lään aluksi kuor­mi­tuk­sen ta­saus­lait­tees­sa. Se huolehtii kuor­mi­tuk­sen ja­ka­mi­ses­ta oh­jaa­mal­la yh­teys­yri­tyk­set eri pal­ve­li­mil­le. Kuor­mi­tuk­sen ta­saus­lai­te voidaan toteuttaa lait­teis­to­na tai oh­jel­mis­to­na, mutta toi­min­ta­pe­ri­aa­te on sama: pyyntö saapuu kuor­mi­tuk­sen ta­saus­lait­tee­seen, ja käy­te­tys­tä me­ne­tel­mäs­tä riippuen laite tai oh­jel­mis­to välittää tiedot asian­omai­sel­le pal­ve­li­mel­le.

Teknisenä perustana toimii DNS-menettely: käyttäjät pääsevät verk­ko­si­vus­tol­le ai­noas­taan URL-osoitteen kautta. Tämä muun­ne­taan DNS:n avulla IP-osoit­teek­si, joka puo­les­taan ohjaa lii­ken­teen kuor­man­ta­saa­jaan. Ihan­ne­ta­pauk­ses­sa käyttäjät eivät edes huomaa tätä prosessia.

Kuva: Diagram of how load balancing works
A load balancer di­stri­bu­tes the load of client accesses over the internet or web to various servers.

Mitkä ovat ta­sa­pai­noi­sen kuor­mi­tuk­sen jakamisen edut?

Oikein käyt­töö­no­te­tun kuor­mi­tuk­sen ta­sa­pai­not­ta­jan kolme tärkeintä etua ovat seuraavat:

  • Op­ti­moi­dut la­tausa­jat: Lii­ken­teen jakaminen useille pal­ve­li­mil­le voi lyhentää la­tausai­ko­ja, vaikka pyyntöjä olisi paljon sa­ma­nai­kai­ses­ti.
  • Parempi vi­ka­sie­toi­suus: Kuor­mi­tuk­sen ta­sa­pai­not­ta­ja parantaa vi­ka­sie­toi­suut­ta, koska hitaan pal­ve­li­men liikenne ohjataan au­to­maat­ti­ses­ti klusterin muihin pal­ve­li­miin. Jos palvelin ei ole käy­tet­tä­vis­sä, isännöity verk­ko­si­vus­to pysyy käy­tet­tä­vis­sä.
  • Yk­sin­ker­tais­tet­tu jär­jes­tel­män ylläpito: Kuor­mi­tuk­sen ta­sa­pai­not­ta­mi­nen helpottaa huo­mat­ta­vas­ti pal­ve­lin­jär­jes­tel­män ylläpitoa. Kon­fi­gu­raa­tiot ja päi­vi­tyk­set voidaan suorittaa pal­ve­li­mien ollessa käynnissä ilman huo­mat­ta­vaa suo­ri­tus­ky­vyn heik­ke­ne­mis­tä. Kuor­mi­tuk­sen ta­sa­pai­not­ta­ja tunnistaa yl­lä­pi­to­ti­lat ja ohjaa pyynnöt niiden mu­kai­ses­ti.

Mitkä ovat eri kuor­mi­tuk­sen ta­sa­pai­not­ta­mi­sen tyypit?

Saapuvien pyyntöjen ja­kau­tu­mi­nen riippuu valitusta al­go­rit­mis­ta. Yleisiä kuor­mi­tuk­sen ta­sa­pai­not­ta­mi­sal­go­rit­me­ja ovat: Round Robin, pai­no­tet­tu Round Robin, vähiten yhteyksiä ja pai­no­tet­tu vähiten yhteyksiä.

Round Robin

Round Robin -menetelmä tar­koit­taa me­net­te­ly­ta­paa, jossa kuor­mi­tuk­sen ta­sa­pai­not­ta­ja kä­sit­te­lee saapuvat pal­ve­lin­pyyn­nöt jonossa ja jakaa ne useiden pal­ve­li­mien kesken. Jokainen uusi pyyntö ohjataan jär­jes­tyk­ses­sä seu­raa­val­le pal­ve­li­mel­le. Tämän ansiosta käyt­tö­pyyn­nöt voidaan jakaa ta­sai­ses­ti kuor­mi­tuk­sen ta­sa­pai­not­ta­misklus­te­rin kesken. Riip­pu­mat­ta pyynnön kii­reel­li­syy­des­tä tai pal­ve­li­men kuor­mi­tuk­sen va­ka­vuu­des­ta, Round Robin kohtelee kaikkia pro­ses­se­ja samalla tavalla. Round-robin-pe­ri­aat­teel­la toimivat kuor­mi­tuk­sen ta­sa­pai­not­ta­jat sopivat erityisen hyvin ym­pä­ris­töi­hin, joissa kaikilla ins­tans­seil­la on käy­tet­tä­vis­sään suun­nil­leen samat resurssit.

Pai­no­tet­tu Round Robin

Klassisen round-robin-al­go­rit­min heik­kou­det he­te­ro­gee­ni­sis­sa pal­ve­linklus­te­reis­sa voidaan kom­pen­soi­da pai­no­te­tul­la round-robin-jakelulla. Saapuvat pyynnöt jaetaan kunkin pal­ve­li­men staat­ti­sen pai­no­tuk­sen pe­rus­teel­la. Jär­jes­tel­män­val­vo­ja mää­rit­te­lee tämän pai­no­tuk­sen etukäteen.

Esi­mer­kik­si te­hok­kaim­mal­le pal­ve­li­mel­le voidaan määrittää arvo ”100”, kun taas vähemmän te­hok­kail­le pal­ve­li­mil­le annetaan arvo ”50”. Täl­lai­ses­sa ko­koon­pa­nos­sa pai­no­tuk­sel­la ”100” va­rus­tet­tu palvelin saisi kuor­mi­tuk­sen ta­sa­pai­not­ta­jal­ta kaksi pyyntöä kierrosta kohden, kun taas pai­no­tuk­sel­la ”50” va­rus­tet­tu palvelin saisi vain yhden pyynnön. Pai­no­tet­tua Round Robin -me­ne­tel­mää tulisi käyttää kuor­mi­tuk­sen ta­sa­pai­not­ta­mi­ses­sa en­si­si­jai­ses­ti silloin, kun klusterin pal­ve­li­mil­la on käy­tet­tä­vis­sä erilaiset resurssit.

Vähiten yhteyksiä

Kumpikaan round-robin-algoritmi ei ota huomioon kuor­mi­tuk­sen ta­sa­pai­not­ta­jan suo­rit­taes­sa pal­ve­lin­pyyn­tö­jen sar­jal­lis­ta jakamista sitä, kuinka monta yhteyttä alais­pal­ve­li­mien on yl­lä­pi­det­tä­vä tietyn ajan­jak­son aikana. Tämä voi johtaa siihen, että useita yhteyksiä kertyy yhdelle klusterin pal­ve­li­mel­le. Tämä puo­les­taan aiheuttaa pal­ve­li­men yli­kuor­mit­tu­mi­sen, vaikka se kä­sit­te­li­si vähemmän yhteyksiä kuin muut. Least-con­nec­tions-algoritmi suojaa tältä. Se jakaa pyynnöt kunkin pal­ve­li­men olemassa olevien yh­teyk­sienpe­rus­teel­la – palvelin, jolla on vähiten ak­tii­vi­sia yhteyksiä, saa seuraavan pyynnön kuor­man­ta­saa­jal­ta. Tätä kuor­man­ta­saus­ta­paa suo­si­tel­laan ho­mo­gee­ni­sil­le pal­ve­linklus­te­reil­le, joissa kaikilla tie­to­ko­neil­la on käy­tet­tä­vis­sä ver­tai­lu­kel­poi­set resurssit.

Pai­noar­voi­nen vähiten yhteyksiä -menetelmä

Jos pal­ve­linklus­te­ris­sa on pal­ve­li­mia, joiden ka­pa­si­tee­tit eroavat toi­sis­taan, tulisi vähiten-yhteyksiä-al­go­rit­min sijaan käyttää kuor­mi­tuk­sen ta­sa­pai­not­ta­mis­ta, joka perustuu olemassa olevien yh­teyk­sien pai­no­tet­tuun ja­kau­tu­mi­seen. Tässä otetaan huomioon sekä pal­ve­li­men ak­tii­vis­ten yh­teyk­sien määrä että jär­jes­tel­män­val­vo­jan mää­rit­tä­mä painotus. Tämä varmistaa ta­sa­pai­noi­sen kuor­mi­tuk­sen ja­kau­tu­mi­sen pal­ve­linklus­te­rin sisällä. Kuor­mi­tuk­sen ta­sa­pai­not­ta­ja ohjaa uudet pyynnöt au­to­maat­ti­ses­ti niille pal­ve­li­mil­le, joiden ak­tii­vis­ten yh­teyk­sien suhde pal­ve­li­men pai­no­tuk­seen viittaa pie­nim­pään nykyiseen kuor­mi­tuk­seen.

Mitä ongelmia kuor­mi­tuk­sen ta­sa­pai­not­ta­mi­ses­sa voi ilmetä?

Eri­tyi­ses­ti verk­ko­kau­pan alalla kuor­mi­tuk­sen ta­sa­pai­not­ta­mi­nen aiheuttaa usein haasteita. Tässä on esimerkki: Verk­ko­si­vus­ton kävijät lisäävät os­tos­ko­riin tuotteita, jotka he haluavat ostaa. Nämä tuotteet säilyvät tal­len­net­tui­na koko istunnon ajan riip­pu­mat­ta siitä, mille sivulle käyttäjät siirtyvät verk­ko­kau­pas­sa. Ta­val­li­nen kuor­mi­tuk­sen ta­sa­pai­not­ta­ja jakaisi pyynnöt eri pal­ve­li­mil­le. Tämä tar­koit­tai­si, että os­tos­ko­rin sisältö me­ne­tet­täi­siin.

Tämän ongelman rat­kai­se­mi­sek­si on olemassa kaksi mah­dol­lis­ta lä­hes­ty­mis­ta­paa. En­sin­nä­kin kuor­mi­tuk­sen ta­sa­pai­not­ta­ja voi reagoida käyt­tä­jien IP-osoit­tei­siin. Tällöin esi­mer­kik­si samasta IP-osoit­tees­ta tulevat pyynnöt ohjataan aina samalle pal­ve­li­mel­le. Toinen menetelmä olisi lukea is­tun­to­tun­nus itse pyynnöstä sen mää­rit­tä­mi­sek­si, mille pal­ve­li­mel­le pyyntö on lä­he­tet­tä­vä.

Miksi kuor­mi­tuk­sen ta­sa­pai­not­ta­jat ovat niin tärkeitä?

Jos ansaitset rahasi in­ter­ne­tin kautta, yri­tyk­sel­lä­si ei ole varaa pal­ve­li­men kaa­tu­mi­seen. Ja jos käytät vain yhtä pal­ve­lin­ta ja se kaatuu yli­kuor­mi­tuk­sen vuoksi, po­ten­ti­aa­li­set asiakkaat eivät enää pääse verk­ko­si­vus­tol­le­si. Tämä aiheuttaa useita ongelmia: En­sin­nä­kin et voi tuottaa tuloja yli­kuor­mi­tuk­sen aikana. Pal­ve­lui­ta ei voi varata eikä ostoksia tehdä. Lisäksi (po­ten­ti­aa­lis­ten) asiak­kai­den luottamus heikkenee. Ti­lauspro­ses­sin aikana pal­ve­li­men yli­kuor­mi­tus­ta ko­ke­neil­le käyt­tä­jil­le tilanne on kak­sin­ker­tai­ses­ti huono. Tilanne aiheuttaa usein suurta epä­var­muut­ta, eivätkä asian­omai­set tiedä, onko tilaus todella saapunut ja kirjattu jär­jes­tel­mään.

Vaikka et tar­joai­si­kaan pal­ve­lui­ta suoraan in­ter­ne­tin kautta, verk­ko­si­vus­to­si tulisi olla käy­tet­tä­vis­sä milloin tahansa. Verk­ko­si­vus­to on yksi tär­keim­mis­tä tie­don­han­kin­ta­ka­na­vis­ta. Jos po­ten­ti­aa­li­set asiakkaat etsivät verkosta tietoja yri­tyk­ses­tä­si eivätkä pääse si­vus­tol­le­si, he kääntävät to­den­nä­köi­ses­ti katseensa kil­pai­li­joi­hi­si. Voit minimoida tällaiset riskit kuor­mi­tuk­sen ta­sa­pai­not­ta­jan avulla.

Kuinka ottaa kuor­mi­tuk­sen ta­sa­pai­no­tus käyttöön yri­tyk­ses­sä­si

Kuor­mi­tuk­sen ta­sa­pai­not­ta­mi­nen voidaan toteuttaa vir­tu­aa­li­pal­ve­li­mel­la sekä lait­teis­to- että oh­jel­mis­to­rat­kai­suil­la. Lukuisat pal­ve­lun­tar­joa­jat tarjoavat am­mat­ti­ta­son ko­ko­nais­rat­kai­su­ja joko Infra­struc­tu­re-as-a-Service (IaaS) -palveluna tai oman IT-infra­struk­tuu­rin verk­ko­kom­po­nent­ti­na.

Koska kau­pal­lis­ten kuor­mi­tuk­sen ta­saus­lait­tei­den hankinta aiheuttaa yleensä suuria kus­tan­nuk­sia, pienemmät yritykset tur­vau­tu­vat usein avoimen läh­de­koo­din rat­kai­sui­hin, kuten NGINX:ään. Se tarjoaa kus­tan­nus­te­hok­kaan tavan varmistaa yrityksen verk­ko­si­vus­ton tai muiden verk­kopro­jek­tien korkea käy­tet­tä­vyys tehokkaan kuor­mi­tuk­sen jakamisen avulla pal­ve­lin­ver­kos­tos­sa. Verk­ko­pal­ve­lua­lal­la kuor­mi­tuk­sen tasaus tarjotaan usein myös li­sä­omi­nai­suu­te­na pil­vi­pal­ve­li­mil­le.

Siirry pää­va­lik­koon