CloudStack asennus

Tänä syyslukukaudella olemme ryhmäni kansssa asentaneet CloudStack Ubuntulle. Asennuksia olivat yhteen koneseen ja kolmeen koneseen. tässä on siitä raportti.

CloudStack-ympäristön luonti

(Ubuntu 14.04 & Hypervisor KVM)

 

 

Tekijä(t)

Eelis Orvas, Aleksandr Pantsesnyi, Markus Tirronen, Jaakko Vehkamäki

 

Koulutusohjelma:  Haaga-Helia Tietojenkäsittely
Raportin nimi:   CloudStack-ympäristön luonti  

 

 

Tässä projektiraportissa kuvaillaan Apache CloudStack 4.4 ja  versioiden asennusta Single-node asennuksena, sekä Apache CloudStack 4.6 Multi-node asennuksena.

 

Asiasanat

CloudStack 4.4, Cloudstack 4.6, Ubuntu 14.04, Virtual machine Hypervisor KVM

 

 

Sisällys

1    Johdanto

2    Lähtötilanne

2.1     Asennusohjeiden tutkiminen ja materiaalin hankinta

3    Siirtokovalevy määrittelyt

3.1     Käyttöjärjestelmän asennus ja asetusten määrittely

3.2     Verkkoasetukset

3.3     Etäyhteyden asennus

3.4     Apache2

3.5     Palomuuri

4    CloudStack-asennus siirtokovalevyille

4.1     Komponentit

4.2     NTP, SELinux, Repositoryt, MySQL ja cloudstack-management

4.3     NFS ja SystemVM template

4.4     KVM asennus ja konfigurointi

4.5     Cloudstack-konfigurointi

4.6     Käyttöliittymä

4.7     Reinstall-skripti

4.8     Ongelmia

5    Palvelinasennus (single node installation)

5.1     Alkutoimet

5.2     Linuxin asennus ja konfigurointi

5.3     IP-konfiguraatiot

5.4     ClousStackin asennus

5.5     MySQL serverin asennus

5.6     NFS asennus, export mount

5.7     Käyttöliittymän testaus

5.8     Web-käyttöliittymä

 

Lähteet

 

1       Johdanto

Raporttimme käsittelee CloudStack virtualisointialustan asennusta, kahdella eri tavalla. Tarkoituksena on asentaa CloudStack-ympäristö kolmelle siirtokovalevylle, joista yksi toimii Management-nodena, yksi Primary Storagena ja yksi Secondary Storagena. Toinen asennustapa on asentaa ympäristö yhdelle Haaga-Helian tarjoamalle palvelimelle. Projekti rajataan koskettamaan nimenomaan tämän ympäristön asennusta ja raportoimaan sen eri vaiheet.


2       Lähtötilanne

Ennen projektin toteuttamisen aloittamista teimme projektisuunnitelman, jossa suunnittelimme aikataulun ja alustavat vaiheet projektin toteuttamiseen. Minimitavoitteena oli luonnollisesti saada molemmat asennustoteutukset toimiviksi ja sen jälkeen katsoa kerkeisimmekö asentaa jonkinlaista seurantaohjelmistoa virtualisointialustalle. Oppimistavoitteina on oppia CloudStack-ympäristön asentaminen sujuvasti kahdella eri tavalla ja samalla tottua yhä enemmän Linuxin käyttämiseen. Päätimme aloittaa asennuksen ensimmäiseksi kolmelle siirtokovalevylle, koska mietimme sen syövän enemmän aikaa projektista.

 

 

2.1      Asennusohjeiden tutkiminen ja materiaalin hankinta

CloudStack on avoimen lähdekoodin virtualisointialusta, joten sen asennuksesta ja toiminnasta on saatavilla reilusti tietoa internetistä. Kurssin sivuille myös lisättiin vajaa 300-sivuinen Apache CloudStack Cloud Computing e-kirja, missä käydään läpi oikeastaan kaikki mahdollinen ympäristön asennuksesta. Ympäristön asennuksessa siirtokovalevyille päätimme kuitenkin seurata lähtökohtaisesti cloudstack.apache.org :n virallisia ohjeita.

 

3       Siirtokovalevy määrittelyt

Ensimmäisenä tavoitteenamme oli asentaa CloudStack-ympäristö siirtokovalevyille. Siirtokovalevyt saimme Haaga-Helialta ja niiden koko oli 500GB/kappale. Siirtokovalevyjä käytimme luokassa 5005 olevilla labrakoneilla.

 

3.1      Käyttöjärjestelmän asennus ja asetusten määrittely

Käyttöjärjestelmäksi valitsimme Ubuntu Server 14.04:sen, koska se oli helposti saatavilla koululta. Asensimme kaikkiin kolmeen siirtokovalevyyn käyttöjärjestelmän samaan aikaan. Teimme identtisen asennuksen kaikkiin, jossa määrittelimme 16384MB kokoisen swap arean ja 473GB kokoisen file arean. Asennuksissa valitsimme kieleksi Uuden-Seelannin (NZ), koska kyseisessä maassa on myös käytössä metrinen-järjestelmä. Maaksi valitsimme  Suomen (Finland).

