Virtuaalisointi on teknologia, joka mahdollistaa useiden virtuaalikoneiden (VM) ajamisen samalla fyysisellä laitteistolla. Tämän teknologian avulla voidaan jakaa laitteistoresurssit useiden erillisten virtuaalisten ympäristöjen kesken, mikä parantaa tehokkuutta ja joustavuutta. Kuitenkin, jotta virtuaalisointi voi toimia oikein, tietyt perusperiaatteet, kuten muistinhallinta, verkon virtuaalisointi ja resurssien hallinta, täytyy ottaa huomioon. Nämä perusperiaatteet ovat oleellisia ymmärtääksemme virtuaalikoneiden ja niiden toiminnan optimointia.
Virtuaalikoneiden muistinhallinta perustuu osoitteiden kääntämiseen virtuaalisista osoitteista fyysisiin osoitteisiin. Vaikka vieraiden virtuaalikoneiden toiminnot pysyvät muuttumattomina, muistinhallinnan tehokkuus kärsii, sillä osoitteiden kääntäminen vaatii ylimääräistä käsittelyä, ennen kuin saavutetaan fyysinen muistiosoite. Tämä tarkoittaa, että virtuaalikoneiden suorituskyky heikkenee, koska niiden täytyy käydä läpi kaksinkertainen muistiosoitteiden käännös: ensimmäinen tapahtuu virtuaalikoneen muistinhallinnan (VMM) ja toinen tapahtuu fyysisen laitteiston tason osoitteiden käännöksen avulla. Tämän ongelman ratkaisemiseksi otettiin käyttöön varjopage-taulut, jotka parantavat muistinhallinnan tehokkuutta. Lisäksi laitteistotason virtuaalisointi on auttanut edelleen parantamaan osoitteiden käännöksien suorituskykyä, mutta tässä yhteydessä ei käsitellä syvällisesti kaikkia näitä teknologioita.
Verkko-virtuaalisointi puolestaan tarjoaa virtuaalisia verkkolaitteita, jotka on toteutettu ohjelmistoissa, joiden avulla virtuaalisointiympäristöt voivat kommunikoida muiden verkko- ja laitteistoverkkojen kanssa. Verkko-virtuaalisointi on suunniteltu luomaan virtuaalisia yhteyksiä, jotka ovat riippumattomia fyysisistä yhteyksistä. Tämä tarkoittaa, että samassa paikallisessa lähiverkossa (LAN) eri virtuaaliset laitteet voivat muodostaa verkko-yhteyksiä toisiinsa ilman, että fyysinen laitteisto määrittelee, mihin ne voivat liittää. Jos virtuaaliset laitteet eivät ole samassa verkossa, tarvitaan verkko-protokollia kuten VLAN (Virtual Local Area Network) tai VPN (Virtual Private Network), jotta ne voivat muodostaa yhteyksiä toisiinsa. VLAN on esimerkki siitä, miten verkon virtuaalisointi voi jakaa verkon loogisiin työryhmiin, jolloin kukin looginen ryhmä vastaa omaa virtuaaliverkkoa. Tämä rakenne mahdollistaa sen, että eri virtuaaliset verkot voivat olla erillään ja eivät voi kommunikoida ilman asianmukaista reitityslaitteen tukea.
Tärkeä osa virtuaalisointia ovat myös CGroups, jotka tarjoavat tavan hallita ja jakaa järjestelmän resursseja eri tehtävien ja niiden osatehtävien välillä. Linux-kernelin tarjoama CGroups-mekanismi mahdollistaa sen, että voidaan rajoittaa, hallita ja seurata resurssien käyttöä. Tämä on erityisen tärkeää konttiteknologioissa kuten Dockerissa, joissa resurssien jakaminen on avainasemassa tehokkuuden kannalta. CGroupsin avulla voidaan asettaa rajoja prosessien käyttöön ottamille resursseille, kuten CPU:lle, muistille ja I/O-toiminnoille. Lisäksi voidaan hallita prosessien prioriteetteja ja suorittaa operaatioita kuten prosessien keskeyttäminen tai jatkaminen. CGroupsin avulla voidaan myös kerätä tilastotietoja resurssien käytöstä, mikä on tärkeää esimerkiksi laskutuksessa ja virheiden jäljittämisessä.
Kun tarkastellaan virtuaalisointiratkaisuja, yksi merkittävimmistä on OpenStack. OpenStack on avoimen lähdekoodin pilvialusta, joka hallitsee virtuaalikoneita API-rajapintojen ja ajureiden kautta. OpenStack ei itse tarjoa virtuaalisointitoimintoja, vaan sen tehtävänä on hallita virtuaalikoneiden hallintaa VMM:ien (Virtual Machine Manager) avulla. Alustan suunnittelun taustalla oli tarve luoda hajautetuille sovelluksille soveltuva alusta, jossa sovellukset voivat skaalautua ja jakautua useille fyysisille tai virtuaalisille laitteille. OpenStackin tarjoama hallintaratkaisu on skaalautuva, yksinkertainen toteuttaa ja monipuolinen.
Virtuaalisointi ja sen teknologiat ovat mahdollistaneet tehokkaamman resurssien käytön ja erilaisten ympäristöjen eristämisen toistaan häiritsemättä. Virtuaalisointiratkaisujen, kuten OpenStackin, avulla voidaan hallita tätä prosessia laajemmin ja tehokkaammin. Kuitenkin, jotta virtuaalisointi voidaan toteuttaa tehokkaasti, on tärkeää ymmärtää, kuinka resurssit jakautuvat ja miten järjestelmä reagoi erilaisten virtuaalisointirakenteiden tuomiin kuormituksiin. Tämä ymmärrys on keskeinen, jotta virtuaalisten ympäristöjen käyttöönotto ja hallinta voidaan tehdä mahdollisimman optimaalisesti ja tehokkaasti.
Miten pilvipalvelut mullistavat tiedonhallinnan ja verkon kehityksen
Vuoden 2020 joulukuussa Kiinan kansainvälinen ulosmenoliittymäkapasiteetti oli jo 11,5 miljoonaa Mbit/s, mikä ilmensi verkon kehityksen nopeaa etenemistä. 2000-luvun alussa alkoi mobiili-Internetin nousu, ja 3G- ja 4G-verkkojen kehittyminen paransi mobiilin internetin nopeuksia huomattavasti. Jos 3G ja 4G yhdistivät ihmiset toisiinsa, 5G mahdollistaa kaikkien asioiden Internetin toteutumisen, erityisesti tarjoten vankan perustan virtuaalitodellisuuden, autonomisten ajoneuvojen ja etälääketieteen kehitykselle. Kiinan Internet-käyttäjien määrä oli vuoden 2020 lopussa jo 989 miljoonaa, ja mobiilikäyttäjien osuus oli peräti 99,3 %. Mobiilimaksaminen oli vakiintunut osaksi jokapäiväistä elämää.
Pilvipalveluiden ytimessä on verkon kautta tarjottavat sovellukset, joissa verkon käyttökapasiteetti vaikuttaa suoraan yritysten pilvipalvelujen laatuun. Pilvipalvelut ovat helppokäyttöisiä ja joustavia, mutta ne kuluttavat huomattavasti verkkokaistaa, mikä puolestaan johtaa merkittävään internetliikenteen kasvuun. Pilvipalvelut ovat globaaleja resursseja, joten niitä hyödyntävät käyttäjät ovat levittäytyneet laajoille alueverkoille.
Verkkojen kehittyminen on ollut ratkaisevaa tietotekniikan historiaa tarkasteltaessa, ja siihen on liittynyt kaksi keskeistä voimaa: laitteistojen ja verkkojen voima. Laitteistojen aikakausi synnytti yrityksiä kuten IBM, Microsoft ja Intel, kun taas verkkojen aikakausi loi Googlelle, Yahoo:lle ja Amazonille mahdollisuudet nousta suuriksi toimijoiksi. Kolmas aalto, mobiili-Internetin vallankumous, aloitti suurten datamäärien aikakauden. Samalla Googlen palvelinklusterit, jotka perustuivat Google File Systemiin (GFS), antoivat Googlen hyödyntää huomattavaa laskentatehoa. Tämä kysymys siitä, miten hyödyntää tehokkaasti valtavia palvelinresursseja ja tarjota laskentatehoa ja palveluja laajalle asiakaskunnalle, johti pilvipalveluiden syntymiseen.
Pilvipalvelut ratkaisevat ongelman, jossa tietokoneiden laskentateho on riippuvainen laitteistoresursseista. Kun laskentatarpeet ylittävät kapasiteetin, laitteistoresursseja on lisättävä jatkuvasti. Sen sijaan, että laitteistoa hyödynnettäisiin vain ajoittain, pilvipalvelu mahdollistaa resurssien keskittämisen ja jakamisen, jolloin kapasiteettia voidaan skaalata tarpeen mukaan. Tämä estää resurssien alikäytön ja mahdollistaa tehokkaamman palvelujen tarjoamisen. Pilvipalvelut tarjoavat siis joustavan ja tehokkaan ratkaisun laskentatehon tarpeisiin.
On tärkeää huomata, että pilvipalvelut eivät ole vain teknologinen innovaation askel, vaan myös liiketoiminnallinen mullistus. Erityisesti suurilla yrityksillä, kuten Googlen kaltaisilla toimijoilla, oli etulyöntiasema datan käsittelyn ja palveluiden tarjoamisen suhteen. Pilvipalvelut edustavat uudenlaista palvelumallia, jossa laskentateho ja tallennuskapasiteetti ovat helposti saatavilla internetin kautta, ilman että käyttäjän tarvitsee omistaa fyysisiä resursseja. Tämä vähentää kustannuksia ja parantaa joustavuutta.
Mobiili-internetin ja pilvipalveluiden kehitys tuo tullessaan entistä vahvempia ja monimutkaisempia verkkoarkkitehtuureja, jotka tukevat suurten tietomäärien käsittelyä. Samalla se mahdollistaa uusien teknologioiden, kuten tekoälyn ja koneoppimisen, entistä laajemman käyttöönoton. Näin ollen pilvipalvelut eivät ole vain tiedon tallennusta ja käsittelyä varten, vaan ne toimivat myös innovaation ja uusien liiketoimintamallien mahdollistajana.
Verkkojen kehitys ei ole kuitenkaan pelkästään tekninen kysymys. Pilvipalvelut ovat osaltaan luoneet uudenlaisen digitaalisuuden aikakauden, jossa tiedon jakaminen ja kommunikointi ovat keskeisessä roolissa. Esimerkiksi sosiaalisen median alustojen syntyminen Web 2.0 -aikakauden myötä mullisti tapamme käyttää internetiä ja osallistua sen sisältöön. Verkkoyhteisöjen, kuten Facebookin ja YouTuben, kasvu on ollut huimaa ja ne ovat muodostaneet uusien liiketoimintojen ja palvelujen pohjan.
Pilvipalvelujen käyttöönotto on siis ollut olennainen osa digitaalisten ekosysteemien kehittymistä. Niiden taustalla oleva teknologia on mahdollistanut hajautetut palvelut ja nopeamman tiedon käsittelyn. Tällöin yritykset voivat skaalata palvelujaan helposti ja reagoida markkinoiden muutoksiin tehokkaasti. Tämä tuo mukanaan myös uusia haasteita, kuten tiedon turvallisuuden ja yksityisyyden kysymykset, jotka on otettava huomioon pilvipalvelujen käyttöönotossa ja kehittämisessä.
Pilvipalveluiden ja mobiiliteknologian yhdistäminen onkin antanut ihmisille mahdollisuuden hyödyntää internetin resursseja lähes rajattomasti, sillä näiden palvelujen tarjoamat mahdollisuudet ulottuvat niin arkipäivän toimiin kuin vaativiin liiketoimintaratkaisuihinkin. Tässä kontekstissa pilvipalvelut eivät enää ole vain työkalujärjestelmiä, vaan ne ovat muuttaneet täysin tavallisten ihmisten ja yritysten tapaa kommunikoida ja käsitellä tietoa.
Mikä on OpenStackin osien rooli ja toiminta?
OpenStackin toiminnallisuus perustuu monenlaisten komponenttien yhteistyöhön, jotka yhdessä mahdollistavat pilvialustojen luotettavan ja skaalautuvan toiminnan. Järjestelmän perusrakenne koostuu useista palveluista, jotka vastaavat erikseen omista tehtävistään ja tuovat esiin erityisiä piirteitä, jotka voivat vaihdella käyttötarkoituksen ja laitteiston mukaan.
Yksi keskeinen osa OpenStackia on Swift, joka tarjoaa objekti- ja säilytyspalvelut. Swiftin avulla käyttäjät voivat määritellä erilaisia tallennuspolitiikkoja, kuten tavallisia kolme- tai kaksikopion kokoonpanoja, mutta myös erikoistuneita tallennusratkaisuja, joissa voidaan hyödyntää SSD-levyjä. Tässä ympäristössä käyttäjät voivat valita tallennuspolitiikan containerin luontivaiheessa, jolloin kyseinen kokoonpano pysyy voimassa koko säilytyksen ajan.
Objektipalvelimien rooli on tallentaa ja hakea tiedot yksinkertaisella tavalla. Ne käyttävät binäärimuotoista tallennusta tiedostojärjestelmässä, ja metatiedot säilytetään tiedoston laajennetuissa atributeissa (xattr). Tämä kuitenkin edellyttää, että tiedostojärjestelmä tukee xattr-muuttujien käsittelyä, mikä ei ole kaikissa tiedostojärjestelmissä oletuksena mahdollista. Lisäksi objekteille määritellään yksilöllinen tallennuspolku, joka perustuu objektin nimen ja aikaleiman hashiin.
Kun container luodaan, sen palvelin vastaa metatietojen ja tilastojen hallinnasta. Tämä ei kuitenkaan tarkoita, että container-palvelimella olisi tietoa objektien tarkasta sijainnista, vaan se hallitsee vain objektiluettelon ja niiden käyttöasteen. Container-palvelin käyttää SQLite-tietokantaa containerin tiedon säilyttämiseen ja seuraa sen kokoamista ja käyttöä.
Tilikäyttöjen hallintaan on omat palvelimensa, Account Serverit, jotka pitävät kirjaa tilitiedoista ja niiden sisältämistä konteista. Vaikka tämä on samankaltainen palvelu kuin container-palvelin, tili- ja container-palvelimet eroavat siinä, että tilipalvelin ei käsittele tietoja suoraan, vaan keskittyy containerien luetteloon.
Korkean kuormituksen tai järjestelmävikojen aikana päivityksiä ei aina voida tehdä reaaliaikaisesti. Tässä tilanteessa Updater-palvelin hoitaa tehtävänsä palauttamalla keskeytyneitä päivityksiä palvelun palatessa normaaliksi. Tämä varmistaa, ettei käyttökatkoksia synny päivitysprosessien vuoksi. Mikäli esimerkiksi container-palvelin ei heti voi päivittää objektin tilaa, päivitys lisätään jonoon, josta se käsitellään myöhemmin.
Replikaatiopalvelu, Replicator, huolehtii tietojen varmistamisesta ja synkronoinnista toisen päivityspisteen kanssa. Tämä on erityisen tärkeää silloin, kun yhteydet katkeavat tai levyillä ilmenee vikoja. Replicator takaa, että kaikki tiedot pysyvät synkronoituna ja että poistetut tiedostot merkitään ja poistetaan järjestelmästä asianmukaisesti.
Auditorin tehtävä on valvoa järjestelmän eheyttä. Se varmistaa, että tiedostot, containerit ja tilit ovat virheettömiä. Jos tiedostojen rakenteessa havaitaan ongelmia, Auditor eristää ne ja luo korvaavat tiedostot. Samoin, jos objekteja puuttuu container-palvelimelta, tämä kirjataan ja virhe jäljitettävissä.
OpenStackin identiteetinhallintamoduuli, Keystone, tarjoaa yksittäisten komponenttien yhteisen autentikointijärjestelmän. Keystone vastaa käyttäjien tunnistautumisesta ja käyttöoikeuksien hallinnasta. Käyttäjälle annetaan yksilöllinen pääsytunnus (token), jota käytetään myöhemmissä autentikointipyynnöissä. Tokenin tarkistamisessa on kehittyneitä versioita, kuten V2 ja V3, joista V3 hyödyntää julkisen ja yksityisen avaimen infrastruktuuria (PKI), mikä parantaa järjestelmän turvallisuutta ja skaalautuvuutta. V3-versio on suunniteltu vähentämään palvelimelle kohdistuvaa kuormitusta ja parantamaan järjestelmän reagointikykyä.
Tässä kokonaisuudessa on tärkeää ymmärtää, että OpenStackin tehokkuus ei perustu yksittäisiin osiin, vaan näiden komponenttien saumattomaan yhteispeliin. Järjestelmän toimintakyky varmistetaan niin, että vaikka yksittäiset palvelut voivat kohdata ongelmia, toiset osat voivat ottaa vastuuta ja varmistaa datan jatkuvan saatavuuden ja eheyden. Tällöin OpenStack ei pelkästään mahdollista suuren mittakaavan pilviratkaisuja, vaan tekee niistä myös luotettavia ja skaalautuvia, vastaten eri käyttötapauksien tarpeisiin.
Keystone ja sen rooli OpenStackin turvallisuudessa: Todentaminen ja pääsynhallinta
Keystone on keskeinen osa OpenStackin infrastruktuuria, joka vastaa käyttäjien todentamisesta ja pääsynhallinnasta. Sen avulla varmistetaan, että vain valtuutetut käyttäjät voivat käyttää pilvipalveluja ja että kaikki toiminnot ovat asianmukaisesti valvottuja. Keystone toimii autentikointipalveluna, joka luo ja hallitsee todennustokenin, joka puolestaan antaa käyttäjälle pääsyn haluttuihin resursseihin OpenStackin ympäristössä.
Kun käyttäjä tekee pyynnön palveluun, Keystone tarkistaa pyynnön aitouden ja varmistaa, että käyttäjän allekirjoitus ei ole väärennetty ja että se ei ole vanhentunut. Tämä tapahtuu tarkistamalla allekirjoitus ja sen mukana tuleva aikaraja, joka määrittää, kuinka kauan pyyntö on voimassa. Jos allekirjoitus on väärä tai token on vanhentunut, pyyntö hylätään. Keystone tarkistaa myös toisen tokenin osan, joka on validoitu varmentajan (CA) peruutuslistan avulla. Jos käyttäjän token poistetaan Keystone-palvelussa tai järjestelmänvalvoja suorittaa tämän toimenpiteen, token lisätään automaattisesti peruutuslistalle, jolloin kaikki sillä kulkevat pyynnöt hylätään.
Keystone käyttää kahta eri versiota, V2 ja V3, jotka molemmat hyödyntävät samankaltaista käsittelylogiikkaa. V3-versio tuo kuitenkin lisäominaisuuksia, kuten parempaa erottelua ja hallintaa, erityisesti käyttäjä- ja projektitason oikeuksien myöntämisessä ja hallitsemisessa.
Keystone koostuu useista peruskomponenteista, joiden avulla se voi tarjota tehokasta ja turvallista pääsynhallintaa. Näitä ovat muun muassa:
-
Service (Palvelut) – Keystone tarjoaa useita sisäisiä palveluja, jotka yhdistävät monia eri toimintoja, kuten käyttäjän ja projektin todennuksen, tokenin luomisen ja palauttamisen.
-
Identity (Identiteetti) – Vastaa käyttäjien ja ryhmien todentamisesta, ja sen avulla määritellään käyttäjien oikeudet ja pääsyresurssit.
-
User (Käyttäjä) – Käyttäjä on yksittäinen API-käyttäjä, joka on liitetty tiettyyn domaaniin.
-
Group (Ryhmä) – Ryhmä voi sisältää yhden tai useamman käyttäjän ja se on myös sidottu tiettyyn domaaniin.
-
Project (Projekti) – Projekti on OpenStackin perusyksikkö, jonka kaikki resurssit omistaa tietty projekti. Projekti on sidottu domainiin.
-
Role (Rooli) – Rooli määrittelee, minkälaisiin toimiin käyttäjä voi ryhtyä. Rooli voidaan liittää joko käyttäjälle tai ryhmälle.
-
Token (Tokeni) – Token on käyttäjän todentamiseksi luotu ja hallittu elementti, joka on voimassa vain rajatun ajan.
Keystone varmistaa, että kaikki pyynnöt ovat asianmukaisesti todennettuja ja että niihin liittyvät tiedot ovat oikeellisia. Esimerkiksi, kun käyttäjä, kuten Alice, haluaa luoda virtuaalikoneen (VM), hän aloittaa prosessin todentamalla itsensä Keystone-palveluun. Jos autentikointi on onnistunut, Keystone luo tilapäisen tokenin, joka sisältää aikarajoituksia ja muita tärkeitä tietoja, ja palauttaa sen käyttäjälle. Alice voi sen jälkeen tehdä pyynnön tarkistaakseen, mitkä projektit hän omistaa ja mihin hänellä on pääsy.
Kun token on validoitu ja hyväksytty, Alice voi käyttää projektia ja sen palveluja. Keystone varmistaa, että vain oikeat käyttäjät ja valtuutetut henkilöt saavat pääsyn resursseihin. Tämän jälkeen tarvittavat tiedot, kuten projektin palvelulista ja siihen liittyvät endpointit, toimitetaan Alice:lle. Palvelut, kuten Service A, vastaanottavat tokenin ja varmistavat, että Alice voi käyttää kyseistä palvelua, kunhan hänen roolinsa ja oikeutensa ovat kunnossa.
Kun keystone on todentanut pyynnön, ja jos projekti on jo hyväksytty kyseisessä palvelussa, tokenin tiedot vahvistavat, että pyyntö on peräisin oikealta käyttäjältä. Tällöin palvelu voi suorittaa pyydetyn toiminnon, kuten virtuaalikoneen luomisen. Täsmällinen ja turvallinen pääsynhallinta, jota Keystone tarjoaa, on keskeinen osa OpenStackin kykyä tarjota luotettavia ja skaalautuvia pilvipalveluja.
Keystone ei pelkästään varmista käyttäjien oikeuksia ja todennusta, vaan myös hallinnoi laajempaa resurssien ja roolien jakamista organisaation sisällä. Tässä järjestelmässä rooleilla on tärkeä asema, sillä ne määrittävät, mitä toimintoja käyttäjä voi suorittaa OpenStackin ympäristössä. Käyttäjä voi esimerkiksi olla vain lukuoikeuden omaava henkilö, tai hän voi olla järjestelmänvalvoja, joka hallitsee koko ympäristön resursseja. Tämänkaltaiset erot roolien välillä tekevät OpenStackista erittäin joustavan ja skaalautuvan alustan monenlaisiin tarpeisiin.
Keystone tarjoaa myös valmiit välineet roolien hallintaan ja käyttöoikeuksien myöntämiseen sekä hyvän pohjan policyjen luomiselle, jotka voivat rajoittaa pääsyä tietyille resursseille tai toiminnallisuuksille. Näin käyttäjät saavat aina vain ne oikeudet ja pääsyn, jotka heille on myönnetty.
Keystone-prosessin syvällisempi ymmärtäminen on elintärkeää kaikille, jotka aikovat käyttää OpenStackia omassa ympäristössään, koska se määrittää, miten käyttäjät ja sovellukset voivat kommunikoida OpenStackin resurssien kanssa turvallisesti ja tehokkaasti.
Miten ulkomaalaisten vaikutus voi muuttaa Yhdysvaltain poliittista prosessia?
Miksi otoskoko ja sen määrittäminen ovat keskeisiä tutkimussuunnitelmissa?
Miten Mamdani-päättelymalli ennustaa suolapitoisuutta jokisuistoissa?
Miten kvanttifysiikka selittää päätöksentekomme epäjohdonmukaisuudet?

Deutsch
Francais
Nederlands
Svenska
Norsk
Dansk
Suomi
Espanol
Italiano
Portugues
Magyar
Polski
Cestina
Русский