1. YKSITTÄINEN PALVELIN

Esimerkissä luodaan yksittäinen LAMP-palvelin (Linux with Apache, MySQL and PHP) websivun ylläpitoon.Tätä varten täytyy luoda:

  • SSH-avain
  • Verkko ja aliverkko
  • Reititin, reitittimeen portti ja yhdyskäytävä
  • Turvallisuusasetukset (Security Group)
  • Palvelin (Instance)
  • Julkinen IP-osoite (Floating IP)

Nämä toiminnallisuudet voidaan luoda palvelun hallintapaneelissa.

1.1. SSH-AVAIN

Palvelun käyttö aloitetaan luomalla SSH-avain, jolla palvelimille kirjaudutaan. Avain tulee ladata talteen ja tallettaa turvallisesti. Huom! Avainta ei tallenneta Telia Pilveen, joten emme pysty palauttamaan sitä! Pääset luomaan avaimen navigoimalla valikossa Compute > Access & Security > Key Pairs.

Esimerkissä luodaan avain testkey ja ladataan se työasemalle talteen.

1.2. VERKKO

Tässä kappaleessa ohjeistetaan verkon luominen, jos et halua käyttää sinulle luotuja oletusverkkoja.

Palvelinta varten tarvitaan myös verkko, jotka pääsee luomaan valikosta Network > Networks > Create Network.

Testiverkon nimi esimerkissä on testnetwork, verkossa testsubnet jonka avaruus on 10.0.0.0/24. Käytä tässä vain sisäverkon IP-osoitteita käyttäviä verkkoja, julkiset IP-osoitteet allokoidaan muualla.

Yhdyskäytävänä voidaan käyttää esim. verkon viimeistä vapaata, eli verkkoblokin toiseksi viimeistä osoitetta. (Huomaathan, että verkon viimeistä osoitetta ei voi käyttää, sillä se on varattu verkon broadcast-osoitteeksi).

Nimipalvelimina voit käyttää nimipalvelimiamme (217.30.180.230 ja 217.30.182.230, kumpikin omalle rivilleen). Lopuksi tallenna verkon asetukset klikkaamalla Create.

1.3. REITITIN

Tässä kappaleessa ohjeistetaan reitittimen luominen, jos et halua käyttää sinulle luotuja oletusreitittimiä.

Edellisessä vaiheessa loimme palvelinta varten sisäverkon, joka ei ole vielä yhteydessä ulkomaailmaan.

Yhteyden luominen aloitetaan luomalla ensin virtuaalinen reititin. Tämä löytyy valikosta Network > Routers > Create Router.

Esimerkissä reitittimen nimeksi annetaan testrouter. Tallenna, ja klikkaa sen jälkeen reitittimen nimeä listassa. Yhteys reitittimelle lisätään klikkaamalla Add Interface ja alasvetovalikosta valitaan aiemmin luotu testsubnet. Tälle reitittimelle annetaan ip-osoitteeksi testsubnetille määritelty yhdyskäytävä eli 10.0.0.254 ja tallennetaan klikkaamalla Add interface.

Oman verkkosi topologian voit nähdä navigoimalla Network > Network Topology. Tässä vaiheessa topologiasta näkee, että käytössä on verkko testsubnet joka on liitettynä reitittimeen, jolla ei vielä ole muita yhteyksiä.

Internetyhteys reitittimelle luodaan valikossaNetwork > Routers > Set Gateway. Valitse verkolle Availability Zone (sijainti), tässä esimerkissä helsinki-1. Verkon sijainti täytyy muistaa myöhemmin palvelinta luotaessa, joten kannattaa laittaa tämä muistiin.

Tämän jälkeen topologia näyttää, että reitittimellä on yhteys kahteen verkkoon, testsubnet ja helsinki-1.

1.4. TURVALLISUUSASETUKSET (SECURITY GROUP)

Ennen palvelimen luomista tulee varmistaa että palvelimelle voidaan ottaa SSH-yhteys. Turvallisuusasetukset löytyvät valikosta Compute > Access & Security > Security Groups. Turvallisuusasetuksissa voidaan luoda erilaisia sääntöryhmiä, joilla voidaan hallita palveluun luotujen palvelimien pääsyoikeuksia. Sääntöryhmät ovat palvelussa nimellä Security Group. Oletuksena on yksi sääntöryhmä, default security group, joka sallii liikenteen kaikkien kyseisessä ryhmässä olevien palvelimien kesken. 

