Nach der Einführung in RHCS geht es jetzt ins Eingemachte: die Installation von RHCS unter Debian, um einzelne KVM-Gäste als Dienst anzubieten.
Die Hintergründe von RHCS haben wir bereits erklärt. Die konkrete Umsetzung wird am Beispiel zweier Hosts mit einem Shared Storage erklärt, die als Service verschiedene KVM-Gäste anbieten.
In diesem Setup sind die Nodes die Maschinen, auf denen KVM läuft. Jeder darauf laufende KVM-Gast ist wiederum ein über RHCS verwalteter Dienst. Bei der Installation der KVM-Hosts ist auf mehrere Punkte zu achten:
Ein zentrales Element des RHCS ist das Shared Sotrage, auf das die Nodes gemeinsame zugreifen. In diesem Beispiel nehmen wir einen „normalen“ Rechner, und installieren auf diesem ein iSCSI-Target:
apt-get install iscsitarget iscsitarget-source echo 'ISCSITARGET_ENABLE=true' > /etc/default/iscsitarget m-a a-i iscsitarget
Hier ist zu beachten, dass das iscsi-Target korrekt bauen muss, siehe auch #566740. Eingerichtet wird die Maschine, welche das Shared Storage bereit stellt, via /etc/ietd.conf:
IncomingUser discovery_in YourSecurePwd1 OutgoingUser discovery_out YourSecurePwd2 Target YOURMACHINE:clvm1 IncomingUser node_in YourSecurePwd1 OutgoingUser node_out YourSecurePwd2 Lun 0 Path=/dev/sdx1,Type=blockio
Auf den Nodes muss das Target korrekt angesprochen werden. Dies wird in der /etc/iscsi/iscsid.conf definiert:
discovery.sendtargets.auth.authmethod = CHAP discovery.sendtargets.auth.username = discovery_in discovery.sendtargets.auth.password = YourSecurePwd1 discovery.sendtargets.auth.username_in = discovery_out discovery.sendtargets.auth.password_in = YourSecurePwd2 node.startup = automatic node.session.auth.authmethod = CHAP node.session.auth.username = node_in node.session.auth.password = YourSecurePwd1 node.session.auth.username_in = node_out node.session.auth.password_in = YourSecurePwd2
Gestartet wird der Dienst mit /etc/init.d/open-iscsi start. Vorhandene Targets werden mit den folgenden Befehlen gesucht, gelöscht oder hinzugefügt:
# discovering the targets iscsiadm -m discovery -t st -p YOURMACHINE -P 1 # deleting target on wrong interface iscsiadm -m node -p 192.168.0.100:3260,1 -o delete # opening the portal iscsiadm -m node --targetname "iqn.2010-03.YOURMACHINE:clvm1" --portal "YOURMACHINE:3260" --
Die virtuellen Maschinen werden via KVM bereit gestellt. Dafür muss zuerst die passende Software installiert werden:
apt-get install linux-image-2.6.32-bpo.2-amd64 kvm libvirt-bin virtinst -t lenny-backports
Bei der Einrichtung der Bridge für die Gäste muss darauf geachtet werden, dass der Bridge-Name für alle Nodes gleich sein muss. Auch die libvirt-Konfiguration muss gleich sein, es ist daher hilfreich, auf git und vergleichbare Techniken zurück zu greifen. Danach können die Gäste mit
virt-install -n <NAME> -r 256 --vcpus=1 --disk path=/dev/vg_cluster#/<LV> \ -c /root/debian-<VERSION>-amd64-netinst.iso --vnc --noautoconsole --os-type linux \ --os-variant debianLenny --accelerate --network=bridge:bridge0 --hvm -k de
installiert und mit virt-viewer -c qemu+ssh://:/system angesehen werden.
Der nächste Schritt ist das Aufsetzen von RHCS selbst – dafür müssen in erster Instanz die Programme installiert und aufgerufen werden: apt-get install redhat-cluster-suite. Die dadurch bereit gestellten NFS-Dienste werden aber nicht gebraucht:
invoke-rc.d nfs-kernel-server stop invoke-rc.d nfs-common stop invoke-rc.d portmap stop update-rc.d -f nfs-kernel-server remove update-rc.d -f nfs-common remove update-rc.d -f portmap remove
Ein anderes Problem ist, dass das Programm system-config-cluster nicht unter Lenny zur Verfügung steht. Es wurde von credativ-Mitarbeiter Philipp Hübner paketiert und ist in Debian erst ab Squeeze enthalten. Durch einen Backport kann system-config-cluster aber auch auf Lenny genutzt werden:
wget --no-check-certificate https://www.credativ.com/~phu/lenny-backports/system-config-cluster/system-config-cluster_1.0.53-1_all.deb dpkg -i system-config-cluster_1.0.53-1_all.deb apt-get -f install apt-get install xauth
Damit LVM Locking Cluster-weit funktioniert, muss in der /etc/lvm/lvm.conf im Abschnitt global eine Anpassung vorgenommen werden:
locking_type = 3
Falls wie empfohlen ein neuerer Kernel eingesetzt wird, liegt das Modul lock_dlm nicht mehr vor. Daher muss das Init-Script von CMAN angepasst werden, die Zeile modprobe lock_dlm 2>&1 || return 1 muss auskommentiert werden. Außerdem unterstützt RHCS 2 nur XEN, für libvirt-Unterstützung muss der Ressource Handler vm.sh geladen werden – er liegt für Debian Squeeze bereit:
wget --no-check-certificate https:///www.credativ.com/~phu/vm.sh -O /usr/share/cluster/vm.sh chmod +x /usr/share/cluster/vm.sh
RHCS selbst wird gestartet mittels
/etc/init.d/cman start /etc/init.d/clvm start /etc/init.d/rgmanager start
Fencing beschreibt das automatisierte Neutralisieren von Nodes, die nicht mehr reagieren. Wir setzen in unserem Beispiel dafür eine per Netz steuerbare Steckdose ein, NETIO-230A. Es liegt bisher kein fence agent für dieses Gerät vor, aber mit Hilfe der verfügbaren Python-Bibliothek kann ohne Weiteres ein solcher geschrieben werden.
Dieses Howto zeigt, dass das Einrichten von RHCS unter Debian mit einfachen Schritten möglich ist – wenn auch je nach Einsatz weitere Anpassungen vorgenommen werden müssen. Dabei helfen wir übrigens gerne – Open Source Hochverfügbarkeits-Lösungen gehören zu unseren Spezialitäten, und Services und Support bei KVM-Virtualisierung ist unser Alltagsgeschäft.
Dieser Artikel wurde ursprünglich geschrieben von Roland Wolters.
Kategorien: | HowTos |
---|---|
Tags: | Debian |