Management siirtokovalevyn nimeksi tuli management.jp2cloud.com.

Primary Storage siirtokovalevyn nimeksi tuli primary.jp2cloud.com

Secondary Storage siirtokovalevyn nimeksi tuli secondary.jp2cloud.com

 

3.2      Verkkoasetukset

Käytössämme meillä oli Harto Holmströmin antama koulun osoiteavaruus väliltä 172.28.175.31 – 172.28.175.39. Kaikille siirtokovalevyille asetettiin omat verkkoasetuksena tiedostoon /etc/network/interfaces.

Saimme vielä myöhemmin projektin aikana marraskuun tienoilla toisenkin osoiteavaruuden käyttöön, sillä uskoimme, ettei tuo aiemmin annettu osoiteavaruus riitä. Saimme lisäksi IP-osoitteet 172.28.175.60 – 172.28.175.69 jotka toimivat myöhemmin erittäin tärkeässä roolissa projektin onnistumisen kannalta.

 

Management.jp2cloud.com asennuksen tiedosto näytti tältä:

# The primary network interface

auto em1

iface em1 inet static

                      address 172.28.175.31

                      netmask 255.255.0.0

                      gateway 172.28.1.254

                      dns-nameservers 172.28.170.201

                      dns-nameservers 172.28.170.202

 

Primary.jp2cloud.com asennuksen tiedosto näytti tältä:

# The primary network interface

auto em1

iface em1 inet static

                      address 172.28.175.32

                      netmask 255.255.0.0

                      gateway 172.28.1.254

                      dns-nameservers 172.28.170.201

                      dns-nameservers 172.28.170.202

 

 

Secondary.jp2cloud.com asennuksen tiedosto näytti tältä:

# The primary network interface

auto em1

iface em1 inet static

                      address 172.28.175.33

                      netmask 255.255.0.0

                      gateway 172.28.1.254

                      dns-nameservers 172.28.170.201

                      dns-nameservers 172.28.170.202

 

Kun asetukset oli määritelty tiedostoon, niin ajoimme tämän network interfacen alas komennolla sudo ifconfig em1 down ja takaisin ylös sudo ifconfig em1 up. Sen jälkeen tarkistimme ifconfig komennolla, että muutokset olivat tulleet voimaan.

 

3.3      Etäyhteyden asennus

Verkkoasetusten ollessa kunnossa asensimme kaikille laitteillemme SSH- ohjelman mahdollista etäkäyttöä varten.

 

3.4      Apache2

Varmuuden vuoksi asensimme vielä apache2:n ja PHP5- ohjelmat, jonka jälkeen testasimme niiden toiminnan ottamalla yhteyden erilliseltä koneelta localhostillemme ja tarkistamalla, että php-koodilla tehty plussauslasku laski itsensä oikein selaimen ruudulle.

3.5      Palomuuri

Tässä vaiheessa avasimme UFW palomuurista ainoastaan portit 22 ja 80, jotta saisimme koneeseen SSH-yhteyden ja Apache-webselaimeen yhteyden. Myöhemmin avasimme kaikki, sillä ilmeni useita ongelmia kun palomuurissa oli vain kaksi porttia auki.

 

4       CloudStack-asennus siirtokovalevyille.

Tässä vaiheessa olimme saaneet asennettua ja konfiguroitua Ubuntuja riittävän pitkälle jotta pääsimme etenemään itse CloudStackin asennukseen.

4.1      Komponentit

CloudStack-asennuksen tärkeimpiä komponentteja ja paketteja on NFS, KVM, NTP, Tomcat ja muutamat CloudStack paketit.

Koska CloudStack on ohjelmoitu Javalla, tarvitsimme tähän Tomcat web-palvelimen. KVM oli käyttämämme hypervisor jolla virtuaalikoneet ympäristöön luotiin ja NFS (Network File Share) puolestaan teki mountin Primary storagen ja Management koneen sekä Secondary storagen ja Management koneen hakemistojen välille. Siten saimme provisioitua virtuaalikoneet Management koneella mutta NFS mountin ansiosta saimme virtuaalikoneiden levytilat talletettua Primary Storageen. Secondary Storagen mount oli väliaikainen, sillä sinne tarvitsimme ainoastaan System Vm-koneiden templatet.

4.2      NTP, SELinux, Repositoryt, MySQL ja cloudstack-management

Asennus aloitettiin KVM:n asennuksella ja konfiguroinnilla. Se on tärkein komponentti, sillä ilman KVM:ää ei virtualisointi onnistu.

Kun jokaiselle koneelle oli määritelty fully qualified domain name (secondary.jp2cloud.com, primary.jp2cloud.com ja management.jp2cloud.com), asensimme NTP:t jokaiselle koneelle ja laitoimme ne samaan aikaan. Asensimme Chrony nimisen NTP-palvelun

apt-get –y install chrony

Tämän jälkeen laitoimme SELinuxin permissive tilaan. Huomasimme että tähän tarvitsemme selinux-utils paketin. Asensimme sen siis ja laitoimme permissive tilaan

Apt-get –y install selinux-utils