Esimerkissä luodaan uusi sääntöryhmä, ja nimetään se nimellä testsecuritygroup. Sääntöjä pääsee muokkaamaan klikkaamalla Manage Rules. Huomaathan, että palveluun voi luoda vain rajallisen määrän sääntöryhmiä. Mikäli raja täyttyy, uusia sääntöryhmiä ei voi luoda.

SSH-pääsyn voi sallia valitsemalla alasvetovalikosta vaihtoehdon SSH. Valitsemalla liikenteen lähteen voi valita, onko SSH-yhteys auki ulkoverkkoon, vai ainoastaan palveluun luodusta sisäverkosta.

Tässä esimerkissä SSH-pääsy avataan kaikkialta, eli lähde-IP -osoitteeksi määritellään 0.0.0.0/0 CIDR-kohtaan.

Sivustolle halutaan pääsy myös HTTPS-portista, joten seuraavaksi luodaan uusi sääntö jossa alasvetovalikosta valitaan HTTPS (443) ja lähdeosoitteeksi jälleen 0.0.0.0/0 CIDR-kohtaan. Tuloksena sääntölista näyttää tältä:

1.5. PALVELIMEN LUOMINEN

Seuraavaksi pääsemme luomaan palvelimen, valikosta Compute > Instances, klikkaamalla Launch Instance.

Ensin valitaan saatavuusalue (Availability Zone) jossa verkkomme sijaitsee, tässä tapauksessa siis helsinki-1. Palvelimelle tulee myös antaa nimi, tässä esimerkissä testserver.

Seuraavaksi valitaan palvelimen konfiguraatio, OpenStackissa nimitys Flavor. Tässä esimerkissä palvelimen konfiguraatioksi valitaan nbl-n1-tiny eli 40GB levytilaa, 1 VCPU ja 1024MB muistia.

Luotavien palvelimien määrä määritellään kohdassa Instance Count, tässä tapauksessa luodaan vain yksi palvelin. Valitaan palvelimen käynnistyslevykuva (Boot source image), käytännössä siis valitaan millä käyttöjärjestelmällä palvelin halutaan luoda. Tässä esimerkissä käyttöjärjestelmäksi valittiin CentOS7.

Seuraavaksi tarkistetaan muut palvelimen asetukset:

Access & Security -välilehdellä valitaan palvelimen luomiseen haluttu avainpari, tässä tapauksessa avainpareja on vain yksi, alussa luotu testkey. Tässä vaiheessa myös valitaan palvelimeen sovellettavat turvallisuusasetukset, eli valitaan sääntöryhmä testsecuritygroup listasta.

Verkko- välilehdellä on valmiiksi valittuna aiemmin luotu testnetwork:

Post-Creation -toimintoa voidaan käyttää sellaisten toimintojen käyttämiseen, jotka halutaan ajaa palvelimella käynnistyksen jälkeen. Esimerkkinä, tätä voi käyttää palvelimen päivittämiseen ennen varsinaista käyttöönottoa komennolla yum -y update.

Advanced Options voidaan käyttää levyn manuaaliseen partitioimiseen. Mikäli asetuksia ei tässä muuteta, levy partitioidaan automaattisesti.

Luo lopuksi palvelin klikkaamalla Launch.

1.6. JULKINEN IP-OSOITE (FLOATING IP)

Palvelimen luomisen jälkeen meillä on CentOS7 -palvelin IP-osoitteessa 10.0.0.1. Palvelimen rakentumisen ja alkutoimintojen jälkeen palvelin näkyy listassa tilassa Status Active, Power State Running.

Jotta palvelimelle saisi pääsyn ulkoverkosta, sille pitää allokoida julkinen IP-osoite. IP-osoite allokoidaan valitsemalla valikosta Associate Floating IP. IP-osoite varataan klikkaamalla Plus-merkkiä ja valitsemalla sitten alasvetovalikosta verkkoavaruus (helsinki-1).

Varattu IP-osoite pitää vielä liittää palvelimeen, valitaan alasvetovalikosta palvelimen portti jonka kautta halutaan reitittää liikenne. Tässä tapauksessa portteja on vain yksi, testserver: 10.0.0.1). Tämä ulkoinen ip-osoite ohjaa vain tähän sisäverkon porttiin (one-to-one NAT), eli sitä ei voida käyttää liikennöitäessä muihin portteihin palvelimella. Tallennuksen jälkeen tällä ip-osoitteella pääsee ulkoverkosta testserver -palvelimelle.

1.7. SSH-YHTEYS PALVELIMELLE

