Benutzer-Werkzeuge

Webseiten-Werkzeuge


openqrm_-_grundinstallation_management

openQRM Grundinstallation

Vorbereitung

Partitionierung

Aus verschiedenen Gründen verwenden wir folgende Partitionierung.

mit DRBD

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:

  1. root ("/")
  2. swap
  3. evtl.: tmp ("/tmp")
  4. DRBD (mit LVM darauf)

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" 

ohne DRBD

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:

  1. root ("/")
  2. LVM

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

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.

Netzwerkkonfiguration rbopenqrm01

# 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

Netzwerkkonfiguration rbopenqrm02

# 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

rbkvm0

/etc/network/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

#    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

# /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

Installation / Konfiguration DRBD

Das Vorgehen zur DRBD-Installation und -Inbetriebnahme steht auf einer eigenen Seite:

Installation/Konfiguration NTP-Server

# 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

Installation / Konfigration Heartbeat

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/Konfiguration squid/apt-proxy|apt-cache

openQRM - Management Installation

openQRM - Management Grundinstallation - Node 1

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

Apache

Aktivierung von SSL

# a2enmod ssl
# a2ensite default-ssl
# /etc/init.d/apache2 restart

openQRM - Management Konfiguration - Node 1

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.

openQRM - Aktivierung benötigter Plugins - Node 1

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.

openQRM - Anlegen der ersten Appliance - Node 1

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

openQRM - Management Installation - Node 2

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/*

openQRM - Anpassungen nach der Installation

tftpd-hpa "reparieren"

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

Apparmor Anpassungen

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,
}

openQRM - Anpassungen zur Integration des redundanten LVM-Storage

Generelles zur Anpassung von LVM-Storage-Funktionen

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

Anpassungen für AOE/vblade

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

/etc/ha.d/haresources (rbstor01)

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

/etc/ha.d/resource.d/vblade_stop (rbstor01)

alt
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
}
neu
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
}

Anpassungen für NFS

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
}
/home/http/wiki/data/pages/openqrm_-_grundinstallation_management.txt · Zuletzt geändert: von manfred