Setenforce 0

Jotta pääsimme asentamaan CloudStack paketit, piti meidän lisätä CloudStackin repositoryt ubuntun sources listille:

Nano /etc/apt/sources.list.d/cloudstack.list

deb http://cloudstack.apt-get.eu/ubuntu trusty 4.6

Lisäsimme myös julkisen avaimen luotettuihin avaimiin:

wget -O – http://cloudstack.apt-get.eu/release.asc|apt-key add –

Nyt pystyimme asentamaan CloudStackin omia paketteja koska olimme lisänneet repositoryn.

 

apt-get –y install cloudstack-management

CloudStack Managementtiin emme tässä välissä kajonneet vaan asensimme ja konfiguroimme MySQL:n:

apt-get –y install mysql-server

nano /etc/mysql/my.cnf

Laitoimme alla olevat rivit kyseiseen tiedostoon:

innodb_rollback_on_timeout=1

innodb_lock_wait_timeout=600

max_connections=350

log-bin=mysql-bin

binlog-format = ‘ROW’

 

service mysql start

mysql_secure_installation

Alempaan komentoon laitoimme kaikkiin vaihtoehtoihin “yes”. Alla olevanna komennolla puolestaan laitoimme tietokannan käyttökuntoon:

cloudstack-setup-databases cloud:CloudStack12@localhost –deploy-as=root:CloudStack12

Kun tietokanta saatiin laitettua toimintakuntoon, laitoimme cloudstack-managementin toimintaan:

cloudstack-setup-management

 

4.3      NFS ja SystemVM template

NFS-asennettiin komennolla:

apt-get –y install nfs-kernel-server

Teimme secondary- ja primary storageille mountattavat hakemistot:

/export/primary ja /export/secondary

Seuraavaksi piti tehdä storage-palvelimille tiedostoon muutoksia jotta NFS saatiin toimintaan:

nano /etc/exports

/export/primary  *(rw,async,no_root_squash,no_subtree_check)

/export/secondary  *(rw,async,no_root_squash,no_subtree_check)

Primary koneelle laitettiin /export/primary alkuinen rivi ja secondary koneelle laitettiin /export/secondary alkuinen rivi. Exportit saatiin toimintaan ajamalla storage-palvelimilla komento “exportfs –a”

Management koneelle luotiin hakemistot /mnt/secondary ja /mnt/primary joihin nuo mountit tehtiin ajamalla alla olevat komennot management koneella:

mount -t nfs 172.28.175.32:/export/primary /mnt/primary

mount -t nfs 172.28.175.33:/export/secondary /mnt/secondary

Alla olevilla komennoilla saatiin SystemVM template Secondary storagelle. Komennot ajettiin management koneella:

/usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt -m /mnt/secondary -u http://cloudstack.apt-get.eu/systemvm/4.6/systemvm64template-4.6.0-kvm.qcow2.bz2 -h kvm –F

umount -t nfs 172.28.175.33:/export/secondary /mnt/secondary

rmdir /mnt/secondary

4.4      KVM asennus ja konfigurointi

Asensimme cloudstack-agentin jotta pääsimme CloudStackin käyttöliittymään:

apt-get –y install cloudstack-agent

Teimme Libvirt asetuksiin pieniä muutoksia:

nano /etc/libvirt/libvirtd.conf

Lisäsimme seuraavat rivit:

listen_tls = 0

listen_tcp = 1

tcp_port = “16509”

auth_tcp = “none”

mdns_adv = 0

Lisäksi muokkasimme erästä riviä /etc/default/libvirt-bin tiedostossa seuraavanlaiseksi:

libvirtd_opts=”-d -l”

service libvirt-bin restart

Konfiguroimme Apparmoria seuraavilla komennoilla:

ln -s /etc/apparmor.d/usr.sbin.libvirtd /etc/apparmor.d/disable/

ln -s /etc/apparmor.d/usr.lib.libvirt.virt-aa-helper /etc/apparmor.d/disable/

apparmor_parser -R /etc/apparmor.d/usr.sbin.libvirtd

apparmor_parser -R /etc/apparmor.d/usr.lib.libvirt.virt-aa-helper

Seuraavaksi meidän oli konfiguroitava Management-koneen interfaces-tiedosto uudelleen jotta saisimme yhteyden CloudStackiin:

# Public network

auto cloudbr0

iface cloudbro0 inet static

address 172.28.175.31

netmask 255.255.0.0

gateway 172.28.1.254

dns-nameservers 172.28.170.201 172.28.170.202

bridge_ports em1

bridge_fd 5

bridge_stp off

bridge_maxwait 1

# Private network

auto cloudbr1

iface cloudbr1 inet manual

bridge_ports none

bridge_fd 5

bridge_stp off

bridge_maxwait 1

Tässä välissä avasimme ongelmien ennaltaehkäisyn takia palomuurista aivan kaikki auki.

Testasimme että pingaus toimii kumpaankin storageen, restarttasimme kaikki tarvittavat palvelut (mm. Tomcat, cloudstack-management, cloudstack-agent yms.) ja pääsimme kirjautumaan Web-käyttöliittymään käyttäjällä “admin” ja salasanalla “password”

 

