openqrm_-_grundinstallation_storage
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende Überarbeitung | |||
| openqrm_-_grundinstallation_storage [2013-06-06 08:37:53] – [/etc/drbd.d/data.res] manfred | openqrm_-_grundinstallation_storage [2016-04-12 22:50:01] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ====== openQRM - Grundinstallation Storage ====== | ||
| + | |||
| + | ===== Vorbereitende Maßnahmen ===== | ||
| + | |||
| + | ==== Netzwerk Konfiguration ==== | ||
| + | |||
| + | Detailierte Informationen zur Netzwerkeinrichtung siehe [[Netzwerkkarten bündeln - Bonding]] | ||
| + | |||
| + | * ** speicher | ||
| + | * ** speicher01 - 10.10.1.101 ** Knoten 1 | ||
| + | * ** speicher02 - 10.10.1.102 ** Knoten 2 | ||
| + | |||
| + | === speicher01 - / | ||
| + | auto lo | ||
| + | iface lo inet loopback | ||
| + | | ||
| + | auto eth0 | ||
| + | iface eth0 inet manual | ||
| + | | ||
| + | auto eth1 | ||
| + | iface eth1 inet manual | ||
| + | | ||
| + | # DRBD Kommunikations-Interface | ||
| + | auto eth2 | ||
| + | iface eth2 inet static | ||
| + | address 172.16.0.1 | ||
| + | netmask 255.255.255.0 | ||
| + | network 172.16.0.0 | ||
| + | broadcast 172.16.0.255 | ||
| + | | ||
| + | # Heartbeat Kommunikations-Interface | ||
| + | auto eth3 | ||
| + | iface eth3 inet static | ||
| + | address 172.16.1.1 | ||
| + | netmask 255.255.255.0 | ||
| + | network 172.16.1.0 | ||
| + | broadcast 172.16.1.255 | ||
| + | | ||
| + | # openQRM Kommunikations-Interface | ||
| + | auto bond0 | ||
| + | iface bond0 inet static | ||
| + | address 10.10.1.101 | ||
| + | netmask 255.255.255.0 | ||
| + | network 10.10.1.0 | ||
| + | broadcast 10.10.1.255 | ||
| + | gateway 10.10.1.1 | ||
| + | slaves eth0 eth1 | ||
| + | bond_mode 1 | ||
| + | bond_miimon 100 | ||
| + | bond_updelay 200 | ||
| + | bond_downdealy 200 | ||
| + | === speicher02 - / | ||
| + | auto lo | ||
| + | iface lo inet loopback | ||
| + | | ||
| + | auto eth0 | ||
| + | iface eth0 inet manual | ||
| + | | ||
| + | auto eth1 | ||
| + | iface eth1 inet manual | ||
| + | | ||
| + | # DRBD Kommunikations-Interface | ||
| + | auto eth2 | ||
| + | iface eth2 inet static | ||
| + | address 172.16.0.2 | ||
| + | netmask 255.255.255.0 | ||
| + | network 172.16.0.0 | ||
| + | broadcast 172.16.0.255 | ||
| + | | ||
| + | # Heartbeat Kommunikations-Interface | ||
| + | auto eth3 | ||
| + | iface eth3 inet static | ||
| + | address 172.16.1.2 | ||
| + | netmask 255.255.255.0 | ||
| + | network 172.16.1.0 | ||
| + | broadcast 172.16.1.255 | ||
| + | | ||
| + | # openQRM Kommunikations-Interface | ||
| + | auto bond0 | ||
| + | iface bond0 inet static | ||
| + | address 10.10.1.102 | ||
| + | netmask 255.255.255.0 | ||
| + | network 10.10.1.0 | ||
| + | broadcast 10.10.1.255 | ||
| + | gateway 10.10.1.1 | ||
| + | slaves eth0 eth1 | ||
| + | bond_mode 1 | ||
| + | bond_miimon 100 | ||
| + | bond_updelay 200 | ||
| + | bond_downdealy 200 | ||
| + | |||
| + | === /etc/hosts === | ||
| + | ... | ||
| + | 10.10.1.101 | ||
| + | 10.10.1.102 | ||
| + | ... | ||
| + | |||
| + | ==== DRBD Konfiguration ==== | ||
| + | Detailierte Konfigurationsanleitung siehe [[DRBD]] | ||
| + | |||
| + | === / | ||
| + | ... | ||
| + | filter = [ " | ||
| + | ... | ||
| + | / | ||
| + | global { | ||
| + | usage-count yes; | ||
| + | # minor-count dialog-refresh disable-ip-verification | ||
| + | } | ||
| + | | ||
| + | common { | ||
| + | protocol C; | ||
| + | | ||
| + | handlers { | ||
| + | pri-on-incon-degr "/ | ||
| + | pri-lost-after-sb "/ | ||
| + | local-io-error "/ | ||
| + | # fence-peer "/ | ||
| + | # split-brain "/ | ||
| + | # out-of-sync "/ | ||
| + | # before-resync-target "/ | ||
| + | # after-resync-target / | ||
| + | } | ||
| + | | ||
| + | startup { | ||
| + | # wfc-timeout degr-wfc-timeout outdated-wfc-timeout wait-after-sb; | ||
| + | wfc-timeout 0; | ||
| + | degr-wfc-timeout 120; # 2 Minuten | ||
| + | } | ||
| + | | ||
| + | disk { | ||
| + | # on-io-error fencing use-bmbv no-disk-barrier no-disk-flushes | ||
| + | # no-disk-drain no-md-flushes max-bio-bvecs | ||
| + | on-io-error | ||
| + | } | ||
| + | | ||
| + | net { | ||
| + | # sndâbuf-size rcvbuf-size timeout connect-int ping-int ping-timeout max-buffers | ||
| + | # max-epoch-size ko-count allow-two-primaries cram-hmac-alg shared-secret | ||
| + | # after-sb-0pri after-sb-1pri after-sb-2pri data-integrity-alg no-tcp-cork | ||
| + | after-sb-0pri discard-zero-changes; | ||
| + | after-sb-1pri discard-secondary; | ||
| + | after-sb-2pri disconnect; | ||
| + | } | ||
| + | | ||
| + | syncer { | ||
| + | # rate after al-extents use-rle cpu-mask verify-alg csums-alg | ||
| + | ### 100Mbps - Beispiel | ||
| + | #rate 40M; | ||
| + | ### 1Gbps - Beispiel | ||
| + | #rate 110M; | ||
| + | #al-extents 255; | ||
| + | ### 10Gbps - Beispiel | ||
| + | rate 2048M; | ||
| + | al-extents 511; | ||
| + | } | ||
| + | } | ||
| + | |||
| + | === / | ||
| + | resource data { | ||
| + | on speicher01 { | ||
| + | device | ||
| + | disk / | ||
| + | address | ||
| + | meta-disk | ||
| + | } | ||
| + | | ||
| + | on speicher02 { | ||
| + | device | ||
| + | disk /dev/sdb; | ||
| + | address | ||
| + | meta-disk internal; | ||
| + | } | ||
| + | } | ||
| + | |||
| + | |||
| + | === automatisches aushandeln der optimalen DRBD-Parameter für die Sync- und Disk-Geschwindigkeit === | ||
| + | |||
| + | Diese beiden Einstellungen haben wir mit **''" | ||
| + | sie sollten aber auch mit **''" | ||
| + | |||
| + | Die hier entscheidenden Parameter heißen **''" | ||
| + | > vi / | ||
| + | < | ||
| + | global { | ||
| + | usage-count | ||
| + | } | ||
| + | |||
| + | common { | ||
| + | startup { | ||
| + | degr-wfc-timeout | ||
| + | } | ||
| + | |||
| + | |||
| + | net { | ||
| + | ... | ||
| + | sndbuf-size 0; | ||
| + | } | ||
| + | |||
| + | disk { | ||
| + | ... | ||
| + | c-plan-ahead 0; | ||
| + | } | ||
| + | |||
| + | } | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== Partitionierung ==== | ||
| + | /dev/sda1 on / type jfs (rw, | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | |||
| + | Die VolumeGroup liegt auf dem Device /// | ||
| + | # vgs | ||
| + | VG #PV #LV #SN Attr VSize VFree | ||
| + | data | ||
| + | |||
| + | # lvs | ||
| + | LV | ||
| + | configs | ||
| + | nfsdata | ||
| + | openqrm | ||
| + | |||
| + | |||
| + | ==== Heartbeat Konfiguration ==== | ||
| + | Detailierte Konfigurationsanleitung siehe [[Heartbeat]] | ||
| + | |||
| + | |||
| + | === / | ||
| + | #Logging | ||
| + | logfacility | ||
| + | | ||
| + | | ||
| + | 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 speicher01 | ||
| + | node speicher02 | ||
| + | | ||
| + | # Monitoring of network connection to default gateway | ||
| + | ping 10.10.1.1 | ||
| + | respawn hacluster / | ||
| + | |||
| + | === / | ||
| + | speicher02 \ | ||
| + | IPaddr:: | ||
| + | mydrbd \ | ||
| + | drbddisk:: | ||
| + | LVM::data \ | ||
| + | fsck_jfs::/ | ||
| + | fsck_jfs::/ | ||
| + | fsck_jfs::/ | ||
| + | Filesystem::/ | ||
| + | Filesystem::/ | ||
| + | Filesystem::/ | ||
| + | vblade_stop | ||
| + | |||
| + | === / | ||
| + | Die Einbindung eines vblade_stop Scripts ist notwendig, da openQRM sich beim initialen Start der vblade Prozesse nicht an die Syntax des Pakets aus dem Ubuntu Repository hält. Beim Start durch die openQRM-Management-Oberfläche, | ||
| + | |||
| + | #!/bin/bash | ||
| + | |||
| + | set -e | ||
| + | # set -x | ||
| + | | ||
| + | # / | ||
| + | | ||
| + | test -x / | ||
| + | | ||
| + | . / | ||
| + | | ||
| + | RETVAL=0 | ||
| + | prog=vblade | ||
| + | | ||
| + | stop() { | ||
| + | | ||
| + | | ||
| + | if [ -x / | ||
| + | then | ||
| + | for pidfile in `ls / | ||
| + | do | ||
| + | kill -9 `cat $pidfile` | ||
| + | rm -f $pidfile | ||
| + | done | ||
| + | else | ||
| + | for VBLADE_PID in `ps ax | grep vblade | grep -w " | ||
| + | do | ||
| + | kill -9 $VBLADE_PID | ||
| + | done | ||
| + | sync | ||
| + | fi | ||
| + | echo | ||
| + | } | ||
| + | | ||
| + | case " | ||
| + | start) | ||
| + | ;; | ||
| + | stop) | ||
| + | stop | ||
| + | ;; | ||
| + | restart|force-reload) | ||
| + | ;; | ||
| + | reload) | ||
| + | ;; | ||
| + | *) | ||
| + | echo $" | ||
| + | RETVAL=1 | ||
| + | esac | ||
| + | | ||
| + | exit 0 | ||
| + | |||
| + | Nachdem die Konfigs auf beiden Server publiziert wurden sollte zunächst auf dem ersten Knoten Heartbeat gestartet werden. | ||
| + | root@speicher01:/# | ||
| + | |||
| + | root@speicher01:/# | ||
| + | Wenn der Start des Heartbeat Daemons ohne Probleme verläuft, sollte ebenfalls geprüft werden, ob der Stop der Dienste ohne Probleme verläuft. | ||
| + | root@speicher01:/# | ||
| + | Wenn auch hier keine Probleme angezeigt werden, kann ein Schwenk auf den anderen Clusterknoten getestet werden. | ||
| + | |||
| + | Also zunächst den Hearbeat auf dem ersten Knoten starten. | ||
| + | root@speicher01:/# | ||
| + | Nachdem dieser alle Ressourcen gestartet hat, den Heartbeat Daemon ebenfalls auf dem zweiten Knoten starten und einen manuellen Schwenk initiieren. | ||
| + | root@speicher02:/# | ||
| + | root@speicher01:/# | ||
| + | Nach prüfung der ordnungsgemäßen Übernahme aller Ressourcen kann zurückgeschwenkt werden. | ||
| + | root@speicher01:/# | ||
| + | root@speicher02:/# | ||
| + | |||
| + | Nachdem Heartbeat konfiguriert wurde und der Server der erste Knoten mit seiner HA-IP-Adresse zur verfügung steht, kann mit der Integration in die openQRM Umgebung begonnen werden. | ||
| + | |||
| + | ===== Integration in openQRM ===== | ||
| + | ==== Installation benötigter Pakete ==== | ||
| + | # aptitude udate && aptitude install nfs-kernel-server vblade | ||
| + | # update-rc.d -f nfs-kernel-server remove && update-rc.d -f vblade remove | ||
| + | Leider fehlt auch nach integration des openqrm-client das Tool /// | ||
| + | root@openqrm01:/# | ||
| + | |||
| + | ==== Installation openQRM-Client ==== | ||
| + | In der GUI des openQRM-Servers findet sich unter Misc-> | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Zur Integration sind also folgende Befehle nötig. Bitte beachten, dass hier bereits das HA-Interface des Clusters zur Verfügung stehen muss. Im ersten Schritt wird das Integrationsscript auf das Zielsystem kopiert. Im Anschluss wird es ausgeführt, | ||
| + | root@openqrm01:/# | ||
| + | root@openqrm01:/# | ||
| + | root@openqrm01:/# | ||
| + | Der Link des Initscripts wird nun ebenfalls auf dem zweiten Knoten angelegt. Eine Integration des zweiten Knotens per Script ist nicht notwendig, da relevante Verzeichnisse im DRBD liegen. | ||
| + | root@openqrm01:/# | ||
| + | |||
| + | Damit die Konfigurationen von vblade und nfs auf beiden Systemen zur Verfügung stehen, sind entsprechende Konfigurationsdateien ins DRBD zu verlinken. | ||
| + | root@openqrm01:/# | ||
| + | root@openqrm02:/# | ||
| + | root@openqrm01:/# | ||
| + | root@openqrm02:/# | ||
| + | |||
| + | Um ein Problem bei der Bereitstellung von AOE Storages zu vermeiden ist es notwendig die Netzwerkschnittstelle zur Bereitstellung AOEs festzulegen. Im Standard wird versucht automatisch eine Schnittstelle zu ermitteln, was aber häufig daneben geht. Es wird oftmals das erste eth0 Interface gewählt, was in unserem Fall nicht korrekt ist. | ||
| + | root@speicher01:/# | ||
| + | root@speicher02:/# | ||
| + | Da im Script zunächst die Konfigdatei durchsucht wird und erst dann eine automatische Ermittlung der Schnittstelle stattfindet, | ||
| + | |||
| + | Weitere Anpassungen zur redundanten Anbindung des Storage erfolgten durch Anpassungen an den von openQRM ausgelieferten Scripts. Da diese vom openQRM Server bereitgestellt werden, sind die Änderungen im Bereich der openQRM Management Einrichtung Dokumentiert [[openqrm_-_grundinstallation_management# | ||
| + | |||
| + | ==== Anpassungen in der GUI ==== | ||
| + | FIXME | ||
| + | |||
| + | ==== Anpassung Heartbeat Konfiguration ==== | ||
| + | Nach der Installation kann der openqrm-client in die Heartbeat Konfiguration aufgenommen werden: | ||
| + | |||
| + | / | ||
| + | speicher02 \ | ||
| + | IPaddr:: | ||
| + | mydrbd \ | ||
| + | drbddisk:: | ||
| + | LVM::data \ | ||
| + | fsck_jfs::/ | ||
| + | fsck_jfs::/ | ||
| + | fsck_jfs::/ | ||
| + | Filesystem::/ | ||
| + | Filesystem::/ | ||
| + | Filesystem::/ | ||
| + | vblade_stop \ | ||
| + | openqrm-client | ||
| + | |||
