JAH380 - Linux Server - Workshop

Näkymät
Syotec Wiki
Loikkaa: valikkoon, hakuun

Sisällysluettelo

Linux

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.

Linuxin perusrakenne

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.

Sisällysluetteloon


Virtualisointi

Koulutuspäivät aloitetaan alla olevan dokumentin läpi käymisellä!
Virtualisointidokumentti

Sisällysluetteloon


Perusklusteri

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.


Perusklusteri


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.

Verkkoasetukset

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

Heartbeat ja Lighttpd

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/


Sisällysluetteloon


Kikkailua: Julkaisujärjestelmän vikasietoisuuden parantaminen

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-palvelin

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#

MySQL-palvelin

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;

Drupal

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.

Sisällysluetteloon


Kuormantasausklusteri

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.


Kuormantasaus


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.

Kuormantasaus ja failover

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... 

Sisällysluetteloon


Klusteri kuormantasaajilla

Kuormantasaus



Sisällysluetteloon


Henkilökohtaiset työkalut