4.5      Cloudstack-konfigurointi.

Kun Cloudstack on saatu siihen kuntoon, että se pyörii management-koneella oli aika aloittaa konfigurointi niin sanotulla Dashboardilla. Osoitteeksi selaimeen laitettiin 172.28.175.31:8080/client, joka avaa meidän Cloudstack User Interfacen.

Kirjautuminen ensimmäisellä kerralla tapahtuu tunnuksella: “admin” ja salasanalla “password”, domain jätetään tyhjäksi. Kun on kirjauduttu sisään, tulee sinun vaihtaa salasanasi, jonka jälkeen aukeaa näkymä, josta voit valita konfigurointitapasi. Eli valitset siis manuaalisen ja automatisoidun “wizardin” väliltä.

Me valitsimme tämän “wizard” vaihtoehdon, joka siis on vähän kuin step-by-step asennus. Kannattaa huomioida, että ip-osoitteiden määrittely on äärimmäisen tärkeää. Väärät osoitteet käytännössä kaatavat koko asennuksen ja CloudStack ei osaa ilmoittaa virheiden syytä mitenkään järkevällä tavalla. Teimme valehtelematta kymmeniä konfigurointeja, ennen kuin kaikki osui kohdilleen.

Konfigurointimme siinä järjestyksessä, kun ne tulevat wizardissa:

 

Zone:

Name: Zone1

Dns1: 172.28.11.67

Internal Dns: 172.28.11.67

 

Pod:

Name: Pod1

Gateway: 172.28.1.254

Netmask: 255.255.0.0

IP-Range: 172.28.175.34-39 (Tästä tulevat järjestelmän toimimiseen tarvittavien System VM:n IP-osoitteet. Pienellä asennuksella näitä osoitteita on oltava minimissään 2.)

 

Add Guest Network:

Gateway: 172.28.1.254

Netmask: 255.255.0.0

IP-Range: 172.28.175.60-66.

 

Cluster:

Hypervisor : KVM

Name: Cluster1

 

Host:

Host Name: 172.28.175.31

Username: root

Password: xxxx (root-salasananne management-koneella.)

 

Primary Storage:

Name: Primary

Protocol: NFS

Server: 172.28.175.32

Path : /export/primary

 

Secondary Storage:

NFS Server: 172.28.175.33

Path: /export/secondary

Tämän jälkeen eteesi aukeaa ilmoitus, että olet valmis. Kun painat Launch, niin CloudStack alkaa konfiguroimaan järjestelmää antamillasi tiedoilla.

 

4.6      Käyttöliittymä

Mikäli konfigurointi meni läpi, niin sinulle aukeaa yllä oleva näkymä. Tarkista, että Primary ja Secondary Storagejen kohdalla ei ole 0/0gb, koska tämä tarkoittaa sitä ettei yhteys Managementin ja niiden välillä toimi.

Huomasimme, että kannattaa aina tarkistaa System VM:n toimivuus konfiguroinnin jälkeen, koska niiden korrekti toimiminen on elintärkeää. Näet ne kohdasta Infrastructure -> System VMs.

Seuraavaksi suosittelen käydä tarkistamassa, että toimiiko Secondary Storage oikein. Tämän huomaa siitä, että latautuuko asennuksen mukana tuleva CentOs5.5 template käytettäväksi.

Tämän löytää kohdasta Templates. Klikkaa CentOS5.5 ja sieltä Zones-kohtaa.

Status- kohdassa saattaa lukea esim. Downloading tai Installing template, jolloin täytyy odottaa. Ready kertoo, onko template valmiina käyttöön. Jos System VM:t näyttävät vihreää ja template on valmis, niin seuraavaksi voit yrittää luoda instanssin. Instances -> Add Instance ja valitset templateksi näkyvissä olevan CentOS5.5 templaten. Me valitsimme Mediumiksi kaikki valinnat mitä kysyttiin ja loimme Instanssin. Ensimmäisellä kerralla tässä kesti n. 10 minuuttia ja sen jälkeen luonti meni läpi.

Defaulttina käyttäjätunnus on “root” ja salasana “password”.

 

Teimme vielä myöhemmin Ubuntu 14.04 instanssin ISO-tiedostosta. ISO:n lisääminen tapahtuu Templates-> Select View-kohdasta ISO ja Register ISO. Etsi internetistä esim. Ubuntu 14.04 iso-tiedosto ja lataa tätä kautta se CloudStackiin.

Instanssin luonti meni samalla tavalla kuin aikaisemmin paitsi, että ensimmäisessä kohdassa valitaan ISO Templaten sijaan. Kun avaat konsoliyhteyden ensimmäistä kertaa tähän ISO:lla luotuun instanssiin niin joudut asentamaan käyttöjärjestelmän siihen. Asennuksen jälkeen muista irrottaa ISO-tiedosto instanssista “Detach ISO”-painikkeesta. Käynnistä vielä instanssi uudelleen ja sinun pitäisi päästä kirjautumaan virtuaalikoneelle.

4.7      Reinstall-skripti

