PDA

Bekijk Volledige Versie : DRBD split-brain.....nu dead-brain..



snel.com
30/01/15, 16:29
Heb 2 Proxmox machines in een 2 node HA cluster draaien met Proxmox. Storage is 1 SSD voor Proxmox zelf, 1 SATA schijf voor KVM en 1 SSD schijf voor KVM.

Door een split-brain hebben we met veel pijn en moeite momenteel de situatie zo dat alles op 1 Proxmox machine draait (server1) en DRBD tussen de 2 machines draait niet.

Nuttige output:
server1:

# cat /proc/drbd
version: 8.3.13 (api:88/proto:86-96)
GIT-hash: 83ca112086600faacab2f157bc5a9324f7bd7f77 build by root@sighted, 2012-10-09 12:47:51
0: cs:Unconfigured
1: cs:Unconfigured

# cat /etc/drbd.d/r0.res
resource r0 {
on server1 {
device /dev/drbd0;
disk /dev/sdb1;
address 172.16.10.10:7788;
meta-disk internal;
}

on server2 {
device /dev/drbd0;
disk /dev/sdb1;
address 172.16.10.20:7788;
meta-disk internal;
}
}

server2:

# cat /proc/drbd
version: 8.3.13 (api:88/proto:86-96)
GIT-hash: 83ca112086600faacab2f157bc5a9324f7bd7f77 build by root@sighted, 2012-10-09 12:47:51
0: cs:WFConnection ro:Secondary/Unknown ds:Diskless/DUnknown C r-----
ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0
1: cs:WFConnection ro:Secondary/Unknown ds:Diskless/DUnknown C r-----
ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0

r0.res, r1.res en global_common.conf zijn gelijk.

Ik heb nu wel een idee (denk ik) waar de split-brain vandaan komt (caching) en heb alle configuraties aangepast maar heb nog geen idee hoe ik DRBD opnieuw kan instellen.

Mijn idee was als volgt:
1. Op server2 (waar momenteel geen data op staat) met drbdadm create-md nieuwe DRBD volume aanmaken (voorlopig bestaande uit 1 node)
2. Daar de LVM instellen (PV's / VG's en LV's)
3. Dan de LV's kopieren
4. De KVM's online migreren vanuit Proxmox
5. Dan op server1 DRBD in orde maken en toevoegen aan de volume van server2
6. Dan HA weer aanzetten

Iemand dit pad al bewandeld? Zijn er caveats? Tips? Vergeet ik iets?

Mikey
30/01/15, 16:50
Op de niet overlevende drbd kant:

drbdadm secondary <disk>
drbdadm -- disconnect <disk>
drbdadm -- --discard-my-data connect <disk>

Op de live (primary side)
drbdadm connect <disk>

controleer wel even voordat je de commands 1 op 1 knipt en plakt :)

snel.com
30/01/15, 17:57
Helaas.

dmesg zegt:


block drbd0: Starting worker thread (from cqueue [3031])
block drbd0: open("/dev/sdb1") failed with -16
block drbd0: worker terminated
block drbd0: Terminating worker thread
block drbd0: Starting worker thread (from cqueue [3031])
block drbd0: open("/dev/sdb1") failed with -16
block drbd0: worker terminated
block drbd0: Terminating worker thread
block drbd0: Starting worker thread (from cqueue [3031])
block drbd0: conn( StandAlone -> Unconnected )
block drbd0: Starting receiver thread (from drbd0_worker [22937])
block drbd0: receiver (re)started
block drbd0: conn( Unconnected -> WFConnection )
block drbd0: Handshake successful: Agreed network protocol version 96
block drbd0: Peer authenticated using 20 bytes of 'sha1' HMAC
block drbd0: conn( WFConnection -> WFReportParams )
block drbd0: Starting asender thread (from drbd0_receiver [22938])
block drbd0: data-integrity-alg: <not-used>
block drbd0: some backing storage is needed
block drbd0: conn( WFReportParams -> Disconnecting )
block drbd0: error receiving ReportSizes, l: 32!
block drbd0: asender terminated
block drbd0: Terminating asender thread
block drbd0: Connection closed
block drbd0: conn( Disconnecting -> StandAlone )
block drbd0: receiver terminated
block drbd0: Terminating receiver thread
block drbd0: drbd_bm_resize called with capacity == 0
block drbd0: worker terminated
block drbd0: Terminating worker thread


