Ziel des ping-pong Setup ist ein redundantes, hochverfügbares VServer-Setup einzurichten (Alle mal lachen). Das Setup besteht aus den zwei Servern ping und pong. In jedem Server sind zwei Raids konfiguriert, die über das Netzwerk auf den anderen Server gespiegelt werden. Raid X fungiert immer als Primary (Master) auf Server A und Secondary auf Server B und umgekehrt.
ping pong
drbd1 <-- Net-Raid 1 --> drbd1 (vserver_group_1)
md1 md1
sd[cd] sd[cd]
drbd2 <-- Net-Raid 1 --> drbd2 (vserver_group_2)
md2 md2
sd[ef] sd[ef]
Das Netzwerkraid läuft über eine direkte Verbindung zwischen den beiden Servern.
public ip: 130.133.110.58 (eth0)
ssh-key: 23:c3:c3:af:cc:86:4d:50:8d:77:4c:f0:82:1e:f5:1b
Kurzbeschreibung: Vserver host, drbd secondary for pong
- 32GB RAM
- 4 x Dual-Core AMD Opteron(tm) Processor 2212 (2010.359 MHz)
- Festplatten:
- sda 150GB
- sdb 150GB
- sdc 1000GB
- sdd 1000GB
- sde 1000GB
- sdf 1000GB
- 2 x 1GBit/s Ethernet
cat /proc/mdstat
Personalities : [raid1]
md2 : active raid1 sde[0] sdf[1]
976761424 blocks super 1.2 [2/2] [UU]
md1 : active raid1 sdc[0] sdd[1]
976761424 blocks super 1.2 [2/2] [UU]
md0 : active raid1 sda1[0] sdb1[1]
14646200 blocks super 1.2 [2/2] [UU]
unused devices: <none>
auto eth0
iface eth0 inet static
address 130.133.110.58
netmask 255.255.255.128
gateway 130.133.110.1
iface eth0 inet6 static
address 2001:6f8:1c3c:babe::58:1
netmask 64
auto eth1
iface eth1 inet static
address 10.0.0.58
netmask 255.0.0.0
public ip: 130.133.110.59 (eth0)
ssh-key: d7:b6:44:72:fc:6b:57:db:f2:82:42:61:ee:e9:d5:53
Kurzbeschreibung: Verserver host, drbd secondary für ping
- 32GB RAM
- 4 x Dual-Core AMD Opteron(tm) Processor 2212 (2010.359 MHz)
- Festplatten:
- sda 150GB
- sdb 150GB
- sdc 1000GB
- sdd 1000GB
- sde 1000GB
- sdf 1000GB
- 2 x 1GBit/s Ethernet
cat /proc/mdstat
Personalities : [raid1]
md2 : active raid1 sde[0] sdf[1]
976761424 blocks super 1.2 [2/2] [UU]
md1 : active raid1 sdc[0] sdd[1]
976761424 blocks super 1.2 [2/2] [UU]
md0 : active raid1 sda1[0] sdb1[1]
14646200 blocks super 1.2 [2/2] [UU]
unused devices: <none>
auto eth0
#iface eth0 inet dhcp
iface eth0 inet static
address 130.133.110.59
netmask 255.255.255.128
gateway 130.133.110.1
iface eth0 inet6 static
address 2001:6f8:1c3c:babe::59:1
netmask 64
auto eth1
iface eth1 inet static
address 10.0.0.59
netmask 255.0.0.0
Als erstes hostname ändern in /etc/hostname, da die Raids namen erhalten, die
an den hostname gebunden sind.
echo ping > /etc/hostname
hostname ping #hostname für die aktuelle session setzen
Um die Software Raids zu erstellen haben wir die folgenden Befehle benutzt:
mdadm --create /dev/md1 --level=1 --raid-devices=2 --assume-clean /dev/sd[cd]
mdadm --create /dev/md2 --level=1 --raid-devices=2 --assume-clean /dev/sd[ef]
cat /proc/mdstat
Installieren:
aptitude install drbd-utils
lsmod | grep drbd
modprobe drbd # falls kernel modul nicht geladen
update-rc.d drbd defaults # init scripte konfigurieren
/etc/init.d/drbd restart # vielleicht...
Konfiguriert wird drbd unter /etc/drbd.conf sowie /etc/drbd.d. Ersteres ist
erstmal uninteressant. Wir legen im Folgenden zwei Resourcen an, aber als erstes
passen wir die /etc/drbd.d/global_common.conf an:
global {
usage-count no; # wir haben keinen bock in statistiken aufzutauchen
}
...
syncer {
rate 300M; # wir ändern die sync rate auf 1/3 der leitung 1GBit/s
csums-alg sha1; # wir benutzen hashing um nicht unnötig zu syncen
}
Resourcen anlegen. Wichtig, für jede Resource brauchen wir wohl einen neuen Port. Die zwei Beispiel Resourcen für ping und pong, die die lvms hosten.
cat vserver_group_1.res
resource vserver_group_1 {
device /dev/drbd1;
disk /dev/md1;
meta-disk internal;
on ping {
address 10.0.0.58:7789; # wir benutzen das direkte interface
}
on pong {
address 10.0.0.59:7789;
}
}
cat vserver_group_2.res
resource vserver_group_2 {
device /dev/drbd2;
disk /dev/md2;
meta-disk internal;
on ping {
address 10.0.0.58:7790;
}
on pong {
address 10.0.0.59:7790;
}
}
Restart: /etc/init.d/drbd restart
Als nächstes sollten die Metadaten für die Resourcen erstellt werden. Das muss für jede Resource am Anfang einmal erfolgen:
drbdadm create-md vserver_group_1
drbdadm create-md vserver_group_2
Als nächstes werden die lokalen Block-Devices mit den drbd Resource-Devices verknüpft und die konfigurierten Peers peer Netzwerk verbunden:
drbdadm up vserver_group_1 # shortcut für drbdadm attach vserver_group_1 && drbdadm connect vserver_group_1
drbdadm up vserver_group_2 # analog
#drbdadm up all # alternativ
Nun gilt es noch zu konfigurieren, wer für welche Resource Primary bzw. Secondary ist und somit die Schreibrechte für die Resource hält.
drbdadm primary vserver_group_1 # wir werden primary für die Resource *vserver_group_1*
#drbdadm primary vserver_group_2
Initial sind wir immer Secondary bzw. beide Peers. Falls wir jedoch vom Primary zum Secondary werden wollen:
drbdadm secondary vserver_group_1
drbdadm secondary vserver_group_2
Siehe spline wiki.