Jouduimme asentamaan ympäristömme uudestaan kymmeniä kertoja ennen kuin saimme sen toimimaan oikein, joten teimme skriptin joka hoitaa sen automaattisesti. Se myös käynnistää tarvittavat osat, jotta pystyimme suoraan vain ajamaan skriptin ja koittaa konfigurointia uudelleen ilman suurempia ongelmia. Ainoa haitta oli, että tämä prosessi kestää noin 10 minuuttia joka kerralla.

 

#!/bin/bash

/etc/init.d/cloudstack-management stop

mysql -u root -pCloudStack11 -e ’drop database cloud;’

mysql -u root -pCloudStack11 -e ’drop database cloud_usage;’

rm -rf /var/log/cloudstack

rm -rf /var/log/cloudstack-management

cloudstack-setup-database cloud:CloudStack11@localhost –deploy-as=root:CloudStack11

cloudstack-setup-management

/etc/init.d/cloudstack-management start

service tomcat6 start

service cloudstack-agent start

service libvirt-bin restart

 

Skriptissä olevat CloudStack11-kohdat ovat siis salasanoja. Ajaminen tapahtui skriptin kansiossa vain kirjoittamalla ./alustacs.sh.

 

4.8      Ongelmia

Palomuurien on aina oltava avattuna yhteyksille. Käytimme tuhottomasti aikaa, kun saimme yhteysvirheitä.

 

Tarkista jokaisella projektikerralla, että mounttaukset toimivat. Tähänkin meni reilusti aikaa, kun emme tajunneet mounttausten katoilevan välillä. Toisaalta silloin tällöin ne myös olivat valmiiksi toiminnassa, kun käynnistimme käyttöjärjestelmät.

 

Jos CloudStackin dashboardin system wizard jumittuu system VM kohtaan, tarkista management-koneen syslogista tai cloudstack-management/agent logeista, että hakeeko ohjelma templatea väärästä kansiosta. Meillä upposi tähän todella paljon aikaa, kun emme tajunnet, että vaikka seurasimme ohjeita tunnollisesti, niin meidän täytyi käydä vaihtamassa kansion nimi samaan, kuin mistä ohjelma etsii sitä. Tästä ei siis ollut mainintaa ohjeissa. Logit löytyvät tiedostopolusta /var/log/cloudstack/agent/agent.log. Kansio oli siis paikassa /export/secondary/template/tmpl/1 Täällä meillä oli kansio nimeltä 10, joka piti vaihtaa numeroksi 3.

 

Suurimmat ongelmat meillä oli kuitenkin CloudStackin epävakauden kanssa. Softa ei tuota juurikaan helppolukuisia virheilmoituksia vaan keinosi ovat joko googlettaa sen antamaa epämääräistä virheilmoitusta tai vikaa, tai lukea agent.logia. Myöskään virallinen dokumentaatio ei ole kovin helppolukuista, koska se ei sisällä kuvia tai ohjeita mahdollisten virheiden varalle.

 

5       Palvelinasennus (single node installation)

5.1      Alkutoimet

Kun palvelin oli liitetty sähköverkkoon ja siihen oli kytketty näppäimistö ja näyttö, siirryimme tutkimaan BIOS:in asetuksia. Aikaisempien käyttäjien toimesta palvelimen kahdeksan kovalevyä oli jaettu RAID-tekniikkaa hyödyntäen kuudeksi levyksi, joista neljä toimi RAID 1-tekniikalla.

 

Päätimme muokata jakoa paremmin omia tarpeitamme vastaavaksi, joten muutimme asetuksia siten, että kaikki kahdeksan kovalevyä toimivat RAID 10 –tekniikkaa hyödyntäen yhtenä 1,4 teratavun levynä. Valitsimme RAID 10:n, koska se mahdollistaa tavallista yksittäistä kovalevyä suuremman kirjoitusnopeuden ja hoitaa samalla laitteen tiedostojen varmuuskopioinnin peilauksen myötä. Tällä tekniikalla puolet kovalevyjen 2,8 teratavun kokonaistallennustilasta menetettiin, mutta tiedot ovat turvassa yksittäisen kovalevyn rikkoutuessa.

 

5.2      Linuxin asennus ja konfigurointi

Seuraavaksi aloitimme Ubuntu 14.04 server –käyttöjärjestelmän asentamisen. Asennusvaiheessa tehtiin tarvittavat valinnat kielen, aikavyöhykkeen, näppäimistön ja päivitysasetusten osalta. Asennusvaiheessa olisi ollut mahdollista asentaa samalla myös palvelimessa tarvittavia ohjelmistokokonaisuuksia, kuten Tomcat java server, mutta päätimme jättää ne asentamatta tässä vaiheessa ja asentaa ne myöhemmin edetessämme erillisten asennusohjeiden mukaisesti.

 

Asennuksen jälkeen ensimmäisen sisäänkirjautumisen jälkeen ajettiin komennot:

                      $ sudo apt-get update

                      $ sudo apt-get upgrade

                      $ sudo passwd root

 

5.3      IP-konfiguraatiot

