Internet und Hostinglösungen
  • Werbung
  • Schlagwörter

DRBD Cluster installation unter Linux Debian 8 Jessie

Vorwort

DRBD ist eine Netzwerkspeicherlösungs-Software. Damit ist es möglich gleichzeitig auf die lokale Festplatte und eine entfernte Festplatte zu speichern. Änderungen werden Block basierend übertragen, was wiederum Bandbreite und Zeit spart.

Schreibzugriffe werden über das Netzwerk zum zweiten Server übermittelt, wurde der Schreibvorgang auf dem zweigen Server abgeschlossen wurde, meldet dieser der Applikation das Ende des Schreibvorgangs. Diese Technik ist vergleichbar mit einem RAID1 über das TCP/IP Protokoll.

System vorbereiten


Zuerst sollten Sie die hosts-Datei anpassen und alle Nodes eintragen:
nano /etc/hosts
10.0.0.51	cluster
10.1.1.51 gofer

Nun laden Sie die aktuellen Paketlisten aus dem Internet. Danach werden alle verfügbaren Updates eingespielt.
apt-get update && apt-get upgrade


Installation


Über den Paketmanager


Installiert wird die Software über das Debian Paketmanagementsystem. Das Paket enthält ein Kernelmodul das für den Betrieb von drbd erforderlich ist.
apt-get install drbd8-utils


DRBD selber kompilieren


Alternativ kann auch die neuste Version manuell kompiliert werden, dazu wechseln Sie in das /usr/src/ Verzeichnis:
cd /usr/src/
Laden Sie nun die aktuellste Version von DRBD herunter:
wget http://oss.linbit.com/drbd/9.0/drbd-9.0.0.tar.gz
Alle Versionen finden Sie hier:

Dieser Link ist nur für registrierte Benutzer sichtbar.



Entpacken Sie das heruntergeladene Archiv und wechseln Sie in das neue Verzeichnis:
tar xzf drbd-*.tar.gz && cd drbd-9*


Um DRBD kompilieren zu können benötigen Sie die Linux-Header und Compiler:
apt-get install make gcc flex linux-headers-`uname -r`


Nachdem die erforderlichen Pakete installiert wurden, können Sie das Konfigurationsscript ausführen:
./configure --prefix=/usr --localstatedir=/var --sysconfdir=/etc --with-km


Die Parameter werden im
Dieser Link ist nur für registrierte Benutzer sichtbar.
genauer erklärt.

Nun kann DRBD mit make erstellt und installiert werden:
make && make install

Laden Sie das DRBD Modul mit modprobe um einen Systemneustart zu vermeiden.
modprobe drbd


Damit das Kernelmodul beim Systemstart geladen wird, muss es zur /etc/modules hinzugefügt werden.
echo drbd >>/etc/modules
update-rc.d drbd defaults


Konfiguration


Globale Einstellungen


Passen Sie die Startup-Parameter an, damit das System beim Systemstart automatisch den Verbindungsversuch abbricht, wenn ein Node nicht erreichbar ist.
nano /etc/drbd.d/global_common.conf
outdated-wfc-timeout 5;
degr-wfc-timeout 10;
wfc-timeout 15;

Die vollständige Konfiguration sieht dann wie folgt aus:
global {
usage-count yes;
# minor-count dialog-refresh disable-ip-verification
}

common {
handlers {
# These are EXAMPLE handlers only.
# They may have severe implications,
# like hard resetting the node under certain circumstances.
# Be careful when chosing your poison.

# pri-on-incon-degr "/usr/lib/drbd/notify-pri-on-incon-degr.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";
# pri-lost-after-sb "/usr/lib/drbd/notify-pri-lost-after-sb.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";
# local-io-error "/usr/lib/drbd/notify-io-error.sh; /usr/lib/drbd/notify-emergency-shutdown.sh; echo o > /proc/sysrq-trigger ; halt -f";
# fence-peer "/usr/lib/drbd/crm-fence-peer.sh";
# split-brain "/usr/lib/drbd/notify-split-brain.sh root";
# out-of-sync "/usr/lib/drbd/notify-out-of-sync.sh root";
# before-resync-target "/usr/lib/drbd/snapshot-resync-target-lvm.sh -p 15 -- -c 16k";
# after-resync-target /usr/lib/drbd/unsnapshot-resync-target-lvm.sh;
}
startup {
# wfc-timeout degr-wfc-timeout outdated-wfc-timeout wait-after-sb
outdated-wfc-timeout 5; # outdated-wfc-timeout has to be shorter than degr-wfc-timeout
degr-wfc-timeout 10; # degr-wfc-timeout has to be shorter than wfc-timeout
wfc-timeout 15;
}

options {
# cpu-mask on-no-data-accessible
}

disk {
# size max-bio-bvecs on-io-error fencing disk-barrier disk-flushes
# disk-drain md-flushes resync-rate resync-after al-extents
# c-plan-ahead c-delay-target c-fill-target c-max-rate
# c-min-rate disk-timeout
}

net {
# protocol timeout max-epoch-size max-buffers unplug-watermark
# connect-int ping-int sndbuf-size rcvbuf-size ko-count
# allow-two-primaries cram-hmac-alg shared-secret after-sb-0pri
# after-sb-1pri after-sb-2pri always-asbp rr-conflict
# ping-timeout data-integrity-alg tcp-cork on-congestion
# congestion-fill congestion-extents csums-alg verify-alg
# use-rle
}
}


DRBD-Device Konfiguration


Erstellen Sie für den DRBD Storage am besten eine eigene Datei:
nano /etc/drbd.d/data.res
resource drbd1
{
meta-disk internal;
device /dev/drbd1;
protocol C;

on cluster
{
disk /dev/sdb;
address 10.0.0.51:7788;
}
on gofer
{
disk /dev/sdb;
address 10.1.1.51:7788;
}
}


Sollte die Festplatte oder Partition bereits mit einem Dateisystem formatiert worden sein, führen Sie bitte folgenden Befehl aus, um die Festplatte oder Partition mit Nullen zu überschreiben:
dd if=/dev/zero of=/dev/md1 bs=1M count=128

Nachdem Sie die Konfiguration abgeschlossen haben, können Sie das DRBD-Device auf den Nodes initialisieren:
drbdadm create-md drbd1
initializing activity log
NOT initializing bitmap
Writing meta data...
New drbd meta data block successfully created.

Wenn die Initialisierung erfolgreich abgeschlossen wurde, können Sie die DRBD-Dienste starten:
/etc/init.d/drbd start

Geben Sie nun folgenden Befehl auf dem Master-Node ein: ACHTUNG! Hierbei werden ALLE Daten auf den Slave-Nodes überschrieben!:
drbdsetup /dev/drbd1 primary --overwrite-data-of-peer

Den aktuellen Status können Sie wie folgt anzeigen:
cat /proc/drbd
version: 8.4.3 (api:1/proto:86-101)
srcversion: 1A9F77B1CA5FF92235C2213

1: cs:WFConnection ro:Primary/Unknown ds:UpToDate/DUnknown C r----s
ns:0 nr:0 dw:0 dr:912 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:11230127380




Fehlermeldungen


drbdadm primary drbd1
1: State change failed: (-2) Need access to UpToDate data
Command 'drbdsetup-84 primary 1' terminated with exit code 17

Dies läst sich wie folgt beheben:
drbdsetup /dev/drbd1 primary --overwrite-data-of-peer