Ik krijg op server1:


# drbdadm up r0
0: Failure: (104) Can not open backing device.
Command 'drbdsetup 0 disk /dev/sdb1 /dev/sdb1 internal --set-defaults --create-device --no-disk-flushes --no-disk-barrier' terminated with exit code 10


En:


# cat /proc/drbd
version: 8.3.13 (api:88/proto:86-96)
GIT-hash: 83ca112086600faacab2f157bc5a9324f7bd7f77 build by root@sighted, 2012-10-09 12:47:51
0: cs:Unconfigured
1: cs:Unconfigured

Boskoop
30/01/15, 18:01
is je disk niet kapot?

snel.com
30/01/15, 18:05
Euhh....nee, heb ook nog een r1, die doet precies hetzelfde en heeft betrekking op een andere schijf. Ik ga er niet van uit dat beide schijven kapot zijn, er is ook geen enkele reden om dat wel aan te nemen (niets in de logs, niets vreemds aan de hand want KVM's werken goed).

systemdeveloper
30/01/15, 21:17
Heb je zeker lvm boven drbd draaien?
Dan zul je lvm even moeten deactiveren op het kapotte volume en dit opnieuw syncen via drbd.
Daarna het lvm volume weer activeren.
En even controleren of je de disk devices in lvm.conf wel goed gefilterd hebt.

snel.com
31/01/15, 08:52
Juist ja, omdat ik LVM nu nog niet wil deactiveren (omdat server1 in zijn eentje draait nu) had ik dus het volgende plan:
1. Op server2 (waar momenteel geen data op staat) met drbdadm create-md nieuwe DRBD volume aanmaken (voorlopig bestaande uit 1 node)
2. Daar de LVM instellen (PV's / VG's en LV's)
3. Dan de LV's kopieren
4. De KVM's online migreren vanuit Proxmox
5. Dan op server1 DRBD in orde maken en toevoegen aan de volume van server2
6. Dan HA weer aanzetten

En dus de vraag:
Iemand dit pad al bewandeld? Zijn er caveats? Tips? Vergeet ik iets?

PS Een andere goede reden om dit zo te willen doen is dat ik de LV's op 2 volumes wil spreiden om mijn werk, mocht er weer een split-brain ontstaan, te vergemakkelijken.

[edit] Een andere goede reden blijkt, na nader onderzoek, dat LVM niet op drbd draait maar rechtsreeks op sdb1. Ik kom hier nog op terug.

Bart L
31/01/15, 17:21
Geen idee of je spare hardware hebt, maar ik zou de boel eerst omgooien naar een andere machine (met Proxmox relatief simpel te doen) en dit opnieuw opbouwen.


Sent from my iPhone using webhostingtalk mobile app

snel.com
02/02/15, 09:05
Helemaal geen slecht idee om de boel opnieuw in te richten op 2 nieuwe machines en dan de boel over te zetten. Zou je de nieuwe Proxmox machines opnemen in de cluster en dan een offline migration doen? Of gewoon de LV's kopieren? Ik neig naar het tweede.

CT0
02/02/15, 19:04
Ik zou ze live migreren, en daarna de oude servers uit het cluster gooien. Als je downtime kan vooroorloven is variant 2 een optie, maar die migrations kunnen bij grote migraties wel ff duren.

snel.com
16/02/15, 10:35
UPDATE:

Gezien het feit dat de oude setup niet helemaal correct was heb ik een nieuwe cluster opgezet. Nu wel correct met fencing via IPMI en DRBD met Quorum DIsk via iscsi. LVM over de DRBD devices, met aparte PV's voor elke node. Vervolgens op oude Proxmox machine via NFS backups gemaakt, die NFS ook gemount op nieuwe Proxmox cluster en daar restore gedaan.

Ging nog best makkelijk.

Nu nog de monitoring voor DRBD en de IPMI devices fixen, dan is dit hoofdstuk klaar. Iedereen bedankt voor het meedenken.