Käyttöjärjestelmän asentamisen ja muutaman peruskomennon jälkeen voitiin siirtyä tekemään peruskonfiguraatioita verkko-asetuksiin. Konfiguraatiot tehtiin /etc/network/ -hakemistossa sijaitsevaan interfaces-tiedostoon, joka varmuuskopioitiin nimellä interfaces.orig ennen asetusten muuttamista.

 

Tiedostoon tehtiin seuraavat konfiguraatiot:

 

auto eth1

iface eth1 inet manual

 

# Public network

auto cloudbr0

iface cloudbr0 inet static

address 172.28.175.69

netmask 255.255.0.0

gateway 172.28.1.254

dns-nameservers 172.28.170.201 172.28.170.202

bridge_ports eth1

bridge_fd 5

bridge_stp off

bridge_maxwait 1

 

# Private network

auto cloudbr1

iface cloudbr1 inet manual

bridge_ports none

bridge_fd 5

bridge_stp off

bridge_maxwait 1

 

Tietojen syöttämisen jälkeen laite käynnistettiin uudelleen komennolla reboot. Lopuksi asetusten voimaantulo tarkastettiin uudelleenkäynnistymisen jälkeen komennolla ifconfig, joka kertoi, että IP-osoite ja verkkomaski ovat samat kuin interfaces-tiedostoon määriteltiin.

 

5.4      ClousStackin asennus

CloudStackin asennus aloitettiin lisäämällä pakettien lataamiseen tarvittava lähdeosoite sources –listalle, joka tapahtui luomalla /etc/apt/sources.list.d/ -hakemistoon tiedosto nimeltä cloudstack.list. Tiedoston sisällöksi tuli rivi ”deb http://cloudstack.apt-get.eu/ubuntu trusty 4.4”. Lisäksi haettiin julkinen avain, joka lisättiin luotettuihin avaimiin komennolla wget -O – http://cloudstack.apt-get.eu/release.asc|apt-key add -apt-get update.

Seuraavaksi asennettiin OpenNTPD ja CloudStack management komennoilla apt-get install openntpd ja apt-get install cloudstack-management.

 

5.5      MySQL serverin asennus

Asennettiin MySQL server:

$ apt-get –yes install mysql-server

 

Muokattiin cloudstack tietokantakonfiguraatio tiedostoa:

$ nano /etc/mysql/conf.d/cloudstack.cnf

 

Tiedoston loppuun lisätiin seuraavat rivit:

 

!includedir /etc/mysql/conf.d/

!includedir /etc/mysql/mysql.conf.d/

[mysqld]

innodb_rollback_on_timeout=1

innodb_lock_wait_timeout=600

max_connections=350

log-bin=mysql-bin

binlog-format = ‘ROW’

 

Käynistettiin MySQL serverin uudelleen:

$ sudo service mysql restart

Kun mysql-server käynnistettiin uudelleen, tuli virheilmoitus. 3-Noden asennuksessa tällaista ei tullut.

 

Internetistä löytyi ohjeet ongelman korjaamiseen. Täytyi tehdä muutoksia tiedostoon: /usr/share/cloudstack-management/setup/create-schema-premium

Luotiin tiedoston patch-tiedosto /tmp/- kansioon.

 

$ sudo nano /tmp/CLOUDSTACK-8157.diff

 

Tiedoston sisältö oli seuraava:

— /usr/share/cloudstack-management/setup/create-schema-premium.sql.orig 2015-02-14 16:53:19.341079935 +0000

+++ /usr/share/cloudstack-management/setup/create-schema-premium.sql 2015-02-14 16:54:12.127456646 +0000

@@ -296,7 +296,7 @@

   `password` varchar(200) COMMENT ‘password’,

   `round_robin_marker` int COMMENT ‘This marks the volume to be picked up for lun creation, RR fashion’,

   PRIMARY KEY  (`id`),

–  CONSTRAINT `fk_netapp_volume__pool_id` FOREIGN KEY `fk_netapp_volume__pool_id` (`pool_id`) REFERENCES `netapp_pool` (`id`) ON DELETE CASCADE,

+  CONSTRAINT `fk_netapp_volume__pool_id` FOREIGN KEY `fk_netapp_volume__pool_id` (`pool_id`) REFERENCES `cloud`.`netapp_pool` (`id`) ON DELETE CASCADE,

   INDEX `i_netapp_volume__pool_id`(`pool_id`)

 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

@@ -315,7 +315,7 @@

   `size` bigint NOT NULL COMMENT ‘lun size’,

   `volume_id` bigint unsigned NOT NULL COMMENT ‘parent volume id’,

   PRIMARY KEY (`id`),

–  CONSTRAINT `fk_netapp_lun__volume_id` FOREIGN KEY `fk_netapp_lun__volume_id` (`volume_id`) REFERENCES `netapp_volume` (`id`) ON DELETE CASCADE,

+  CONSTRAINT `fk_netapp_lun__volume_id` FOREIGN KEY `fk_netapp_lun__volume_id` (`volume_id`) REFERENCES `cloud`.`netapp_volume` (`id`) ON DELETE CASCADE,

   INDEX `i_netapp_lun__volume_id`(`volume_id`),

   INDEX `i_netapp_lun__lun_name`(`lun_name`)

 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

