DRBD stoppen, damit ich einige Tests mit einer VM ausführen kann

DRBD stoppen, damit ich einige Tests mit einer VM ausführen kann

Wir haben zwei Server, die ich geerbt habe. Auf beiden läuft DRBD und auf jedem laufen virtuelle KVM-Maschinen.

Ich würde gerne eine VM stoppen, die auf Server1 läuft, und nur die eine VM auf Server2 für einige Tests hochfahren. Aber da DRBD auf diesen Servern seine Arbeit tut und ich das defekte Startskript (hier gepostet) von Server2 habe, macht es mich nervös, da ich Server1 nicht komplett stoppen möchte, sondern nur die eine VM darauf. Ich habe diese Maschinen weder erstellt noch konfiguriert und bin mir nicht sicher, ob DRBD (von dem ich wenig weiß) vollständig richtig implementiert wurde. Das Stoppskript von Server1 ist gepostet und das Startskript von Server2 ist hier ebenfalls gepostet.

Aber vorher möchte ich wohl einfach wissen, wie ich DRBD für eine gewisse Zeit davon abhalten kann, die beiden Server zu manipulieren. Damit ich ein Dateisystem auf Server2 mounten und eine VM starten kann, die ich auf Server1 gestoppt habe.

Server1-Site-Stopp-Skript:

echo    poweroff -p now
echo
read -rsp $'Press any key to continue...\n' -n1 key

virsh shutdown irsc
virsh shutdown backup
virsh shutdown user
virsh shutdown repository
virsh shutdown web-firewall
virsh shutdown wiki
virsh shutdown a-gateway
virsh shutdown b-gateway
virsh shutdown dhcp
 
# shutdown the drbd
#drbd-stop
echo now manually turn off drbd
echo     umount /systems
echo     drbdadm secondary all
echo     drbd-overview

Warum der drbd-stop auskommentiert ist, weiß ich nicht, und warum er Dinge wiederholt, die er tun sollte? Ich habe keine Ahnung. Aber okay, das ist also das Stoppskript. Die IMG-Dateien von Server1 für den KVM befinden sich übrigens in /systems.

Also gehe ich zu Server 2. Erstes Problem: Der Ordner /systems enthält keine IMG-Dateien, aber im Startskript gibt es eine Mount-Zeile. Hier ist das Startskript für Server2: (Ich habe keine Ahnung, was das Nodedev-Detach-PCI wirklich macht.)

#!/bin/sh
# isolate the CPUs for the VMs
#site-isolate

# backup 192 network
virsh nodedev-detach pci_0000_06_10_2
# 10.7
virsh nodedev-detach pci_0000_02_10_0
# 10.5
virsh nodedev-detach pci_0000_06_10_3
# 10.2
virsh nodedev-detach pci_0000_02_10_1

# a-gateway
# 192
virsh nodedev-detach pci_0000_06_10_0
# 10.5
virsh nodedev-detach pci_0000_06_10_1
# 10.7
virsh nodedev-detach pci_0000_02_10_4

# b-gateway
# 192
virsh nodedev-detach pci_0000_06_10_4
# 10.2
virsh nodedev-detach pci_0000_02_10_5

# dhcp
# 10.5
virsh nodedev-detach pci_0000_06_10_7
# 10.7
virsh nodedev-detach pci_0000_02_11_0
# 10.2
virsh nodedev-detach pci_0000_02_11_1

# dns2
# 192
virsh nodedev-detach pci_0000_06_11_0

# web-server
# 10.7
virsh nodedev-detach pci_0000_02_11_4

# web-firewall
# 192
virsh nodedev-detach pci_0000_06_10_6
# 10.7
virsh nodedev-detach pci_0000_02_12_4
# 10.2
virsh nodedev-detach pci_0000_02_11_5

# irsc
# 10.7
virsh nodedev-detach pci_0000_02_13_0
# BTTV
virsh nodedev-detach pci_0000_09_00_0

# firewall
# 10.25
virsh nodedev-detach pci_0000_02_12_1
# 10.5
virsh nodedev-detach pci_0000_06_11_1

# bro-server
# 192
virsh nodedev-detach pci_0000_06_11_2

echo start drbd
# start the disk mirror with the slave
service drbd start
sleep 2

# now setup drbd and filesystems

# for all VM images, mount the /systems
drbdadm primary systems
mount /dev/drbd/by-res/systems /systems

# for arc-gateway
drbdadm primary arc-gateway-data

# for backup
drbdadm primary archive
drbdadm primary amanda

# for user computer
# for user computer
drbdadm primary users

# for web server computer
drbdadm primary web-server

# for wiki
drbdadm primary svn

# for irsc. *** this is the one I want to bring up?  do I have to do this drbdadm primary irsc
drbdadm primary irsc

echo start vms
# start the VMs
# fundamental servers
virsh start dns2
virsh start dhcp
# take a long time to start servers
virsh start devel1
virsh start xmail
# gateways, sdss-gateway takes a long time
virsh start sdss-gateway
virsh start arc-gateway
virsh start user
# APO servers
virsh start web-server
virsh start backup
virsh start repository
virsh start wiki
virsh start irsc

# finally web firewall, now online to the world
virsh start web-firewall

Antwort1

Wie Sie in einem der obigen Kommentare erklärt haben. Alle Root-Volumes der VM werden als Image-Dateien im Dateisystem gespeichert, das unter gemountet ist /systems. Um ein sicheres Failover auf das Peer-System zu ermöglichen, müssten Sie den Zugriff auf dieses Dateisystem stoppen (alle VMs stoppen) und es zuerst unmounten. Dadurch werden alle VMs zusammengeworfen, und Sie müssten ein Failover aller VMs durchführen.

Eine Möglichkeit, die im AllgemeinenNicht empfohlenwäre, die DRBD-Knoten zu trennen und manuell ein Split-Brain zu verursachen. Im Wesentlichen wären beide Knoten gleichzeitig primär und verursachen somit eine Datendivergenz, die Sie manuell auflösen müssen, um sie wieder zu verbinden. Ich würde zunächst überprüfen, ob Ihre DRBD-Konfiguration keine enthältautomatische Split-Brain-Wiederherstellungsoptionen. Das Verfahren sollte dem unten stehenden ähneln. Gehen Sie hier besonders mit dem --discard-my-dataBefehl vorsichtig um. Das Ausführen vom falschen Knoten aus könnte verheerende Folgen haben.

## From the secondary node
# drbdadm disconnect systems
# drbdadm primary systems
## Verify irsc is stopped on the peer
# virsh start irsc
## Do whatever testing you need
# virsh stop irsc
# drbdadm secondary systems
# drbdacm connect systems --discard-my-data

verwandte Informationen