Multi-State Ressourcen ● ● ● Es gibt Ressourcen, die in mehreren Zuständen vorliegen können. Beispiel: DRBD als Master und Slave. Darstellung in pacemaker durch Superset von Klon-Ressourcen. Zusätzliche Attribute: Maximale Anzahl von Mastern im Cluster. – master­max – master­node­max Maximale Anzahl von Mastern auf einem Knoten. 20130705­LinuxCluster_Medialinx Einschub: DRBD ● DRBD ist RAID1 zwischen zwei Rechnern. node1 node2 Redundante Kommunikation Replikation auf Blockebene 20130705­LinuxCluster_Medialinx DRBD: Konfiguration resource r0 { device /dev/drbd0; disk /dev/sdb1; meta­disk internal; on node1 { address 192.168.100.1:7789; } on node2 { address 192.168.100.2:7789; } } 20130705­LinuxCluster_Medialinx Multi-State: Beispiel <master id="msDRBD"> <meta_attributes id="msDRBD­meta_attributes"> <nvpair id="meta_notify" name="notify" value="true"/> <nvpair id="meta_clone­max" name="clone­max" value="2"/> <nvpair id="meta_clone­node­max" name="clone­node­max" value="1"/> <nvpair id="meta_master­max" name="master­max" value="1"/> <nvpair id="meta_master­node­max" name="master­node­max" value="1"/> </meta_attributes> <primitive id="resDRBD" class="ocf" provider="linbit" type="drbd"/> <instance_attributes id="resource_drbd_instance_attrs"> <nvpair id="drbd_res" name="drbd_resource" value="r0"/> </instance_attributes> </master> 20130705­LinuxCluster_Medialinx Multistate Beispiel (II) primitive resDRBD ocf:linbit:drbd \ params drbd_resource="r0" ms msDRBD resDRBD meta notify="true" 20130705­LinuxCluster_Medialinx DRBD – Split Brain ● DRBD in Version 8 hat keine redundante Kommunikation. ● Was passiert, wenn diese unterbrochen wird ... ● ● – ... und der CRM den bisheriger Secondary zum Primary befördert? – Split Brain mit unterschiedlichem Datenstand! Deshalb STONITH, um sicherzustellen, dass ein fehlerhafter Knoten auch tatsächlich keinen Unfug mehr anstellen kann. Zusätzlich: Zwei sync – Schnittstellen zu einem bond zusammenfassen. Gibt u. U. auch den doppelten Durchsatz. 20130705­LinuxCluster_Medialinx DRBD in CentOS 6.4 ● ● Ab 2.6.33 ist DRBD im Kernel mit dabei. Für CentOS 6.4 gibt es Version 8.4.2 aus den elrepo Repository # rpm ­­import http://elrepo.org/RPM­GPG­KEY­elrepo.org # rpm ­Uvh \ http://elrepo.org/elrepo­release­6­5.el6.elrepo.noarch.rpm # yum install kmod­drbd84 drbd84­utils ● Eingeben der Konfiguration in /etc/drbd.conf bzw. /etc/drbd.d/ 20130705­LinuxCluster_Medialinx DRBD initialisieren ● Doku dazu siehe: http://www.drbd.org ● Auf beiden Knoten: 20130705­LinuxCluster_Medialinx – Meta-Daten auf dem Block Device einrichten: # drbdadm create­md r0 – Kernel Modul laden: # modprobe drbd – DRBD starten # drbdadm up r0 DRBD einrichten (II) ● In /proc/drbd steht jetzt der Zustand des DRBD: st:Secondary/Secondary ds:Inconsistent/Inconsistent ● ● Primären Knoten aussuchen. Wichtig vor allem, wenn es schon Daten auf einem Gerät gibt. Diesen Knoten zum Master befördern: node1# drbdadm primary ­­force r0 ● Dateisystem anlegen: node1# mkfs.ext4 /dev/drbd0 20130705­LinuxCluster_Medialinx LAB: DRBD einrichten ● Neue Festplatte hinzufügen. – Größe ungefähr 1 GB. – Neue Festplatten im laufenden Betrieb erkennen: # for i in /sys/class/scsi_host/host*/scan; do echo „­ ­ ­“ > $i; done ● Partition auf der neuen Festplatte anlegen. ● DRBD einrichten. ● Dateisystem formatieren. ● Test: – – – 20130705­LinuxCluster_Medialinx DRBD einbinden und Daten schreiben. DRBD primary auf node2 umziehen und dort einbinden. Sind die Daten verfügbar? Zusammenfassung ● Multistate Ressourcen bilden Ressourcen ab, die in unterschiedlichen Zuständen laufen. ● DRBD ist eine einfache Lösung für Shared Data im Cluster. ● DRBD integriert schön in einen Linux Cluster. 20130705­LinuxCluster_Medialinx