Skip to content

Instantly share code, notes, and snippets.

@booo
Created March 14, 2012 16:01
Show Gist options
  • Select an option

  • Save booo/2037479 to your computer and use it in GitHub Desktop.

Select an option

Save booo/2037479 to your computer and use it in GitHub Desktop.

ping-pong

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.

ping

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

Hardware

  • 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

Software Raids

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>

Netzwer Interfaces

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

pong

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

Hardware

  • 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

Software Raids

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>

Netzwerk Interfaces

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

Anleitungen

Software Raid aka. md-devices

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

Drbd installieren und einrichten

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

Munin

Siehe spline wiki.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment