Sisällysluettelo |
Alla olevan kuvan tarkoitus on kuvata, miten Linux ja siihen pohjautuvat järjestelmät rakentuvat. Kaiken keskellä on Kernel, ydin, joka on tärkeimmässä roolissa koko järjestelmässä. Linux on kuuluisa luotettavuudestaan ja toimivuudestaan, ja tähän syyllinen on yksinkertainen ja toimiva Kernel. Kernelin vahvuus on sen kehitystavassa eli avoimessa lähdekoodissa, jolloin ammattitaitoiset ja asiaan vannoutuneet henkilöt pystyvät kehittämään yhä parempaa ja parempaa tuotosta. Tätä kehitystapaa on kopioitu isoon osaan kernelin ympärille rakentuvista ohjelmista, ja näin lopputuloksena on se, mistä Linux on kuuluisa.
Linuxissa on valtava määrä hyviä ominaisuuksia, mutta luonnollisesti myös ns. ei-niin-hyviä-ominaisuuksia. Paras kuva Linuxista muodostuu itse tekemällä ja kokeilemalla. Materiaalia löytyy asiaan kuin asiaan tuhansia sivuja. Löytyy artikkeleita, step-by-step -ohjeita, foorumeita, live-keskusteluja ja vaikka mitä.
Mielipide Linuxista kannattaa muodostaa vasta testaamisen jälkeen! Kannattaa käyttää testaamiseen jakelua, johon löytyy paljon ohjeita! Allekirjoittaneen mielipiteitä alla - Ubuntu => Hyvä normaaliin käyttöön. Päivitysaikataulu on kiivas, kannattaa suosia LTS-versioita. Uudehkot ohjelmat, jotka toimiva pääsääntöisesti hyvin ja vakaasti. - Debian => Moneen käyttöön sopiva, aina palvelinympäristöistä sulautettuihin. Toimiva ja luotettava, mutta normikäyttäjälle ohjelmat voivat olla vanhahkoja. - SUSE => Yrityskäyttöön parhaiten sopiva jakelu. Windows-ympäristöjen ylläpitäjille tutunkaltaisia työkaluja palveluiden hallintaan. Yhteensopivuutta ja keskitettyä hallintaa.
Linux sopii hyvin esimerkiksi todellisiin ympäristöihin, joissa käyttöliittymien koristeet ja ohjelmien helppokäyttöisyys eivät ole niitä tärkeimpiä asioita.
Koulutuspäivät aloitetaan alla olevan dokumentin läpi käymisellä! Virtualisointidokumentti
Verkon käytön kasvaessa palveluiden saatavuus on yhä tärkeämmässä roolissa. Ajatellaanpa vaikka puhelinliikennettä, joka siirtyy muutaman vuoden kuluessa täysin IP-pohjaisiksi. Tyypillisessä ratkaisussa puhelin ottaa yhteyden SIP-protokollalla palvelimeen, joka ohjaa puhelun oikeaan paikkaan. Puhelut eivät siis onnistu, jos palvelin on nurin. Vastaavia tilanteita on verkko pullollaan, eli esimerkiksi WWW-, SQL-, DNS-, DHCP-palvelimet ovat käyttäjän kannalta erittäin kriittisessä asemassa. Jos jokin palveluista on polvillaan, käyttäjän aika kuluu pasianssin pelaamisen tai muuhun vastaavaan mieltä ja kehoa rauhoittavaan toimintaan.
Allekirjoittaneen empiiriseen tutkimukseen perustuvat havainnot osoittavat, että palvelimien uptime-arvot ovat erittäin heikot. Huonot uptimet ovat osoitus järjestelmien jatkuvasta, erittäin suuresta, käynnistystarpeesta, ja heijastaa suoraan käyttäjille näkyvään palvelun saatavuuteen. Jos pidetään siedettävän palvelun referenssinä vaikkapa 97% saatavuutta, eli palvelu olisi alhaalla noin yhden päivän kuukaudesta, on valitettavan iso tavoite monille palveluntuottajille. Täytyy löytyä keinot, joilla ennalta arvaattomat tilanteet, kuten palvelimien boottaamiset, eivät vaikuta merkittävästi palvelun saatavuuteen. Käsite High Availability on monessa tapauksessa vielä täysin vieras.
Palvelu on kokonaisuus, johon vaikuttavat erittäin monet tekijät. Yksittäisen palvelimen virtalähteen hajoaminen, palvelimen kovalevyn vioittuminen, sähkökatkot, tietoliikenneyhteyksien häiriöt ja muut yksittäiset asiat vaikuttavat suoraan palvelun saatavuuteen. On tekijöitä, joille yleisesti ei voida mitään, ja se asia on vain hyväksyttävä. Ei voida tietää, milloin ulkopuolisen palveluntarjoajan tuotteet eivät toimi. Tälle asialle ei yksinkertaisesti voida mitään. Mutta kokonaisuudessa on paljon asioita, joita parantamalla voidaan vaikuttaa suoraan palvelun laatuun.
Klusteroinnin tarkoituksena on pienentää yksittäisen palvelimen vaikutusta palvelun tuottamiseen. Palvelimen uudelleenkäynnistäminen tai vioittuminen ei vaikuta hyvin toteutetussa klusterissa palvelun saatavuuteen millään tavoin. Käyttäjän ei parhaassa tilanteessa huomaa mitään eroa normaaliin tilanteeseen verrattuna, ja jatkaa käyttämistä täysin tietämättä taustalla tapahtuneista asioista. Näinhän se pitäisi olla, ja tällaista tilannetta pitäisi tavoitella.
Seuraavassa toteutetaan pienimuotoinen klusteri käyttäen kahta Debianilla varustettua VirtualBox-alustalla tehtyä virtuaalikonetta. Oletuksena on, että koneet ovat perusasennettuja, ilman graafista työpöytää olevia koneita. Koneiden resurssivaatimukset ovat hyvin pieniä, sillä esimerkiksi toteutuksessa niille on varattu käyttöön ainoastaan 256 MB keskusmuistia. Koneiden kovalevytiedostojen (vdi) koko on alle giga. Näillä varmistetaan koneiden helppo siirreltävyys, ja useiden samanaikaisten koneiden aktiivinen käyttö. Koneiden hallinta tapahtuu SSH-yhteyden kautta. Koneiden nimet ovat jatkossa majakka ja perävaunu. Majakka on niin sanottu ensisijainen kone ja perävaunu toissijainen.
Asetetaan ensimmäiseksi koneiden IP-asetukset ja muut verkossa olemiseen liittyvät asiat kuntoon. Ensimmäisenä IP-osoite, jonka muuttamisesta alla esimerkki.
third:~# cd /etc/network
third:/etc/network# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 08:00:27:45:03:39
inet addr:213.250.105.61 Bcast:213.250.105.127 Mask:255.255.255.128
inet6 addr: fe80::a00:27ff:fe45:339/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:15800 errors:1 dropped:0 overruns:0 frame:0
TX packets:4992 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:10819445 (10.3 MiB) TX bytes:412933 (403.2 KiB)
Interrupt:11 Base address:0xc020
third:/etc/network# ifdown eth0
----
third:/etc/network# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 08:00:27:45:03:39
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:15800 errors:1 dropped:0 overruns:0 frame:0
TX packets:4992 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:10819445 (10.3 MiB) TX bytes:412933 (403.2 KiB)
Interrupt:11 Base address:0xc020
third:/etc/network# pico interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
address 192.168.20.20
netmask 255.255.255.0
gateway 192.168.20.1
third:/etc/network# ifup eth0
third:/etc/network# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 08:00:27:45:03:39
inet addr:192.168.20.20 Bcast:192.168.20.255 Mask:255.255.255.128
inet6 addr: fe80::a00:27ff:fe45:339/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:16605 errors:1 dropped:0 overruns:0 frame:0
TX packets:5081 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:10878601 (10.3 MiB) TX bytes:423631 (413.7 KiB)
Interrupt:11 Base address:0xc020
third:/etc/network# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.20.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0.0.0.0 192.168.20.1 0.0.0.0 UG 0 0 0 eth0
third:/etc/network#
Näin on siis vaihdettu IP-osoite. Seuraavaksi vaihdetaan koneen nimi ja esitellään klusterikaveri.
third:~# cd /etc third:/etc# pico hostname
peravaunu
third:/etc# pico hosts
127.0.0.1 localhost 127.0.1.1 peravaunu.testiverkko.info peravaunu 192.168.20.10 majakka.testiverkko.info majakka
third:/etc# reboot
Käynnistämisen jälkeen
peravaunu:/etc# hostname peravaunu peravaunu:/etc# hostname --fqdn peravaunu.testiverkko.info
Toiselle koneelle vastaavasti
second:~# cd /etc/network
second:/etc/network# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 08:00:27:45:03:55
inet addr:213.250.105.55 Bcast:213.250.105.127 Mask:255.255.255.128
inet6 addr: fe80::a00:27ff:fe45:339/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:15800 errors:1 dropped:0 overruns:0 frame:0
TX packets:4992 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:10819445 (10.3 MiB) TX bytes:412933 (403.2 KiB)
Interrupt:11 Base address:0xc020
second:/etc/network# ifdown eth0
----
second:/etc/network# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 08:00:27:45:03:55
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:15800 errors:1 dropped:0 overruns:0 frame:0
TX packets:4992 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:10819445 (10.3 MiB) TX bytes:412933 (403.2 KiB)
Interrupt:11 Base address:0xc020
second:/etc/network# pico interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
address 192.168.20.10
netmask 255.255.255.0
gateway 192.168.20.1
second:/etc/network# ifup eth0
second:/etc/network# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 08:00:27:45:03:55
inet addr:192.168.20.20 Bcast:192.168.20.255 Mask:255.255.255.128
inet6 addr: fe80::a00:27ff:fe45:339/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:16605 errors:1 dropped:0 overruns:0 frame:0
TX packets:5081 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:10878601 (10.3 MiB) TX bytes:423631 (413.7 KiB)
Interrupt:11 Base address:0xc020
second:/etc/network# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.20.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0.0.0.0 192.168.20.1 0.0.0.0 UG 0 0 0 eth0
second:/etc/network# cd /etc
second:/etc# pico hostname
majakka
second:/etc# pico hosts
127.0.0.1 localhost 127.0.1.1 majakka.testiverkko.info majakka 192.168.20.20 peravaunu.testiverkko.info peravaunu
second:/etc# reboot
Käynnistämisen jälkeen
majakka:/etc# hostname majakka majakka:/etc# hostname --fqdn majakka.testiverkko.info
Lopuksi pitäisi vielä muokata tiedostoa resolv.conf kansiosta /etc. Tiedoston pitäisi sisältää vähintään seuraava rivi, jolla esitellään koneen käyttämä nimipalvelin.
nameserver 192.168.20.1
Asennetaan ensimmäiseksi molemmille koneille Heartbeat, jolla klusterointi toteutetaan. Lisäksi asennettaan klusteroitava palvelu eli Lighttpd, joka toimi WWW-palvelinohjelmistona.
apt-get install heartbeat-2 lighttpd
Heartbeat on palvelinohjelma, joka kirjaimellisesti sykkii määrätyin aikavälein klusterissa olevien laitteiden kanssa. Tuloksien mukaisesti klusterissa olevien laitteiden ja niiden palveluiden tiloissa tapahtuu muutoksia. Ensimmäisenä pitää konfiguroida tiedostoa ha.cf, jossa määritellään klusterin jäsenet ja muita yleisiä asioita.
majakka:~# pico /etc/ha.d/ha.cf
node majakka node peravaunu keepalive 2 warntime 5 deadtime 10 initdead 60 ucast eth0 192.168.20.20 ping 192.168.20.1 auto_failback on use_logd yes debug 1 logfile /var/log/hb.log debugfile /var/log/heartbeat-debug.log respawn hacluster /usr/lib/heartbeat/ipfail
majakka:~#
peravaunu:~# pico /etc/ha.d/ha.cf
node majakka node peravaunu keepalive 2 warntime 5 deadtime 10 initdead 60 ucast eth0 192.168.20.10 ping 192.168.20.1 auto_failback on use_logd yes debug 1 logfile /var/log/hb.log debugfile /var/log/heartbeat-debug.log respawn hacluster /usr/lib/heartbeat/ipfail
peravaunu:~#
Seuraavaksi luodaan klusteriin salasana, jonka tietävät laitteet voivat pysyä klusterin jäseninä. Avaimen täytyy olla siis jokaisessa klusterin laitteessa sama.
majakka:~# dd if=/dev/urandom count=128 bs=1 2>&1 | md5sum | cut -b-32 7ecac2a140791d4fe291ee3b72d08ffd majakka:~# pico /etc/ha.d/authkeys
auth 1 1 md5 7ecac2a140791d4fe291ee3b72d08ffd
majakka:~# chmod 500 /etc/ha.d/authkeys
peravaunu:~# pico /etc/ha.d/authkeys
auth 1 1 md5 7ecac2a140791d4fe291ee3b72d08ffd
peravaunu:~# chmod 500 /etc/ha.d/authkeys
Lopuksi määritellään klusteroitavat palvelut ja niiden toiminta. Ensimmäisenä otetaan WWW-palvelu pois päältä.
majakka:~# invoke-rc.d lighttpd stop Stopping web server: lighttpd. majakka:~# update-rc.d -f lighttpd remove Removing any system startup links for /etc/init.d/lighttpd ... /etc/rc0.d/K20lighttpd /etc/rc1.d/K20lighttpd /etc/rc2.d/S20lighttpd /etc/rc3.d/S20lighttpd /etc/rc4.d/S20lighttpd /etc/rc5.d/S20lighttpd /etc/rc6.d/K20lighttpd majakka:~# pico /etc/ha.d/haresources ---- majakka 192.168.20.30 lighttpd ---- majakka:~#
peravaunu:~# invoke-rc.d lighttpd stop Stopping web server: lighttpd. peravaunu:~# update-rc.d -f lighttpd remove Removing any system startup links for /etc/init.d/lighttpd ... /etc/rc0.d/K20lighttpd /etc/rc1.d/K20lighttpd /etc/rc2.d/S20lighttpd /etc/rc3.d/S20lighttpd /etc/rc4.d/S20lighttpd /etc/rc5.d/S20lighttpd /etc/rc6.d/K20lighttpd peravaunu:~# pico /etc/ha.d/haresources ---- majakka 192.168.20.30 lighttpd ---- peravaunu:~#
Yhteensopivuuden lisäämiseksi pitää ottaa järjestelmään seuraava asetus käyttöön
majakka:~# cp /etc/sysctl.conf /etc/sysctl.conf.bak majakka:~# echo "kernel.core_uses_pid = 1" >> /etc/sysctl.conf majakka:~# sysctl -p kernel.core_uses_pid = 1 majakka:~#
peravaunu:~# cp /etc/sysctl.conf /etc/sysctl.conf.bak peravaunu:~# echo "kernel.core_uses_pid = 1" >> /etc/sysctl.conf peravaunu:~# sysctl -p kernel.core_uses_pid = 1 peravaunu:~#
Lopuksi käynnistetään heartbeat uudestaan ja tutkitaan järjestelmän toimivuutta.
majakka:~# invoke-rc.d heartbeat restart Stopping High-Availability services: Done. Waiting to allow resource takeover to complete: Done. Starting High-Availability services: 2009/04/02_17:10:00 INFO: Resource is stopped Done. majakka:~#
peravaunu:~# invoke-rc.d heartbeat restart Stopping High-Availability services: Done. Waiting to allow resource takeover to complete: Done. Starting High-Availability services: 2009/04/02_17:10:03 INFO: Resource is stopped Done. peravaunu:~#
Ennen testaamista, lisätään palvelulle sisältöä eli laitetaan sivu näkyviin.
majakka:~# mv /var/www/index.lighttpd.html /var/www/old.index.html majakka:~# echo "Tama on $(uname -n)" > /var/www/index.html majakka:~#
peravaunu:~# mv /var/www/index.lighttpd.html /var/www/old.index.html peravaunu:~# echo "Tama on $(uname -n)" > /var/www/index.html peravaunu:~#
Testaamista ja lisää testaamista... selaimella osoitteeseen http://192.168.20.30/
Seuraavaksi tullaan tekemään esimerkki, jossa parannetaan julkaisujärjestelmän vikasietoisuutta hajauttamalla WWW-palvelu kahdelle eri koneelle. Toinen koneista on jatkuvasti toiminnassa ja toinen on jouten. Julkaisujärjestelmän tiedosto ja tietokanta sijaitsee kolmannella koneella eli koneessa on NFS- ja MySQL-palvelinohjelmat.
NFS on Unix- ja Linux-järjestelmissä suosittu verkon läpi toimiva tiedostojärjestelmä. NFS:n avulla voidaan suorittaa esimerkiksi varmuuskopiointia tai vaikkapa työaseman virtualisointia, niin että kaikki aseman tiedostot sijaitsevat verkossa. Debianissa NFS-palvelimen käyttöönotto tapahtuu seuraavasti.
Laitetaan ensiksi verkkoyhteyksiin liittyvät asiat kuntoon
nas:~# pico /etc/hosts
127.0.0.1 localhost 192.168.1.10 majakka 192.168.1.20 peravaunu
nas:~# ping majakka -c1 PING majakka (192.168.1.10) 56(84) bytes of data. 64 bytes from majakka (192.168.1.10): icmp_seq=1 ttl=51 time=62.2 ms --- majakka ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 62.239/62.239/62.239/0.000 ms nas:~# ping peravaunu -c1 PING peravaunu (192.168.1.20) 56(84) bytes of data. 64 bytes from peravaunu (192.168.1.20): icmp_seq=1 ttl=51 time=62.2 ms --- peravaunu ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 62.239/62.239/62.239/0.000 ms nas:~#
Asennetaan palvelimeen NFS-palvelinohjelma
nas:~# apt-get install nfs-kernel-server
Asennuksen jälkeen palvelimelle tehdään kansio, joka annetaan WWW-palvelimien käyttöön.
nas:~# mkdir -p /srv/nfs/www nas:~# chmod a+rwx /srv/nfs/www nas:~# pico /etc/exports ---- # /etc/exports: the access control list for filesystems which may be exported # to NFS clients. See exports(5). # # Example for NFSv2 and NFSv3: # /srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check) # # Example for NFSv4: # /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check) # /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check) # /srv/nfs/www majakka(rw,sync,no_subtree_check,no_root_squash) /srv/nfs/www peravaunu(rw,sync,no_subtree_check,no_root_squash) ---- nas:~# exportfs -rv exporting majakka:/srv/nfs/www exporting peravaunu:/srv/nfs/www nas:~#
Siirrytään asiakaskoneille!
Asennetaan NFS:n mahdollistava paketti ja mountataan jaettu kansio majakalle. Lopuksi tehdään kansioon testaamista varten tiedosto.
Tämä tehdään molemmille koneille eli majakalle ja peravaunulle
majakka:~# apt-get install nfs-common
majakka:~# mkdir /srv/www majakka:~# mount 192.168.1.40:/srv/nfs/www /srv/www majakka:~# cd /srv/www/ majakka:/srv/www# ls -la yhteensä 8 drwxrwxrwx 2 root root 4096 3.9.2009 . drwxr-xr-x 3 root root 4096 1.9. 19:20 .. majakka:/srv/www# touch test.txt
Samaan aikaan palvelimella
nas:~# cd /srv/nfs/www/ nas:/srv/nfs/www# ls -la yhteensä 8 drwxrwxrwx 2 root root 4096 3.9. 09:41 . drwxr-xr-x 3 root root 4096 3.9. 08:46 .. -rw-r--r-- 1 root root 0 3.9. 09:41 test.txt nas:/srv/nfs/www#
Ja peravaunulla
peravaunu:~# cd /srv/www/ peravaunu:/srv/www# ls -la yhteensä 8 drwxrwxrwx 2 root root 4096 3.9. 09:41 . drwxr-xr-x 3 root root 4096 3.9. 08:46 .. -rw-r--r-- 1 root root 0 3.9. 09:41 test.txt peravaunu:/srv/www#
Ensiksi asennus seuraavalla komennolla
nas:~# apt-get install mysql-server
Mahdollistetaan ulkopuoliset yhteydenotot tekemällä seuraava muutos
nas:~# cd /etc/mysql/ nas:/etc/mysql# pico my.cnf
# Instead of skip-networking the default is now to listen only on # localhost which is more compatible and is not less secure. #bind-address = 127.0.0.1
nas:/etc/mysql# /etc/init.d/mysql restart Stopping MySQL database server: mysqld. Starting MySQL database server: mysqld. Checking for corrupt, not cleanly closed and upgrade needing tables.. nas:/etc/mysql#
Tehdään tietokanta, luodaan käyttäjät ja annetaan käyttäjille oikeuksia.
mysql -u root -pSala1234 CREATE DATABASE drupal; GRANT ALL ON drupal.* TO 'drupal'@'majakka' IDENTIFIED BY 'salasana'; GRANT ALL ON drupal.* TO 'drupal'@'peravaunu' IDENTIFIED BY 'salasana'; exit;
Molemmille koneille (majakka ja peravaunu) tehdään seuraava
Muokataan Lighttpd toimivaksi eli ensiksi vaihdetaan oletuskansio.
majakka:~# cd /etc/lighttpd/ majakka:/etc/lighttpd# pico lighttpd.conf
## a static document-root, for virtual-hosting take look at the ## server.virtual-* options server.document-root = "/srv/www/"
Ja lopuksi mahdollistetaan PHP:n ja MySQL:n käyttö.
majakka:/etc/lighttpd# apt-get install php5-cgi php5-mysql
majakka:/etc/lighttpd# lighttpd-enable-mod Available modules: auth cgi fastcgi proxy rrdtool simple-vhost ssi ssl status userdir Already enabled modules: Enable module: fastcgi Enabling fastcgi: ok Run /etc/init.d/lighttpd force-reload to enable changes majakka:/etc/lighttpd# /etc/init.d/lighttpd restart Stopping web server: lighttpd. Starting web server: lighttpd. majakka:/etc/lighttpd#
Seuraava tehdään vain toiselle koneelle (majakka). Tämähän näkyy NFS:n avulla myös peravaunu-koneella!
Drupalin asentaminen aloitetaan hakemalla uusin vakaa versio osoitteesta http://drupal.org
majakka:~# cd majakka:~# wget http://ftp.drupal.org/files/projects/drupal-6.16.tar.gz --2010-04-21 15:07:22-- http://ftp.drupal.org/files/projects/drupal-6.16.tar.gz Selvitetään osoitetta ftp.drupal.org... 140.211.166.134 Yhdistetään palvelimeen ftp.drupal.org|140.211.166.134|:80... yhdistetty. HTTP-pyyntö lähetetty, odotetaan vastausta... 200 OK Pituus: 1090616 (1,0M) [application/x-gzip] Tallennetaan kohteeseen ”drupal-6.16.tar.gz” 100%[=============================================================================>] 1 090 616 290K/s in 4,7s 2010-04-21 15:07:27 (228 KB/s) - ”drupal-6.16.tar.gz” tallennettu [1090616/1090616] majakka:~# tar -xzf drupal-6.16.tar.gz majakka:~# mv drupal-6.16/* /srv/www/
Haetaan kielitiedosto
majakka:~# cd /srv/www/ majakka:/srv/www# wget http://ftp.drupal.org/files/projects/fi-6.x-1.1.tar.gz --2010-04-21 15:26:02-- http://ftp.drupal.org/files/projects/fi-6.x-1.1.tar.gz Selvitetään osoitetta ftp.drupal.org... 140.211.166.134 Yhdistetään palvelimeen ftp.drupal.org|140.211.166.134|:80... yhdistetty. HTTP-pyyntö lähetetty, odotetaan vastausta... 200 OK Pituus: 214969 (210K) [application/x-gzip] Tallennetaan kohteeseen ”fi-6.x-1.1.tar.gz” 100%[============================================================================>] 214 969 116K/s in 1,8s 2010-04-21 15:26:05 (116 KB/s) - ”fi-6.x-1.1.tar.gz” tallennettu [214969/214969] majakka:/srv/www# tar -xzf fi-6.x-1.1.tar.gz majakka:/srv/www# rm fi-6.x-1.1.tar.gz majakka:/srv/www#
Vaihdetaan omistus root-käyttäjään
majakka:/srv/www# chown -R root.root /srv/www/
Ota selaimella yhteys klusterilla toteutettuun IP-osoitteeseen ja suoritetaan asennus loppuun Huomaa, että nyt asennusvaiheessa määriteltävä tietokantayhteys ohjaa paikalliseen tietokantaan! Ei toimi tässä tapauksessa!
Asennuksen ensimmäinen vaihe eli tämä kehoitus tulee selaimella suoritettavassa asennuksesta
majakka:/srv/www# cp /srv/www/sites/default/default.settings.php /srv/www/sites/default/settings.php majakka:/srv/www# chmod a+rwx /srv/www/sites/default/settings.php majakka:/srv/www# mkdir /srv/www/sites/default/files majakka:/srv/www# chmod a+rwx /srv/www/sites/default/files
Muutetaan oikeudet asennusprosessissa tulleesta vaatimuksesta
majakka:/srv/www# chmod a-w,a+rx /srv/www/sites/default/settings.php majakka:/srv/www# chown www-data:www-data /srv/www/sites/default/files majakka:/srv/www# chmod a-rwx,u+rwx /srv/www/sites/default/files
Drupal on nyt käyttövalmis. Otetaan selaimella yhteys klusteroituun IP-osoitteeseen. Testataan järjestelmän toimivuutta ajamalla majakka alas ja varmistetaan, että toiminta siirtyy peravaunulle. Tehdään drupaliin muutoksia. Käynnistetään majakka ja testataan, että muutokset siirtyvät majakalle.
Perusklusteroinnin on se, että yksi osapuoli on aktiivinen ja loput jäsenet ovat reservissä. Laitteiden käyttöaste pienenee, koska vikojen esiintyminen saattaa olla hyvinkin harvinaista. Reservissä olevat laitteet kuluttavat turhaan sähköä ollessaan niin sanotusti joutokäynnillä. Pitää siis pystyä tehostamaan palvelinkokonaisuuden tehokkuutta.
Kuormantasaaja on laite, jolla voidaan jakaa palvelimille tulevaa kuormaa. Tässä tehtävässä tullaan käyttämään LVS-projektin työkaluja ja ohjelmistoja. Tehtävä lähtee liikkeelle asentamalla tarvittavat ohjelmistot. Ensimmäisenä yksinkertaisin mahdollinen kuormantasausesimerkki:
balancer:~# apt-get install ipvsadm
balancer:~# cd /etc/network
balancer:/etc/network# ifdown eth0
balancer:/etc/network# pico interfaces
----
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
address 192.168.20.30
netmask 255.255.255.0
gateway 192.168.20.1
auto eth0:0
iface eth0:0 inet static
address 192.168.20.40
netmask 255.255.255.255
----
balancer:/etc/network# ifup eth0
----
balancer:/etc/network# ifup eth0:0
----
balancer:/etc/network# ipvsadm -A -t 192.168.20.40:80
balancer:/etc/network# ipvsadm -a -t 192.168.20.40:80 -r 192.168.20.10
balancer:/etc/network# ipvsadm -a -t 192.168.20.40:80 -r 192.168.20.20
balancer:/etc/network# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.20.40:80 wlc
-> 192.168.20.10:80 Route 1 0 0
-> 192.168.20.20:80 Route 1 0 0
balancer:/etc/network#
majakka:~# cd /etc/network
majakka:/etc/network# pico interfaces
----
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
address 192.168.20.10
netmask 255.255.255.0
gateway 192.168.20.1
iface lo:0 inet static
address 192.168.20.40
netmask 255.255.255.255
up sysctl -p > /dev/null
----
majakka:/etc/network# ifup lo:0
peravaunu:~# cd /etc/network
peravaunu:/etc/network# pico interfaces
----
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
address 192.168.20.20
netmask 255.255.255.0
gateway 192.168.20.1
iface lo:0 inet static
address 192.168.20.40
netmask 255.255.255.255
up sysctl -p > /dev/null
----
peravaunu:/etc/network# ifup lo:0
Tässä tehtävässä ei tarvita heartbeat-ohjelmaa mihinkään, joten poistetaan se käytöstä. Lisäksi käynnistetään lighttpd, joka toimii palvelujen tarjoajana.
peravaunu:~# invoke-rc.d heartbeat stop Stopping High-Availability services: Done. peravaunu:~# invoke-rc.d lighttpd start Starting web server: lighttpd. peravaunu:~#
majakka:~# invoke-rc.d heartbeat stop Stopping High-Availability services: Done. majakka:~# invoke-rc.d lighttpd start Starting web server: lighttpd. majakka:~#
Seuraavaksi tehdään sisältöä WWW-palvelun tarjottavaksi. Tämän sisällön perusteella kuormantasaaaja päättää, kenelle tuleva kuorman siirtää.
majakka:~# cd /var/www/ majakka:/var/www# echo "Testisivu" > test.html
peravaunu:~# echo "Testisivu" > /var/www/test.html
Lopuksi pitää muokata koneiden ARP- ja IP-asetuksia.
balancer:/etc/default# echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf balancer:/etc/default# sysctl -p
majakka:~# echo "net.ipv4.conf.eth0.arp_ignore = 1" >> /etc/sysctl.conf majakka:~# echo "net.ipv4.conf.eth0.arp_announce = 2" >> /etc/sysctl.conf majakka:~# echo "net.ipv4.conf.lo.arp_ignore = 1" >> /etc/sysctl.conf majakka:~# echo "net.ipv4.conf.lo.arp_announce = 2" >> /etc/sysctl.conf majakka:~# echo "net.ipv4.conf.all.arp_ignore = 1" >> /etc/sysctl.conf majakka:~# echo "net.ipv4.conf.all.arp_announce = 2" >> /etc/sysctl.conf majakka:~# sysctl -p net.ipv4.conf.eth0.arp_ignore = 1 net.ipv4.conf.eth0.arp_announce = 2 net.ipv4.conf.lo.arp_ignore = 1 net.ipv4.conf.lo.arp_announce = 2 net.ipv4.conf.all.arp_ignore = 1 net.ipv4.conf.all.arp_announce = 2
peravaunu:~# echo "net.ipv4.conf.eth0.arp_ignore = 1" >> /etc/sysctl.conf peravaunu:~# echo "net.ipv4.conf.eth0.arp_announce = 2" >> /etc/sysctl.conf peravaunu:~# echo "net.ipv4.conf.lo.arp_ignore = 1" >> /etc/sysctl.conf peravaunu:~# echo "net.ipv4.conf.lo.arp_announce = 2" >> /etc/sysctl.conf peravaunu:~# echo "net.ipv4.conf.all.arp_ignore = 1" >> /etc/sysctl.conf peravaunu:~# echo "net.ipv4.conf.all.arp_announce = 2" >> /etc/sysctl.conf peravaunu:~# sysctl -p net.ipv4.conf.eth0.arp_ignore = 1 net.ipv4.conf.eth0.arp_announce = 2 net.ipv4.conf.lo.arp_ignore = 1 net.ipv4.conf.lo.arp_announce = 2 net.ipv4.conf.all.arp_ignore = 1 net.ipv4.conf.all.arp_announce = 2
Sitten testaamaaan.
balancer:~# apt-get install ldirectord-2 ---- balancer:/etc/ha.d# mkdir conf balancer:/etc/ha.d# cd conf balancer:/etc/ha.d/conf# pico ldirectord.cf
checktimeout=10 checkinterval=5 autoreload=no quiescent=no virtual = 192.168.20.40:80 protocol = tcp scheduler = rr real = 192.168.20.10:80 gate real = 192.168.20.20:80 gate request = "test.html" receive = "Testisivu" checktype=negotiate service=http
balancer:/etc/ha.d/conf# invoke-rc.d ldirectord start balancer:/etc/ha.d/conf# watch -n 1 ipvsadm -Ln ---- Every 1,0s: ipvsadm -Ln Tue Apr 7 18:41:47 2009 IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 213.250.86.90:80 rr -> 213.250.86.82:80 Route 1 0 2 -> 213.250.86.81:80 Route 1 0 0
Ja testaamaan...