SSH-yhteyden palvelimelle voi luoda millä tahansa SSH-yhteysohjelmalla. Palvelimen nimenä käytetään palvelimen julkista ip-osoitetta, ja palvelimelle pääsy edellyttää alussa luotua SSH-avainta (testkey.pem). Käyttäjänimi on centosroot -kirjautuminen on oletuksena estetty (suositeltavampaa on käyttää sudo -komentoa).

$ ssh -i testkey.pem centos@77.86.179.5

HUOM! Jos käytät PuTTYa palvelimelle kirjautumiseen, muunna avaintiedosto PuTTY-formaattiin puttygen.exe -ohjelmistolla!

2. USEAMMAN PALVELIMEN KOKOONPANO

2.1. SETUP

Aiempaa esimerkkiä laajentaen voidaan tehdä useamman palvelimen kokoonpanoja. Tässä esimerkkinä käytetään web-palvelinta sekä siihen liitettyä tietokantapalvelinta, mutta samaa periaatetta noudattaen voidaan lisätä mitä tahansa palvelimia kokoonpanoon.

Kokoonpano:

  • Kaksi verkkoa
  • Kaksi aliverkkoa
  • Kaksi reititintä
  • Kaksi sääntöryhmää (security groups)
  • Kaksi palvelinta

Aloita luomalla SSH-avain. Voit myös käyttää aiemmin luotua avainta.

Luo kaksi erillistä sisäverkkoa: DMZ ja sisäinen verkko.

  • 10.0.0.0/24 (DMZ)
  • 10.1.0.0/24 (internal)

Luo reititin, jolla on portti DMZ-verkkoon, ja ulkoinen yhteys helsinki-1 -verkkoon.

Luo toinen reititin, ja sille kaksi porttia, yksi portti kumpaankin sisäverkkoon.

Luo sääntöryhmä joka sallii SSH- ja HTTP -yhteyden.

Luo toinen sääntöryhmä, joka sallii SSH- ja MySQL-yhteyden.

Luo web-palvelin ja liitä se DMZ-verkkoon.

Varaa ulkoinen IP-osoite, ja liitä se web-palvelimeen.

Luo tietokantapalvelin ja liitä se sisäiseen verkkoon.

2.2. YHTEENVETO

Kokoonpanossa on nyt web-palvelin joka toimii edustakoneena ja siihen saa otettua yhteyden SSH:lla, josta voi ottaa yhteyden edelleen tietokantapalvelimeen. Tietokantapalvelimella on pääsy ulkomaailmaan vain, jos konfiguroit sisäiselle reitittimelle reitin osoitteeseen 0.0.0.0/0 DMZ-reitittimen kautta. Aliverkot ovat erillisiä ja kumpikin suojattu omien pääsyasetustensa kautta. 

3. VIKASIETOINEN JÄRJESTELMÄ KUORMANTASAUKSELLA

Edellistä kokoonpanoa laajentamalla on mahdollista rakentaa monimutkaisiakin järjestelmiä, kuten korkean saatavuuden järjestelmiä kuormantasauksella.

Parhaiden käytäntöjen mukaan ei pitäisi milloinkaan olla riippuvainen yhdestä fyysisestä sijainnista (Tässä tapauksessa saatavuusalue, Availability Zone).

Tässä esimerkissä on käytössä

  • Kaksi saatavuusaluetta
  • Useita verkkoja
  • Useita aliverkkoja
  • Useita reitittimiä
  • Useita sääntöryhmiä
  • Useita julkisia ip-osoitteita
  • 16 palvelinta, kummassakin saatavuusalueessa 8

Aloita luomalla SSH-avain. Voit myös käyttää aiemmin luotua avainta.

Luo kumpaakin saatavuusaluetta varten oma, erillinen DMZ-verkkonsa.

  • AZ1: Helsinki-1DMZ 10.0.0.0/24
  • AZ2: Helsinki-2DMZ 10.1.0.0/24

Luo kaksi erillistä sisäverkkoa kumpaankin saatavuusalueeseen.

  • AZ1 Internal web 10.10.0.0/24
  • AZ2 Internal web 10.11.0.0/24
  • AZ1 Internal db 10.10.1.0/24
  • AZ2 Internal db 10.11.1.0/24

Luo kumpaankin saatavuusalueeseen oma reitittimensä ja liitä ne omiin DMZ-verkkoihinsa. Aseta yhdyskäytäväksi saatavuusalueen oma yhdyskäytävä (Public-Helsinki-1 ja Public-Helsinki-2)

