VirtualBox, Ubuntu 9.04, Xen, OCFS2, DRBD, Heartbeat

Esittely

http://www.ubuntugeek.com/heartbeat2-xen-cluster-with-drbd8-and-ocfs2.html

VirtualBox

Tarkista asetukset

Tarkista asetukset (IO APIC, PAE, VT-x/AMD-V

Ubuntu 9.04 Server

Levyn osiointi, jossa sda3 on varattu DRBD:tä varten

Levyn osiointi, jossa #3 DRBD:tä varten

Esiasennettavat palvelut

Esiasennettavat palvelut

sudo aptitude update && sudo aptitude safe-upgrade
sudo aptitude install chkconfig

Xen

Xen asennuspaketti voidaan etsiä paketinhallinnalla esimerkiksi seuraavasti.

sudo aptitude search xen

Asennetaan Xen.

sudo aptitude install ubuntu-xen-server

OCFS2

Asennetaan tarvittavat asennuspaketit.

sudo aptitude install ocfs2-tools ocfs2console
sudo nano /etc/ocfs2/cluster.conf

Cluster.conf -tiedoston sisältö kun klusteriin on määritelty kaksi nodea.

sudo less /etc/ocfs2/cluster.conf
cluster:
  name = ocfs2
  node_count = 2

node:
  name = node1
  cluster = ocfs2
  number = 0
  ip_address = 192.168.1.37
  ip_port = 7777

node:
  name = node2
  cluster = ocfs2
  number = 1
  ip_address = 192.168.1.39
  ip_port = 7777

Suoritetaan konfigurointivelho.

sudo dpkg-reconfigure o2cb

Aktivoidaan ocfs2-palvelu käynnistymään koneen käynnistyessä.

sudo /etc/init.d/ocfs2 enable

Käynnistetään palvelut uudelleen.

sudo /etc/init.d/ocfs2 restart
sudo /etc/init.d/o2cb restart

Tarkastetaan palvelun tila.

sudo /etc/init.d/o2cb status
Module "configfs": Loaded
Filesystem "configfs": Mounted
Module "ocfs2_nodemanager": Loaded
Module "ocfs2_dlm": Loaded
Module "ocfs2_dlmfs": Loaded
Module "ocfs2_stackglue": Loaded
Filesystem "ocfs2_dlmfs": Mounted
Checking O2CB cluster ocfs2: Online
Heartbeat dead threshold = 7
  Network idle timeout: 10000
  Network keepalive delay: 5000
  Network reconnect delay: 2000
Checking O2CB heartbeat: Not active

DRBD

Asennus

Asennetaan seuraavaksi DRBD 8 suoraan lähdekoodista kääntämällä.

Haetaan tuorein versio valmistajan sivuilta, puretaan asennuspaketti ja siirretään se hakemistoon /usr/src/drbd.

wget http://oss.linbit.com/drbd/8.3/drbd-8.3.2.tar.gz
tar -xzf drbd-8.3.2.tar.gz
sudo mv drbd-8.3.2 /usr/src/.
sudo mv /usr/src/drbd-8.3.1 /usr/src/drbd

Asennetaan paketinhallinnalla kääntämistä ja asennusta varten tarvittavat riippuvuudet.

sudo aptitude install linux-headers-server linux-source make
gcc flex build-essential

Siirrytään hakemistoon /usr/src/drbd, käännetään lähdekoodi ja suoritetaan asennus.

cd /usr/src/drbd
sudo make clean all
sudo make KDIR=/usr/src/linux-headers-2.6.28-14-server/
sudo make install

Ladataan lopuksi drbd-moduli kerneliin

sudo modprobe drbd

# Note that any kernel upgrade will require you to rebuild and reinstall the DRBD kernel module to match the new kernel.

Konfigurointi

Asennuksessa luodaan esimerkkikonfiguraatiotiedosto /etc/drbd.conf, jota voidaan helposti muokata omaan käyttötarkoitukseen soveltuvaksi. Koska ajatuksena on käyttää drbd:tä kahden virtuaalikoneen yhteisenä levynä ja suorittaa live migratiota virtuaalikoneiden välillä, muokataan drbd:n konfiguraatiota siten, että se sallii kaksi primary solmuja (eli luku ja kirjoitusoikeus molemminlla solmuilla).

Kopioidaan aluksi alkuperäinen esimerkkitiedosto talteen varmuuden vuoksi ja muokataan tämän jälkeen konfiguraatiota.

sudo cp /etc/drbd.conf /etc/drbd.conf.orig
sudo nano /etc/drbd.conf

Konfigurointi

global {
  usage-count yes;
}

common {
  syncer { rate 10M; }
}

resource r0 {
  protocol C;

  handlers {
    pri-on-incon-degr "echo o > /proc/sysrq-trigger ; halt -f";
    pri-lost-after-sb "echo o > /proc/sysrq-trigger ; halt -f";
    local-io-error "echo o > /proc/sysrq-trigger ; halt -f";
    outdate-peer "/usr/lib/heartbeat/drbd-peer-outdater -t 5";
  }

  startup {
    wfc-timeout  0;
    degr-wfc-timeout 120;
    wait-after-sb;
    become-primary-on both;
  }

disk {
    on-io-error   detach;
  }

  net {
    max-buffers     2048;
    allow-two-primaries;

    after-sb-0pri discard-zero-changes;
    after-sb-1pri discard-secondary;
    after-sb-2pri disconnect;
    rr-conflict disconnect;
  }

syncer {
    rate 10M;
  }

  on node1 {
    device     /dev/drbd0;
    disk       /dev/sda3;
    address    192.168.1.37:7788;
    meta-disk  internal;
  }

  on node2 {
    device    /dev/drbd0;
    disk      /dev/sda3;
    address   192.168.1.39:7788;
    meta-disk internal;
  }
}

Konfiguroinnin jälkeen drbd-palvelun käynnistäminen antaa seuraavan ilmoituksen

sudo /etc/init.d/drbd start
WARN:
  You are using the 'drbd-peer-outdater' as fence-peer program.
  If you use that mechanism the dopd heartbeat plugin program needs
  to be able to call drbdsetup and drbdmeta with root privileges.

  You need to fix this with these commands:
  chgrp haclient /sbin/drbdsetup
  chmod o-x /sbin/drbdsetup
  chmod u+s /sbin/drbdsetup

  chgrp haclient /sbin/drbdmeta
  chmod o-x /sbin/drbdmeta
  chmod u+s /sbin/drbdmeta

Korjataan oikeudet seuraavilla komennoilla.

sudo chgrp haclient /sbin/drbdsetup
sudo chmod o-x /sbin/drbdsetup
sudo chmod u+s /sbin/drbdsetup
sudo chgrp haclient /sbin/drbdmeta
sudo chmod o-x /sbin/drbdmeta
sudo chmod u+s /sbin/drbdmeta

Luodaan DRBD-resurssi levyosiolle /dev/sda3, jolla on asennuksen jäljiltä ext3-tiedostojärjestelmä. Tämä pitää poistaa, jotta voidaan luoda DRBD-resurssi.

sudo dd if=/dev/zero bs=1M count=50000 of=/dev/sda3 ; sync

Luodaan DRBD-resurssi.

sudo drbdadm create-md r0

Määritetään väliaikaisesti node sekondääriksi.

sudo drbdadm secondary r0

Määritetään noden data validiksi ja korotetaan primääriksi.

sudo drbdadm -- --overwrite-data-of-peer primary r0

Nyt voidaan tarkastella DRBD:n tilaa seuraavilla komennoilla.

sudo /etc/init.d/drbd status
cat /proc/drbd

Luodaan seuraavaksi tiedostojärjestelmä DRBD-resurssinlevylle.

sudo mkfs.ocfs2 /dev/drbd0

Luodaan hakemisto levyosion mounttaamista varten.

sudo mkdir /drbd0

Mountataan levyosio sitä varten luotuun hakemistoon.

sudo mount.ocfs2 /dev/drbd0 /drbd0

Poistetaan /dev/sda3:n mounttaus käynnistyksen yhteydessä.

sudo nano /etc/fstab

Muokataan riviä, jolle drbd on määritelty.

/dev/drbd0     /drbd     ocfs2     _netdev     0     0

Jos riviä ei muokata, aiheutuu käynnistyksessä levyvirhe sillä osio on määritelty aiemmin liitettäväksi automaattisesti ja levyjärjestelmäksi on merkattu ext3. Optio _netdev liittää osion vasta kun verkkoyhteys on ylhäällä.

Muokataan palveluiden käynnistymistä seuraavasti

sudo chkconfig drbd --set on
sudo chkconfig o2cb --del
sudo chkconfig ocfs2 --del
sudo chkconfig o2cb --level 2345 --set on
sudo chkconfig ocfs2 --level 2345 --set on

Saadaan palvelut käynnistymään seuraavasti

chkconfig --list | grep drbd
drbd      0:off  1:off  2:on   3:on   4:on   5:on   6:off
chkconfig --list | grep ocfs2
ocfs2     0:off  1:off  2:on   3:on   4:on   5:on   6:off
chkconfig --list | grep o2cb
o2cb      0:off  1:off  2:on   3:on   4:on   5:on   6:off

Heartbeat

Luodaan heartbeatin konfiguroimista varten kolme tiedostoa

sudo touch /etc/ha.d/authkeys /etc/ha.d/ha.cf /etc/ha.d/haresources

Muokataan ha.cf-tiedosto.

sudo nano /etc/ha.d/ha.cf
keepalive 1
deadtime 10
warntime 5
initdead 120
udpport 694
ping 192.168.1.37
bcast eth0
auto_failback off
node node1
node node2
use_logd yes
compression bz2
compression_threshold 2
crm yes

Muokataan authkeys-tiedosto.

sudo nano /etc/ha.d/authkeys
auth 1
1 sha1 Tahan1Pitka3Satunnainen5Salasana7

Muutetaan tiedoston käyttöoikeudet.

sudo chmod 600 /etc/heartbeat/authkeys

Muokataan tiedostoa haresources.

sudo nano /etc/ha.d/haresources
node1 IPaddr::192.168.1.40/24 drbddisk Filesystem::/dev/drbd0::/drbd::ocfs2

Luodaan apuskriptillä Heartbeat v. 2 käyttämä cib.xml määritystiedosto ja siirretään se oikeaan hakemistoon. Nimetään haresources-tiedosto vielä uudelleen sillä Heartbeat ei käytä sitä, mutta antaa sen olemassa olosta varoituksen.

sudo /usr/lib/heartbeat/haresources2cib.py
--stdout -c ha.cf haresources > ~/cib.xml
sudo mv ~/cib.xml /var/lib/heartbeat/crm/.
sudo mv /etc/ha.d/haresources /etc/ha.d/haresources.notinuse
sudo chown hacluster:haclient /var/lib/heartbeat/crm

Nyt voidaan käynnistää Heartbeat-palvelu

sudo /etc/init.d/heartbeat start