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
2.1 Asennusohjeiden tutkiminen ja materiaalin hankinta
3.1 Käyttöjärjestelmän asennus ja asetusten määrittely
4 CloudStack-asennus siirtokovalevyille
4.2 NTP, SELinux, Repositoryt, MySQL ja cloudstack-management
4.4 KVM asennus ja konfigurointi
5 Palvelinasennus (single node installation)
5.2 Linuxin asennus ja konfigurointi
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