Aus verschiedenen Gründen verwenden wir folgende Partitionierung.
| Mountpoint | Dateisystem | Verwendung | Partitionstyp | Partitionsgröße |
|---|---|---|---|---|
| "/" | JFS/ext4 | System | primär | 10-20GB, je nach Plattengröße und Verwendung |
| swap | swap | System | primär | 1-2 mal RAM, je nach RAM-Größe und Verwendung |
| "/tmp" | JFS/ext4 | System | primär | (bei Bedarf) je nach Plattengröße und Verwendung |
| LVM | LVM | DRBD | primär | Rest |
| "openQRM" | ext3/ext4 | openQRM | LV | je nach Verwendung |
Beispiel:
In dieser Konfiguration werden drei (evtl. auch vier) primäre Partitionen angelegt:
Alle weiteren Partitionen werden im LVM (DRBD) angelegt. Evtl. kann man bei besonderem Bedarf noch eine vierte primäre Partition für "/tmp" anlegen, denn auf dem LVM darf keine "swap"- oder "/tmp"-Patrition liegen, da das LVM ja zwischen den DRBD-Rechnern repliziert wird!
# blkid /dev/sda1: LABEL="root" UUID="144db64d-6b66-4060-9a9a-2eb4f48df271" TYPE="jfs" /dev/sda2: UUID="7e3b4478-7eaf-4e76-9cc0-c0f3e0547dfc" TYPE="swap" /dev/sda3: UUID="Us7JBP-MRom-46Bf-kOMP-4v7F-XgwM-aSgisv" TYPE="LVM2_member" /dev/drbd1: UUID="Us7JBP-MRom-46Bf-kOMP-4v7F-XgwM-aSgisv" TYPE="LVM2_member" /dev/mapper/data-mysql: UUID="34998abd-502f-4e89-ac38-22d89b8d691a" TYPE="jfs" /dev/mapper/data-etcmysql: UUID="37f73b7e-07cd-402a-b134-0fb484379f37" TYPE="jfs" /dev/mapper/data-srcopenqrm: UUID="ffedb7fd-9730-4025-9978-9eefc3db752d" TYPE="jfs" /dev/mapper/data-openqrm: UUID="ff8f9149-740b-4e8f-993c-e6992e58125f" TYPE="jfs" /dev/mapper/data-etcnagios3: UUID="4c6c48a0-d664-4b8e-9910-de6da2e1e5f0" TYPE="jfs" /dev/mapper/data-etcnagiosplugins: UUID="9847ccf4-fb56-4fc6-80e9-2c88f23bebf0" TYPE="jfs" /dev/mapper/data-nagios: UUID="007a08ad-7026-4d1b-8fb7-2572f227e078" TYPE="jfs" /dev/mapper/data-nagios3: UUID="7f1cd2e4-9f01-452a-b10f-5bc9f0af6482" TYPE="jfs" /dev/mapper/data-nagiosplugins: UUID="d47cc159-5741-400b-af6e-2de6be4de219" TYPE="jfs" /dev/mapper/data-collectd: UUID="00cc6061-6b69-41ad-8836-ba09932558f9" TYPE="jfs" /dev/mapper/data-etccollectd: UUID="0365d73d-84c9-421f-bd6f-97e144af8472" TYPE="jfs" /dev/mapper/data-libnagios: UUID="2778c30b-033e-4020-bd27-938009384175" TYPE="jfs" /dev/mapper/data-configs: UUID="3f76e099-e3b0-4104-8ec8-b6565d7b3aeb" TYPE="jfs"
| Mountpoint | Dateisystem | Verwendung | Partitionstyp | Partitionsgröße |
|---|---|---|---|---|
| "/" | JFS/ext4 | System | primär | 8-20GB, je nach Plattengröße und Verwendung |
| LVM | LVM | dynamisch | primär | Rest |
| tmp | JFS/ext4 | System | LV | 4-100GB, je nach Verwendung |
| swap | swap | System | LV | 1-2 mal RAM, je nach RAM-Größe und Verwendung |
Beispiel:
In dieser Konfiguration werden zwei primäre Partitionen angelegt:
Alle weiteren Partitionen (einschl. "swap" und "/tmp") werden im LVM angelegt.
# blkid /dev/sda1: LABEL="root" UUID="144db64d-6b66-4060-9a9a-2eb4f48df271" TYPE="jfs" /dev/sda2: UUID="Us7JBP-MRom-46Bf-kOMP-4v7F-XgwM-aSgisv" TYPE="LVM2_member" /dev/mapper/data-swap: UUID="34998abd-502f-4e89-ac38-22d89b8d691a" TYPE="swap" /dev/mapper/data-tmp: UUID="37f73b7e-07cd-402a-b134-0fb484379f37" TYPE="jfs"
| Dateisysteme | Vorteile | Nachteile |
|---|---|---|
| ext3 | sehr verbreitet | erfordert in regelmäßigen Abständen einen Dateisystem-Check; Dateisystem-Check ist sehr langsam; Plattenkapazität wird schlecht ausgenutzt; statische Inodes, d.h. wenn man eine Partition vergrößert, dann können nur größere Dateien aber nicht mehr Dateien auf dem Dateisystem/Volumen abgelegt werden |
| ext4 | etwas schneller und robuster gegen Hardwaredefekte als ext3; schnellster Dateisystem-Check von allen Linux-Dateisystemen | erfordert in regelmäßigen Abständen einen Dateisystem-Check; Dateisystem-Check ist sehr langsam; Plattenkapazität wird schlecht ausgenutzt; etwas höheres Daten-Risiko als ext3 bei Systemausfall; statische Inodes, d.h. wenn man eine Partition vergrößert, dann können nur größere Dateien aber nicht mehr Dateien auf dem Dateisystem/Volumen abgelegt werden |
| xfs | schnellstes Dateisystem unter Linux; es fragmentiert nicht; kann auf identischer Partition 15% mehr Daten speichern als ext3 und ext4 | extrem hohes Daten-Risiko bei Systemausfall, openQRM unterstützt es nicht out-of-the-Box; dynamische Inodes, d.h. es können immer beliebig viele Dateien auf dem Dateisystem/Volumen abgelegt werden, auch nach einer Dateisystemvergrößerung |
| jfs | fast so schnell wie xfs; vergleichbare Datensicherheit wie ext3; zweit-schnellster Dateisystem-Check von allen Linux-Dateisystemen; kann auf identischer Partition 15% mehr Daten speichern als ext3 und ext4 | geringere Verbreitung als ext* und xfs, openQRM unterstützt es nicht out-of-the-Box; dynamische Inodes, d.h. es können immer beliebig viele Dateien auf dem Dateisystem/Volumen abgelegt werden, auch nach einer Dateisystemvergrößerung |
Die VM's unter openQRM sollten, um Probleme und Nebeneffekte zu vermeiden, ein Dateisystem bekommen, welches out-of-the-Box von openQRM unterstützt wird, also ext3. Ausserdem ist an vielen Stellen im openQRM-Code ext3 hard gecodet…
Man kann openQRM auch beibringen an Stelle von ext3 das neue ext4 als Standarddateisystem zu verwenden:
# for i in $(egrep -r 'mkfs|mke2fs' openqrm | awk -F':' '{print $1}' | sort | uniq);do sed -i 's/mkfs.ext3/mkfs.ext4 -F/g;s/mke2fs -j/mke2fs -F -t ext4/g' ${i} ; done
Ab jetzt ist ext4 das Standarddateisystem.
Alle vom Betriebssystem verwalteten Partitionen sollten, auf Grund seiner Vorteile (siehe Tabelle oben), das JFS bekommen. Bei großen Partitionen, wo es nicht um Platz geht, sondern auf einen schnellen fsck ankommt, sollte ext4 eingesetzt werden. Aktuelle Tests mit einer 100GB-Partition, auf der ca. 3,5 Mio. Dateien lagen, haben gezeigt, das hier der fsck von ext4 deutlich schneller war als der von JFS.
# aptitude update && aptitude install bridge-utils ifenslave net-tools ethtool bmon sharutils
Editieren der /etc/network/interfaces
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet manual
auto eth1
iface eth1 inet manual
auto eth2
iface eth2 inet manual
auto eth3
iface eth3 inet manual
auto eth4
iface eth4 inet manual
auto eth5
iface eth5 inet static
address 172.20.10.1
netmask 255.255.255.0
network 172.20.10.0
broadcast 172.20.10.255
auto bond0
iface bond0 inet manual
slaves eth0 eth1
bond_mode 1
bond_miimon 100
bond_updelay 200
bond_downdelay 200
auto bond1
iface bond1 inet manual
slaves eth2 eth3
bond_mode 1
bond_miimon 100
bond_updelay 200
bond_downdelay 200
auto br0
iface br0 inet static
address 10.10.5.81
netmask 255.255.255.0
network 10.10.5.0
broadcast 10.10.5.255
bridge_ports bond0
bridge_fd 9
bridge_hello 2
bridge_maxage 12
bridge_stp off
dns-nameservers 10.10.5.100
dns-search oqrm.victorvox.net
auto br1
iface br1 inet static
address 10.10.4.81
netmask 255.255.255.0
network 10.10.4.0
broadcast 10.10.4.255
bridge_ports bond1
bridge_fd 9
bridge_hello 2
bridge_maxage 12
bridge_stp off
dns-search oqrm.victorvox.net
# aptitude update && aptitude install bridge-utils ifenslave net-tools ethtool bmon sharutils
Editieren der /etc/network/interfaces
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet manual
auto eth1
iface eth1 inet manual
auto eth2
iface eth2 inet manual
auto eth3
iface eth3 inet manual
auto eth4
iface eth4 inet manual
auto eth5
iface eth5 inet static
address 172.20.10.2
netmask 255.255.255.0
network 172.20.10.0
broadcast 172.20.10.255
auto bond0
iface bond0 inet manual
slaves eth0 eth1
bond_mode 1
bond_miimon 100
bond_updelay 200
bond_downdelay 200
auto bond1
iface bond1 inet manual
slaves eth2 eth3
bond_mode 1
bond_miimon 100
bond_updelay 200
bond_downdelay 200
auto br0
iface br0 inet static
address 10.10.5.82
netmask 255.255.255.0
network 10.10.5.0
broadcast 10.10.5.255
bridge_ports bond0
bridge_fd 9
bridge_hello 2
bridge_maxage 12
bridge_stp off
dns-nameservers 10.10.5.100
dns-search oqrm.victorvox.net
auto br1
iface br1 inet static
address 10.10.4.82
netmask 255.255.255.0
network 10.10.4.0
broadcast 10.10.4.255
bridge_ports bond1
bridge_fd 9
bridge_hello 2
bridge_maxage 12
bridge_stp off
dns-search oqrm.victorvox.net
Prüfen der Netzwerkkonfiguration mit brctl. Die Ausgabe sollte in etwa folgendem entsprechen:
root@rbopenqrm01:~# brctl show bridge name bridge id STP enabled interfaces br0 8000.a4badb1fa2c0 no bond0 br1 8000.001b215e9100 no bond1
# 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
# pre-up /sbin/ip link set eth0 mtu 4132
auto eth0
iface eth0 inet manual
bond-master bond0
bond-primary eth0 eth1
pre-up /sbin/ip link set eth0 mtu 4132
auto eth1
iface eth1 inet manual
bond-master bond0
bond-primary eth0 eth1
pre-up /sbin/ip link set eth1 mtu 4132
auto bond0
iface bond0 inet manual
slaves none
bond_mode 1
bond_miimon 100
bond_updelay 200
bond_downdelay 200
# post-up /sbin/ip link set bond0 mtu 4132
auto br0
iface br0 inet static
address 10.10.5.20
netmask 255.255.255.0
network 10.10.5.0
broadcast 10.10.5.255
bridge_ports bond0
bridge_fd 9
bridge_hello 2
bridge_maxage 12
bridge_stp off
# post-up /sbin/ip link set br0 mtu 4132
dns-nameservers 10.10.5.80
dns-search oqrm.victorvox.net
auto eth2
iface eth2 inet manual
bond-master bond1
bond-primary eth2 eth3
auto eth3
iface eth3 inet manual
bond-master bond1
bond-primary eth2 eth3
auto bond1
iface bond1 inet manual
slaves none
bond_mode 1
bond_miimon 100
bond_updelay 200
bond_downdelay 200
auto br1
iface br1 inet manual
bridge_ports bond1
bridge_fd 9
bridge_hello 2
bridge_maxage 12
bridge_stp off
auto eth4
iface eth4 inet manual
bond-master bond2
bond-primary eth4 eth5
auto eth5
iface eth5 inet manual
bond-master bond2
bond-primary eth4 eth5
auto bond2
iface bond2 inet manual
slaves none
bond_mode 1
bond_miimon 100
bond_updelay 200
bond_downdelay 200
auto br2
iface br2 inet manual
bridge_ports bond2
bridge_fd 9
bridge_hello 2
bridge_maxage 12
bridge_stp off
# /etc/fstab: static file system information. # # Use 'blkid -o value -s UUID' to print the universally unique identifier # for a device; this may be used with UUID= as a more robust way to name # devices that works even if disks are added and removed. See fstab(5). # # <file system> <mount point> <type> <options> <dump> <pass> proc /proc proc nodev,noexec,nosuid 0 0 # / was on /dev/sda1 during installation UUID=f7d68bba-5104-4694-a010-92a07f14c264 / ext4 errors=remount-ro 0 1 UUID=c57582c3-9cf9-46fe-a3ca-a693e02dc9d9 none swap defaults 0 0 10.10.5.100:/data/cdimages /var/lib/kvm/images nfs rw,soft,bg,intr,noauto 0 0 /dev/mapper/system-src /usr/src ext4 defaults 0 1 /dev/mapper/data-kvm /var/lib/kvm ext4 defaults 0 1
Das Vorgehen zur DRBD-Installation und -Inbetriebnahme steht auf einer eigenen Seite:
# aptitude update && aptitude install openntpd # update-rc.d -f openntpd remove # update-rc.d openntpd defaults # /etc/init.d/openntpd stop
# vi /etc/openntpd/ntpd.conf
server ntp.ubuntu.com server 192.168.205.61 server 192.168.205.56 server 192.168.13.231
# mv /etc/openntpd/ntpd.conf /opt/etc/ # ln -s /opt/etc/ntpd.conf /etc/openntpd/ntpd.conf # /etc/init.d/openntpd start
Editieren der /etc/hosts
... 10.10.5.80 rbopenqrm.oqrm.victorvox.net rbopenqrm 10.10.5.81 rbopenqrm01.oqrm.victorvox.net rbopenqrm01 10.10.5.82 rbopenqrm01.oqrm.victorvox.net rbopenqrm02 ...
# aptitude update && aptitude install heartbeat
Konfiguration /etc/ha.d/ha.cf
#Logging logfacility local0 autojoin none # Heartbeart communication timing keepalive 2 deadtime 30 warntime 10 initdead 60 mcast eth3 239.0.0.43 694 1 0 # Don't fail back automatically auto_failback off # Heartbeat cluster members node rbstor01 node rbstor02 # Monitoring of network connection to default gateway ping 10.10.5.1 respawn hacluster /usr/lib/heartbeat/ipfail
Konfiguration /etc/ha.d/haresources
rbopenqrm01 \
IPaddr::10.10.5.80/24/br0 \
mydrbd \
drbddisk::data \
LVM::data \
Filesystem::/dev/data/mysql::/var/lib/mysql::jfs \
Filesystem::/dev/data/etcmysql::/etc/mysql::jfs \
mysql
ntp
rbopenqrm01 \
IPaddr2::10.10.5.80/24/br0:0 \
mydrbd \
drbddisk::data \
LVM::data \
fsck_jfs::/dev/data/mysql \
fsck_jfs::/dev/data/configs \
fsck_jfs::/dev/data/etcmysql \
fsck_jfs::/dev/data/etcnagios3 \
fsck_jfs::/dev/data/etcnagiosplugins \
fsck_jfs::/dev/data/nagios \
fsck_jfs::/dev/data/nagios3 \
fsck_jfs::/dev/data/nagiosplugins \
fsck_jfs::/dev/data/libnagios \
fsck_jfs::/dev/data/collectd \
fsck_jfs::/dev/data/etccollectd \
fsck_jfs::/dev/data/srcopenqrm \
fsck_jfs::/dev/data/openqrm \
Filesystem::/dev/data/mysql::/var/lib/mysql::jfs \
Filesystem::/dev/data/etcmysql::/etc/mysql::jfs \
Filesystem::/dev/data/configs::/opt/etc::jfs \
Filesystem::/dev/data/etcnagios3::/etc/nagios-plugins::jfs \
Filesystem::/dev/data/etcnagiosplugins::/etc/nagios-plugins::jfs \
Filesystem::/dev/data/nagios::/usr/share/nagios::jfs \
Filesystem::/dev/data/nagios3::/usr/share/nagios3::jfs \
Filesystem::/dev/data/nagiosplugins::/usr/share/nagios-plugins::jfs \
Filesystem::/dev/data/libnagios::/usr/lib/nagios::jfs \
Filesystem::/dev/data/collectd::/usr/share/collectd::jfs \
Filesystem::/dev/data/etccollectd::/etc/collectd::jfs \
Filesystem::/dev/data/srcopenqrm::/usr/src/openqrm::jfs \
Filesystem::/dev/data/openqrm::/usr/share/openqrm::jfs \
mysql \
ntp
Installation notwendiger Pakete
# aptitude update && aptitude install subversion build-essential nfs-kernel-server iscsitarget vblade kvm nagios3
Editieren der Proxy Settings für SVN in /etc/subversion/servers falls ein Proxy für den Download benötigt wird.
[global] http-proxy-host=10.10.5.1 http-proxy-port=3128
Editieren der wgetrc zum Download von Paketen über einen Proxy Server. Wichtig!: Nach Installation von openQRM muss dieser Proxyeintrag wieder entfernt werden. openQRM arbeitet ebenfalls mit dem wget Commando und würde sich sonst selbst nicht mehr erreichen.
# vi /etc/wgetrc https_proxy = http://10.10.5.1:3128/ http_proxy = http://10.10.5.1:3128/ ftp_proxy = http://10.10.5.1:3128/
Herunterladen der offiziellen openQRM-Quellen:
# svn co https://openqrm.svn.sourceforge.net/svnroot/openqrm openqrm
Editieren der lokalen Hosts. Der verwendete Name darf nicht in der ersten Zeile 127.0.0.1 eingetragen werden (Quelle: openQRM Doku).
root@rbopenqrm01:~# cat /etc/hosts 127.0.0.1 localhost 127.0.1.1 rbopenqrm01 10.10.5.80 rbopenqrm.oqrm.victorvox.net rbopenqrm 10.10.5.81 rbopenqrm01.oqrm.victorvox.net rbopenqrm01 10.10.5.82 rbopenqrm01.oqrm.victorvox.net rbopenqrm02 # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters
root@rbopenqrm02:~# cat /etc/hosts 127.0.0.1 localhost 127.0.1.1 rbopenqrm02 10.10.5.80 rbopenqrm.oqrm.victorvox.net rbopenqrm 10.10.5.81 rbopenqrm01.oqrm.victorvox.net rbopenqrm01 10.10.5.82 rbopenqrm01.oqrm.victorvox.net rbopenqrm02 # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters
Anpassung der /etc/default/iscsitarget
# cat /etc/default/iscsitarget ISCSITARGET_ENABLE=true
Der folgende Befehl startet die Kompilierung von openQRM. !!! Es ist sicherzustellen, das Namensauflösung und wget ordnungsgemäß funtionieren, da das "Setup" benötigte Komponenten aus dem Internet zieht.
root@rbopenqrm01:/usr/src/openqrm/trunk/src# make ...
Nach erfolgreichem Durchlauf des make sollte dieser ein weiteres Mal gestartet werden. Dieser Aufruf verläuft wesentlich schneller und auch die Ausgabe ist wesentlich kompakter. Diese Ausgabe ist nach etwaigen Fehlern zu durchsuchen.
root@rbopenqrm01:/usr/src/openqrm/trunk/src# make
Nun folgen der Aufruf von
root@rbopenqrm01:/usr/src/openqrm/trunk/src# make install
und
root@rbopenqrm01:/usr/src/openqrm/trunk/src# make start
Während der Installation wird man nach der Postfix Konfiguration gefragt. Hier wurde zunächst eine Standardkonfiguration mit Smarthost ausgewählt. Als Smarthost wurde zunächst kein System hinterlegt. Ebenfalls wird nach einem Passwort für den Nagiosadmin Benutzer gefragt. Das Nagiosadmin-Passwort ist identisch mit unseren bisherigen Nagios installationen.
Verhindern des automatischen Starts installierten Pakete
| Dienst | Bemerkung |
|---|---|
| # update-rc.d -f nfs-kernel-server remove | wird durch openQRM gestartet/beendet |
| # update-rc.d -f iscsitarget remove | wird durch openQRM gestartet/beendet |
| # update-rc.d -f vblade remove | wird durch openQRM gestartet/beendet |
| # update-rc.d -f dhcp3-server remove | wird durch openQRM gestartet/beendet |
| # update-rc.d -f apache remove | wird durch Heartbeat gestartet |
| # update-rc-d -f nagios3 remove | wird durch openQRM gestartet/beendet |
| # update-rc-d -f ndoutils remove | wird durch openQRM gestartet/beendet |
| # update-rc-d -f bind9 remove | wird durch openQRM gestartet/beendet |
| # update-rc-d -f collectd remove | wird durch openQRM gestartet/beendet |
| # update-rc-d -f tftpd-hpa remove | wird durch openQRM gestartet/beendet |
| # update-rc-d -f openqrm | wird durch Heartbeat gestartet |
Aktivierung von SSL
# a2enmod ssl # a2ensite default-ssl # /etc/init.d/apache2 restart
Auswahl der Netzwerkverbindung zur Kommunikation. Damit das Heartbeat Interface gewählt werden kann, muss während der Installation dieses System der aktive Heartbeatknoten sein. In unserem Fall wird das Interface br0:0 gewählt. Dies setzt den Wert OPENQRM_SERVER_INTERFACE in der /usr/share/openqrm/etc/openqrm-server.conf
Setzen des Datenbanktyps. Dies setzt den Wert OPENQRM_DATABASE_TYPE in der /usr/share/openqrm/etc/openqrm-server.conf
Setzen der Account-Informationen zum Datenbank Connect. OPENQRM_DATABASE_SERVER, OPENQRM_DATABASE_NAME, OPENQRM_DATABASE_USER und OPENQRM_DATABASE_PASSWORD in der /usr/share/openqrm/etc/openqrm-server.conf
Die grundlegende Konfiguraiton ist nun Beendet und das Administrationsinterface der openQRM Umgebung erreichbar. In dieser folgen die weiteren Konfigurationsschritte.
Im Plugin Manager sind nun die benötigten Plugins zu aktivieruen und zu starten. Es werden die Plugins dhcpd, dns, highavailability, image-shelf, kvm, local-server,local-storage, lvm-storage und tftpd zunächst durch klick auf Enable aktiveriert und dann durch den Button Start gestartet.
Als zweiten Schritt innerhalb der neuen Umgebung, ist nun die openQRM-Management Maschine als initiale Appliance zu hinterlegen. Dies geschieht innerhalb der Appliance-List durch einen Klick auf New Appliance
Zur Grundinstallation kann das Sourceverzeichnis der Node 1 genutzt werden. Zu diesem Zweck wird zunächst das komplette Verzeichnis auf den zweiten Knoten transferiert.
# cd /usr/share && tar czplf - ./openqrm | ssh rbopenqrm02 "(cd /usr/share/ && tar xzplvf -)"
Auf diesem Knoten wird nun zunächst ebenfalls die normale Installation der Source Pakete durchgeführt, damit alle für openQRM benötigten Pakete heruntergeladen und installiert werden. Während der Installation darf dieser Knoten nicht der primäre Heartbeatknoten sein, damit die zuvor im DRBD abgelegte Installation nicht überschrieben wird.
Nach der Installation wird auch hier der automatische Start der installierten Dienste verhindert.
root@rbopenqrm02:/usr/src/openqrm/trunk/src# make root@rbopenqrm02:/usr/src/openqrm/trunk/src# make install root@rbopenqrm02:/usr/src/openqrm/trunk/src# make start
# update-rc.d -f nfs-kernel-server remove # update-rc.d -f iscsitarget remove # update-rc.d -f vblade remove # update-rc.d -f dhcp3-server remove # update-rc.d -f apache remove # update-rc-d -f nagios3 remove # update-rc-d -f bind9 remove # update-rc-d -f collectd remove # update-rc-d -f tftpd-hpa remove # update-rc-d -f openqrm
Falls gestartet, sollten die eben installierten Dienste nun beendet werden.
# /etc/init.d/nfs-kernel-serve stop # /etc/init.d/iscsitarget stop # /etc/init.d/vblade stop # /etc/init.d/dhcp3-server stop # /etc/init.d/nagios3 apache stop # /etc/init.d/bind9 stop # /etc/init.d/collectd stop # /etc/init.d/tftpd-hpa stop # /etc/init.d/openqrm stop
Nach Beenden der Dienste, können die Inhalte der folgenden Verzeichnis gelöscht werden, da diese aus dem DRBD übernommen werden.
# rm -r /var/lib/mysql/* # rm -r /etc/mysql/* # rm -r /etc/nagios-plugins/* # rm -r /usr/share/nagios/* # rm -r /usr/share/nagios3/* # rm -r /usr/share/nagios-plugins/* # rm -r /usr/lib/nagios/* # rm -r /usr/share/collectd/* # rm -r /etc/collectd/* # rm -r /usr/src/openqrm/* # rm -r /usr/share/openqrm/*
Ubuntu 10.4 startet den tftpd-hpa nach der Installation automatisch per Upstart. Hierdurch kann der tftpd nicht durch das openqrm-Init-Script mit den richtigen Einstellungen gestartet werden. Hierdurch entsteht das Problem, das die Clients beim Boot keine Images per tftp ziehen können. Durch folgende Maßnahme lässt sich der automatische Start des tftpd-hpa verhindern.
# echo 'RUN_DAEMON="no"' > /etc/default/tftpd-hpa
Nach Aktiverung der Plugins für DHCP und DNS auf einem der Mangement Knoten werden leider die Apparmor Profile auf dem zweiten Knoten nicht angepasst hat. Dies hat zur Folge das keine lesenden oder schreibenden Zugriffe auf die Konfigurationsverzeichnisse funktionieren, obwohl die Filesystemberechtigungen dies zulassen würden. Hierzu sind folgende Anpassungen in den Apparmor Profilen der beiden Dienste notwendig:
# vi /etc/apparmor.d/usr.sbin.dhcpd3
# vim:syntax=apparmor
# Last Modified: Tue Feb 10 15:02:44 2009
# Author: Jamie Strandboge <jamie@canonical.com>
#include <tunables/global>
/usr/sbin/dhcpd3 {
...
# openQRM
/usr/share/openqrm/plugins/dhcpd/** rw,
}
# vi /etc/apparmor.d/usr.sbin.named
# vim:syntax=apparmor
# Last Modified: Fri Jun 1 16:43:22 2007
#include <tunables/global>
/usr/sbin/named {
...
/usr/share/openqrm/plugins/dhcpd/** rw,
}
Die Funktionen des lvm-storage-Plugin werden durch /usr/share/openqrm/plugins/lvm-storage/web/boot-service-lvm-storage.tgz http://rbopenqrm/openqrm/boot-service/boot-service-lvm-storage.tgz bereitgestellt. Wichtig! Bei jedem Start des openqrm-client wird diese Datei erneut vom openQRM-Server geladen und lokal entpackt. Änderungn welche auf der Ressource direkt vorgenommen werden, bleiben nur bis zum nächsten Start des openqrm-client erhalten. Dauerhafte Änderungen sind in boot-service-lvm-storage.tgz zu integrieren.
Beispiel
root@rbopenqrm01:~/build# tar xzvf /usr/share/openqrm/plugins/lvm-storage/web/boot-service-lvm-storage.tgz bin/ bin/openqrm-lvm-storage etc/ etc/init.d/ etc/init.d/lvm-storage include/ include/openqrm-plugin-lvm-storage-functions include/openqrm-plugin-lvm-storage-kernel-hook root@rbopenqrm01:~/build# vi include/openqrm-plugin-lvm-storage-functions root@rbopenqrm01:~/build# cp /usr/share/openqrm/plugins/lvm-storage/web/boot-service-lvm-storage.tgz /usr/share/openqrm/plugins/lvm-storage/web/boot-service-lvm-storage.tgz_`date +%Y%m%d_%H_%M_%S` root@rbopenqrm01:~/build# rm /usr/share/openqrm/plugins/lvm-storage/web/boot-service-lvm-storage.tgz root@rbopenqrm01:~/build# tar czvf /usr/share/openqrm/plugins/lvm-storage/web/boot-service-lvm-storage.tgz *
Die Änderungen sind nun ebenfalls in die "Binarys" und Sources von openQRM zu Übertragen! Beispiel:
root@rbopenqrm01:~/build# cp include/openqrm-plugin-lvm-storage-functions /usr/share/openqrm/plugins/lvm-storage/include/openqrm-plugin-lvm-storage-functions root@rbopenqrm01:~/build# cp include/openqrm-plugin-lvm-storage-functions /usr/src/openqrm/trunk/src/plugins/lvm-storage/include/openqrm-plugin-lvm-storage-functions
Bei jeder Anpassung der vblade-Konfiguration über die Management GUI wird der Link der vblade.conf auf das zentrale Konfigurationsverzeichnis gelöscht. Da openQRM sed -i (inplace) ohne den Parameter –follow-symlinks verwendet, wird bei jedem Aufruf der symbolische Link entfernt und wieder die reguläre Konfig an dessen Stelle gesetzt. Aus diesem Grund wurden sämtliche sed -i Aufrufe um den Parameter –follow-symlinks ergänzt. Diese Anpassung kommt ebenfalls der Bearbeitung der /etc/exports im Rahmen der NFS Konfiguration zu Gute.
# sed 's/'"sed -i"'/'"sed -i --follow-symlinks"'/g' openqrm-plugin-lvm-storage-functions
rbstor01 \
IPaddr::10.10.5.100/24/bond0 \
mydrbd \
drbddisk::data \
LVM::data \
fsck_ext3 \
fsck_jfs::/dev/data/configs \
fsck_jfs::/dev/data/nfsdata \
fsck_jfs::/dev/data/openqrm \
Filesystem::/dev/data/configs::/opt/etc/::jfs \
Filesystem::/dev/data/nfsdata::/data::jfs \
Filesystem::/dev/data/openqrm::/usr/share/openqrm \
Filesystem::/dev/data/ubuntu_904_nfs::/data/ubuntu_904_nfs::ext3 \
Filesystem::/dev/data/golden_web_904_nfs::/data/golden_web_904_nfs::ext3 \
Filesystem::/dev/data/cdimages::/data/cdimages::ext3 \
Filesystem::/dev/data/ubuntu_1004_nfs::/data/ubuntu_1004_nfs::ext3 \
Filesystem::/dev/data/virtuell_1004_nfs::/data/virtuell_1004_nfs::ext3 \
Filesystem::/dev/data/golden_web_1004_nfs::/data/golden_web_1004_nfs::ext3 \
Filesystem::/dev/data/datenablage_nfs::/data/datenablage_nfs::ext3 \
Filesystem::/dev/data/releases_nfs::/data/releases_nfs::ext3 \
Filesystem::/dev/data/rbkvm01_nfs::/data/rbkvm01_nfs::ext3 \
Filesystem::/dev/data/esx02_nfs::/data/esx02_nfs::ext3 \
Filesystem::/dev/data/rbsftp01_nfs::/data/rbsftp01_nfs::ext3 \
Filesystem::/dev/data/default_physik_nfs::/data/default_physik_nfs::ext3 \
Filesystem::/dev/data/default_virtuell_nfs::/data/default_virtuell_nfs::ext3 \
check_lsof \
vblade_stop \
openqrm-client
stop() {
log_daemon_msg "Stopping vblade daemons" "vblade"
log_progress_msg "vblade"
if [ -x /var/run/$prog/*.pid]
then
for pidfile in `ls /var/run/$prog/*.pid`
do
kill -9 `cat $pidfile`
rm -f $pidfile
done
else
for VBLADE_PID in `ps ax | grep vblade | grep -w "bond0:0 /dev/mapper" | awk {' print $1 '}`
do
kill -9 $VBLADE_PID
done
fi
echo
}
stop() {
log_daemon_msg "Stopping vblade daemons" "vblade"
log_progress_msg "vblade"
if [ -x "$(ls /var/run/$prog/*.pid | head -n1)" ]
then
for pidfile in `ls /var/run/$prog/*.pid`
do
kill -9 `cat $pidfile`
rm -f $pidfile
done
else
for VBLADE_PID in `ps ax | grep vblade | grep -w "bond0:0 /dev/mapper" | awk {' print $1 '}`
do
kill -9 $VBLADE_PID
done
fi
echo
}
Für die redundante Anbindung des Storage wurde die Funktion manage_fstab der Datei openqrm-plugin-lvm-storage-functions modifiziert. Statt einer Anpassung der fstab erfolgt nun eine Anpassung der haresources des Heartbeat Daemons. Nach Anpassung wird eine Kopie der Datei auf den jeweils anderen Cluster Knoten gemacht.
Da dieses "Script" bei jedem Start des openQRM Clients erneut vom openQRM Managementsystems ausgerollt wird, müssen Änderungen ebenfalls im Tar-Archiv /usr/share/openqrm/web/boot-service/boot-service-lvm-storage.tgz auf dem openQRM Mangementsystem erfolgen.
# vi include/openqrm-plugin-lvm-storage-functions
...
NODENAME=`hostname`
...
#function manage_fstab() {
# case "$1" in
# add)
# echo "/dev/$LVM_STORAGE_SERVER_VOLUME_GROUP/$LVM_IMAGE_NAME /$LVM_STORAGE_SERVER_VOLUME_GROUP/$LVM_IMAGE_NAME ext3 defaults 1 1" >> /etc/fstab
# ;;
# remove)
# sed -i --follow-symlinks -e "s#^/dev/$LVM_STORAGE_SERVER_VOLUME_GROUP/$LVM_IMAGE_NAME.*##g" /etc/fstab
# ;;
# esac
#}
function manage_fstab() {
case "$1" in
add)
egrep -v "check_lsof|openqrm-client" /etc/ha.d/haresources >> $TMP_FILE
echo " Filesystem::/dev/$LVM_STORAGE_SERVER_VOLUME_GROUP/$LVM_IMAGE_NAME::/$LVM_STORAGE_SERVER_VOLUME_GROUP/$LVM_IMAGE_NAME::ext3 \\" >> $TMP_FILE
echo " check_lsof \\" >> $TMP_FILE
echo " vblade_stop \\" >> $TMP_FILE
echo " openqrm-client" >> $TMP_FILE
mv $TMP_FILE /etc/ha.d/haresources
case "$NODENAME" in
rbstor01) scp /etc/ha.d/haresources rbstor02:/etc/ha.d/
;;
rbstor02) scp /etc/ha.d/haresources rbstor01:/etc/ha.d/
;;
*) echo "nothing to copy"
;;
esac
;;
remove)
sed -i --follow-symlinks -e "s#Filesystem::/dev/$LVM_STORAGE_SERVER_VOLUME_GROUP/$LVM_IMAGE_NAME.*##g" /etc/ha.d/haresources
sed -i --follow-symlinks -e "/^ $/d" /etc/ha.d/haresources
case "$NODENAME" in
rbstor01) scp /etc/ha.d/haresources rbstor02:/etc/ha.d/
;;
rbstor02) scp /etc/ha.d/haresources rbstor01:/etc/ha.d/
;;
*) echo "nothing to copy"
;;
esac
;;
esac
}