Seuraavaksi varmuuskopioitiin create-schema-premium.sql tiedoston alkuperäinen versio:

 

$ sudo cp /usr/share/cloudstack-management/setup/create-schema-premium.sql \ /usr/share/cloudstack-management/setup/create-schema-premium.sql.orig

 

Asennettiin PATCH daemon:

$ sudo apt-get install patch

Ajettiin aiemmin luotu korjaustiedosto PATCH:illa:

$ sudo patch -d / -p0 -u -i /tmp/CLOUDSTACK-8157.diff

 

 

5.6      NFS asennus, export mount

Seuraavaksi luotiin hakemistot /export/primary ja /export/secondary ja asennettiin NFS komennolla apt-get install nfs-kernel-server.

 

Sitten luotiin exports-tiedosto exportin konfiguraatiota varten seuraavalla komennolla:

$ sudo nano /etc/exports/

 

Tiedostoon syötettiin rivi:

/export *(rw,async,no_root_squash,no_subtree_check)

 

Lopuksi annettiin komento $ exportfs -a

 

NFS täytyi konfiguroida statd kuuntelemaan tiettyjä portteja, tämä onnistui ajamalla seuraavat kolme komentoa, joista ensimmäisellä tehdään varmuuskopio nfs-common -tiedostosta nimellä nfs-common.orig:

$ cp /etc/default/nfs-common /etc/default/nfs-common.orig

$ sed -i ‘/NEED_STATD=/ a NEED_STATD=yes’ /etc/default/nfs-common

$ sed -i ‘/STATDOPTS=/ a STATDOPTS=”–port 662 –outgoing-port 2020″‘ /etc/default/nfs-common

 

Seuraavaksi täytyi konfiguroida lockd, joten avasimme konfiguraatiotiedoston komennolla:

$ sudo nano /etc/modprobe.d/lockd.conf

 

Tiedostoon lisättiin seuraava rivi:

options lockd nlm_udpport=32769 nlm_tcpport=32803

 

Tämän jälkeen NFS käynnistettiin uudelleen ja testattiin, että exporttaus on onnistunut. Tämä tapahtui seuraavilla komennoilla:

$ service nfs-kernel-server restart

$ showmount – 127.0.0.1

 

Kaikki oli kunnossa, koska komennon jälkeen näytölle tulostui exportattu hekemisto.

Sitten luotiin mountattavat hakemistot, tehtiin niille tarvittavat konfiguraatiot ja muontattiin ne.

$ IP=172.28.175.69

$ mkdir -p /mnt/primary /mnt/secondary

 

Konfiguraatiotiedosto fstab avattiin komennolla:

$ sudo nano /etc/fstab

 

Ja siihen lisättiin seuraavat rivit:

$ 172.28.175.69:/export/primary   /mnt/primary    nfs rsize=8192,wsize=8192,timeo=14,intr,vers=3,noauto  0   2

$ 172.28.175.69:/export/secondary /mnt/secondary  nfs rsize=8192,wsize=8192,timeo=14,intr,vers=3,noauto  0   2

 

Lopuksi mountattiin hakemistot komennolla:

$ mount /mnt/primary /mnt/secondary

 

Seuraava vaihe oli asentaa libvirt, jota CloudStack käyttää virtuaalikoneiden hallintaan.

 

Asennus tapahtui komennolla:

$ apt-get install cloudstack-agent

 

Alkuperäisestä konfiguraatiotiedostosta otettiin varmuuskopio komennolla:

$ cp /etc/libvirt/libvirtd.conf /etc/libvirt/libvirtd.conf.orig

 

Sitten tehtiin konfiguraatiot komennoilla:

$ sed -i ‘/#listen_tls = 0/ a listen_tls = 0’ /etc/libvirt/libvirtd.conf

$ sed -i ‘/#listen_tcp = 1/ a listen_tcp = 1’ /etc/libvirt/libvirtd.conf

$ sed -i ‘/#tcp_port = “16509”/ a tcp_port = “16509”‘ /etc/libvirt/libvirtd.conf

$ sed -i ‘/#auth_tcp = “sasl”/ a auth_tcp = “none”‘ /etc/libvirt/libvirtd.conf

 

Seuraavaksi konfiguroitiin libvirt-conf -tiedosto, josta otettiin aikaisempien tiedostojen tavoin aluksi varmuuskopio.

$ cp /etc/default/libvirt-bin /etc/default/libvirt-bin.orig

$ sed -i -e ‘s/libvirtd_opts=”-d”/libvirtd_opts=”-d -l”/’ /etc/default/libvirt-bin

 

Lopuksi käynnistettiin libvirt-bin uudelleen.

$ service libvirt-bin restart

 

Viimeiseksi konfiguroitiin vielä qemu.conf -tiedosto:

$ cp /etc/libvirt/qemu.conf /etc/libvirt/qemu.conf.orig

$ sed -i ‘/# vnc_listen = “0.0.0.0”/ a vnc_listen = “0.0.0.0”‘ /etc/libvirt/qemu.conf

 

