====== 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: - **root** ("/") - **swap** - evtl.: **tmp** ("/tmp") - **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: - **root** ("/") - **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). # # 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: * [[DRBD]] ==== 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 ==== * [[Proxy_Squid]] * [[Linux_PaketManager#debian_ubuntu]] * [[apt-cacher-ng]] ===== 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// {{:openqrm_21052010_155557.jpg?640|}} Setzen des Datenbanktyps. Dies setzt den Wert //OPENQRM_DATABASE_TYPE// in der ///usr/share/openqrm/etc/openqrm-server.conf// {{:openqrm_21052010_155603.jpg?640|}} 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// {{:openqrm_21052010_155641.jpg?640|}} 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_26052010_191905.jpg?640|}} ==== 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_21052010_164351.jpg?640|}} {{:openqrm_21052010_164402.jpg?640|}} ===== 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 #include /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 /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 }