Luo kummallekin saatavuusalueelle toinen reititin, yhdistä se saatavuusalueen omaan DMZ-verkkoon ja internal web -verkkoon. 

Luo kolmas reititin kumpaankin saatavuusalueeseen, jolla luodaan yhteys internal db – verkkoon.

Luo kaksi edusta/kirjautumispalvelinta, kummallekin saatavuusalueelle omansa. Nämä luodaan puhtaasti ylläpitotarkoituksiin. Liitä julkinen IP-osoite näihin koneisiin. Liitä palvelimiin sääntöryhmä jossa vain SSH on sallittu, niin että lähde-IP -osoite on vain ne osoitteet joista tiedät tarvitsevasi pääsyä palvelimille.

Luo kaksi web-kuormantasaajaa, kummallekin saatavuusalueelle omansa. Käytä sääntöryhmiä jotka sallivat vain portit HTTP ja/tai HTTPS osoitteesta 0.0.0.0/0 (kaikkialta), ja SSH vain edustapalvelimen sääntöryhmästä. Allokoi kummallekin palvelimelle oma ulkoinen IP-osoitteensa. 

Luo web-palvelin haluamasi ominaisuuksilla, ja liitä se internal web -verkkoon. Käytä sääntöryhmää joka salllii vain HTTP- ja SSH -pääsyn. Valmistele palvelin tuotantovalmiiksi. Kloonaa palvelin ja luo yhteensä kuusi kopiota palvelimesta, niin että kummallakin saatavuusalueella on kolme. 

Luo kaksi tietokanta-kuormantasaajaakummallekin saatavuusalueelle omansa. Käytä saman saatavuusalueen internal db -verkkoa. Sääntöryhmässä sallitaan pääsy ainoastaan web-aliverkoista, ja SSH DMZ-verkosta.

Luo tietokantapalvelin, liitä se internal db -verkkoon. Käytä sääntöryhmää joka sallii pääsyn SSH:lla DMZ-verkosta, ja tietokantaliikenteen sisäisestä web-verkosta.Luo klusterointi tietokantapalvelinten välillä haluamallasi tavalla.

Luo Object Storage -kansio, muuta se julkiseksi ja julkaise siellä kaikki sivuston staattinen sisältö. 

Kuormantasausvaihtoehtoja on erilaisia järjestelmän sisällä. Molemmat saatavuusalueet voidaan pitää aktiivisena, tai toinen aktiivisena ja toinen valmiustilassa, sisältäen ajantasaisen tietokannan. Voit myös tasata kuormaa eri saatavuusalueiden välillä.

3.1.  YHTEENVETO

Kokoonpanossa on nyt vikasietoinen ympäristö kahdennetulla kuormantasaajalla. Voit laajentaa sitä luomalla lisää palvelimia ja/tai kuormantasaajia.

Kummallakin saatavuusalueella on kaksi julkista IP-osoitetta; yksi hallintaan, ja toinen sivustoa varten.

Object Storea käyttäen voit käyttää samaa staattista sisältöä molemmista saatavuusalueista riippumatta siitä, kummalla saatavuusalueella sivusto sijaitsee. 

Voit valvoa järjestelmän toimintaa edustapalvelimilta tai kuormantasaajilta, ja halutessasi käyttää API-rajapintaa järjestelmän skaalaamiseen. 

Referenssiarkkitehtuurit

INcloud 9 tarjoaa helpon tavan esimerkiksi seuraaviin tarpeisiin

  • hajauttaa palvelut maantieteellisesti
  • suojata verkko segmentoimalla
  • automatisoida infrastruktuurin provisiointi
  • nopea ympäristön skaalaaminen

Arkkitehtuurin puolesta INcloud 9 tarjoaa asiakkaalle käytännössä vapaat kädet muokata arkkitehtuuristaan haluamansa kaltainen ja tässä dokumentissa on esitelty tyypillisesti kysyttyihin tarpeisiin ratkaisuja esimerkinomaisesti. Usein asiakkaalla onkin tarve yhdistellä eri vaihtoehtoja. Juuri tähän INcloud 9 on parhaimmillaan sen erinomaisen joustavuuden ansiosta.

Lataa PDF-dokumentti jossa käymme läpi seuraavat skenaariot

  • Web hosting
  • Web hosting kahdella saatavuusalueella
  • Web hosting kuormantasauksella
  • INcloud 9 osaksi toimistoverkkoa
  • INcloud 9 turvalliset yhteydet muihin palvelimiin Telialla