Ja lopuksi palvelu käynnistettiin uudelleen.

$ service libvirt-bin restart

 

Seuraava vaihe oli AppArmorin poistaminen käytöstä, tämä tapahtui seuraavilla komennoilla:

$ ln -s /etc/apparmor.d/usr.sbin.libvirtd /etc/apparmor.d/disable/

$ ln -s /etc/apparmor.d/usr.lib.libvirt.virt-aa-helper /etc/apparmor.d/disable/

$ apparmor_parser -R /etc/apparmor.d/usr.sbin.libvirtd

$ apparmor_parser -R /etc/apparmor.d/usr.lib.libvirt.virt-aa-helper

 

Ja lopuksi taas uudelleenkäynnistys.

$ service libvirt-bin restart

 

Palomuurin asetukset Palomuuriin tehtiin seuraavat määritykset

$ ufw allow proto tcp from any to any port 22

$ ufw allow proto tcp from any to any port 1798

$ ufw allow proto tcp from any to any port 16509

$ ufw allow proto tcp from any to any port 5900:6100

$ ufw allow proto tcp from any to any port 49152:49216

 

Komentojen jälkeen palvelin käynnistettiin uudelleen ja testattiin, että NFS toimii edelleen.

$ reboot

$ rpcinfo -u 172.28.175.69 mount

$ showmount -e 172.28.175.69

Uudelleenkäynnistyksen jälkeen hakemistot täytyi mountata uudelleen antamalla komennot:

$ mount /mnt/primary

$ mount /mnt/secondary

 

Seuraavaksi haettiin system template /mnt/secondary:

$ /usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt  -m /mnt/secondary -u http://cloudstack.apt-get.eu/systemvm/4.4/systemvm64template-4.4.1-7-kvm.qcow2.bz2 -h kvm -F

 

5.7      Käyttöliittymän testaus

 

Tässä vaiheessa pääsimme testaamaan CloudStackin graafisen käyttöliittymän toimintaa. Avasimme käyttöliittymän osoitteessa http://192.168.77.10:8080/client, mutta saimme tulokseksi 404 -virheilmoituksen. Tästä oli maininta myös ohjeessa, jota seurasimme ja siihen oli listattu komentoja, jotka voisi kokeilla ajaa virheen ilmetessä.

 

Kokeilimme ajaa seuraavat komennot ohjeen mukaisessa järjestyksessä:

$ service cloudstack-management stop

$ service tomcat6 stop

$ service cloudstack-agent stop

$ ps -efl | grep java

 

$ service cloudstack-management start

$ service cloudstack-management status

$ service cloudstack-agent start

$ service cloudstack-agent status

Palveluiden uudelleenkäynnistämisen jälkeen käyttöliittymä aukesi.

 

5.8      Web-käyttöliittymä

Web-käyttöliittymälle pääsee kirjautumaan tunnuksilla: admin, salasana: password.

Alkuun latautuu Dashboard. Tästä näkee systeemin kapasiteetin ja Alert-ilmoitukset.

Infrastructure-välilehdellä näkee käytössä olevat resurssit.

Instances-välilehdellä pääsee näkemään luodut virtuaalikoneet, käsitellä ne tai voidaan luoda uusia.

 

Instanceen voidaan kirjautua Console-ikkunan avulla. Tässä näkee CentOS kone varasi IP-osoite Guest.

 

TEMPLATES-välilehdellä on oletuksena ladatut templatet, joista voi luoda virtuaalikoneet.

ISO-välilehdelle täytyy ladata levykuvat erikseen, koska oletuksena niitä ei ole.

ISO-levykuvat ladataan verkosta.

PROJECT-välilehdellä voidaan luoda projekteja ja määritä niille käyttäjiä.

 

Accounts-välilehdellä voidaan lisätä uusia käyttäjiä.

Global Settings-välilehdellä pääsee muokkaamaan mm. hypervisorin asetuksia, kuten maksimi käyttäjämäärän jne. (käytössämme on KVM-hypervizor).

Instance Size-välilehdellä voidaan luoda valmiiksi valittuja VM-kokonpanoja siis CPU, RAM, HDD.

Lähteet

Navi, Ravin. Apache CloudStack Computing. Luettavissa: http://site.ebrary.com/lib/haagahelia/detail.action?docID=10714265

Apache CloudStack 4.6 Installation Documentation. Luettavissa: http://docs.cloudstack.apache.org/projects/cloudstack-installation/en/4.6/

Apache CloudStack 4.4 Installation Documentation. Luettavisa:

http://docs.cloudstack.apache.org/projects/cloudstack-installation/en/4.4/

Step by Step Apache CloudStack Installation -video. Katsottavissa:

https://www.youtube.com/watch?v=ldG5LsP5new

CloudStack Installation on Ubuntu Server using Virtualbox -video. Katsottavissa:

https://www.youtube.com/watch?v=zsweF5rkc2I

CloudStack 4.4 Single Server on Ubuntu 14.04.1 with KVM

http://www.greenhills.co.uk/2015/02/23/cloudstack-4.4-single-server-on-ubuntu-14.04.1-with-kvm.html