ANOther HA

Aus wiki@ANOnet
Wechseln zu: Navigation, Suche

Als IP-Netz wurde 192.168.200 0 gewählt, hat "hysterische" Gründe;)

Inhaltsverzeichnis

NFS

Ausgangsmaterial:


Partitionierung

/dev/hda1 -- 100 MB /boot (primary, ext3, Bootable flag: on)
/dev/hda5 -- 5000 MB / (logical, ext3)
/dev/hda6 -- 500 MB swap (logical)
/dev/hda7 -- 150 MB unmounted (logical, ext3) (will contain DRBD's meta data) 
/dev/hda8 -- rest unmounted (logical, ext3) (will contain the /data directory)


Nachdem die Rechner mit debian bestückt wurden, muss sichergestellt werden, dass die beiden zeitsyncron laufen, daher

apt-get install ntp ntpdate

auf beiden Rechnern


Nun muss der NFS-Server auf beiden Rechnern installiert werden

apt-get install nfs-kernel-server

Allerdings soll heartbeat die Verwaltung des Servers übernehmen, daher

update-rc.d -f nfs-kernel-server remove
update-rc.d -f nfs-common remove

auf beiden Rechnern

Nun wird, auf beiden Rechnern, die Datei /etc/exports bearbeitet, um den Zugriff für die (Web)Server zu erlauben:

/data/export/ 192.168.200.0/255.255.255.0(rw,no_root_squash,no_all_squash,sync)

hier wird das Verzeichnis /data/export vewendet, und der Zugriff ist auf das Netz 192.168.200.0/24 eingeschränkt


DRBD

(http://www.drbd.org/)

Als nächstes wird auf beiden Systemen DRBD installiert:

apt-get install make gcc libc6 flex linux-headers-2.6.26-2-686 libc6-dev linux-kernel-headers
cd /usr/src/ 
wget http://oss.linbit.com/drbd/8.3/drbd-8.3.0.tar.gz 
tar -xzvf drbd-8.3.0.tar.gz
cd /usr/src/drbd-8.3.0/
make clean all
make install
modprobe drbd
cat /proc/drbd

bzw

apt-get install linux-image-2.6-686 drbd8-modules-2.6-686 /
drbd8-utils drbd8-module-source module-assistant build-essential



Danach muss die /etc/drbt.conf angepasst werden.

drbd.conf

ANOnfs02:/usr/src# cat /etc/drbd.conf
global {
       usage-count yes;
       }

common {
       protocol C;
       }

resource r0 {

net     {
        shared-secret "LINBIT";
        }
on ANOnfs01 {
  device     /dev/drbd0;
  disk       /dev/hda8;
  address    192.168.200.1:7788;
  flexible-meta-disk  /dev/hda7;
 }

on ANOnfs02 {
  device    /dev/drbd0;
  disk      /dev/hda8;
  address   192.168.200.2:7788;
  flexible-meta-disk /dev/hda7;
 }

}


Um folgendes Problem zu beseitigen:

Found ext3 filesystem 
This would corrupt existing data.
If you want me to do this, you need to zero out the first part
of the device (destroy the content).
You should be very sure that you mean it.
Operation refused.

Die Partition "nullen";)

ANOnfs02:~# dd if=/dev/zero of=/dev/hda7 bs=1M count=128

...auf beiden Nodes

weiters

Danach am Srv#1

drbdsetup /dev/drbd0 primary -o
drbdadm connect all


/etc/init.d/drbd restart


danach sollte

ANOnfs01:~# cat /proc/drbd

etwas in der Art liefern:

version: 8.3.0 (api:88/proto:86-89)
GIT-hash: 9ba8b93e24d842f0dd3fb1f9b90e8348ddb95829 build by root@ANOnfs01, 2010-11-28 20:36:12
 0: cs:SyncSource ro:Secondary/Secondary ds:UpToDate/Inconsistent C r---
   ns:43008 nr:0 dw:0 dr:43008 al:0 bm:2 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:1245220

[>....................] sync'ed: 3.5% (1245220/1288228)K finish: 0:51:53 speed: 328 (320) K/sec


Das Syncronisieren dauert seine Zeit, abhängig von der Größe der Partition und der Sync-Geschwindigkeit

Danach kann die Partition formatiert werden (sollte das noch nicht geschehen sein)

mke2fs -j /dev/drbd0

NFS-tuning

Um NFS-Informationen für Srv2 zu behalten, auch wenn Srv1 ausfällt, sollte sich gleich der neue Share zu diensten genmacht werden:

  • auf beiden Servern
mkdir /data
  • auf Srv1
mount -t ext3 /dev/drbd0 /data
mv /var/lib/nfs/ /data/
ln -s /data/nfs/ /var/lib/nfs
mkdir /data/export
umount /data
  • auf Srv2
rm -fr /var/lib/nfs/
ln -s /data/nfs/ /var/lib/nfs

Erweiterung

http://www.howtoforge.com/drbd-8.3-third-node-replication-with-debian-etch


heartbeat

  • auf beiden Servern
apt-get install heartbeat
/etc/heartbeat/ha.cf:
logfacility     local0
keepalive 2
#deadtime 30 # USE THIS!!!
deadtime 10
bcast   eth0
node ANOnfs01 ANOnfs02

(hier müssen die Hostnamen (uname -n) verwendet werden)

    • keepalive: hier wird die Zeit definiert, in der das HB-Signal gesendet wird
    • deadtime: nach dieser Zeit (in Sekunden) gilt der Host als "tot"



/etc/heartbeat/haresources:
ANOnfs01  IPaddr::192.168.200.10/24/eth0 drbddisk::r0 Filesystem::/dev/drbd0::/data::ext3 nfs-kernel-server

wobei die IP eine virtuelle IP ist, der Hostname nur einer der beiden sein muss (egal welcher der beiden Knoten) und die rdbddisk den Namen haben muss, der in der drdb.conf festhelegt wurde

Weiters auf beiden Servern:

/etc/heartbeat/authkeys

mit dem Inhalt

auth 3
3 md5 STRENGGEHEIMERKEY

Da diese Datei ausschließlich für root lesbar sein soll, auf beiden Servern

chmod 600 /etc/heartbeat/authkeys

ausführen


Anschließend können DRBD und heartbeat gestartet werden

/etc/init.d/drbd start
/etc/init.d/heartbeat start


Nun kann getestet werden:

  • Server1:
ANOnfs01:~# ifconfig 

sollte etwas in der Art liefern:

eth0:0    Link encap:Ethernet  Hardware Adresse 00:03:47:ba:6d:a8  
          inet Adresse:192.168.200.10  Bcast:192.168.200.255  Maske:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metrik:1
ANOnfs01:~# df -h
/dev/drbd0             14G  162M   13G   2% /data


  • Server2

Hier ist weder mit ifconfig noch mit df -h selbiges zu beobachten

Test

Nun wird eine Datei auf ANOnfs1in /data/export erstellt, danach, durch abschalten von heartbeat ein Ausfall von ANOsrv01 simuliert:

  • Server1
ANOnfs01:~# touch /data/export/TEST1
ANOnfs01:~# /etc/init.d/heartbeat stop
Stopping High-Availability services: 
Done.
  • Server2
ANOnfs02:~# ls -l /data/export/
insgesamt 0
-rw-r--r-- 1 root root 0  1. Dez 22:36 TEST1

Das Failover hat funktioniert, zumindest in eine Richtung. Nun wird auf den 2. Server geschrieben, und der Server1 geht wieder online:

  • Server2
ANOnfs02:~# touch /data/export/TEST2
  • Server1
ANOnfs01:~# /etc/init.d/heartbeat start
ifconfig

sowie

df -h

liefern wieder die Ergebnisse von vorhin,

ANOnfs01:~# ls -l /data/export/

liefert das zu werwartende Ergebnis

insgesamt 0
-rw-r--r-- 1 root root 0  1. Dez 22:36 TEST1
-rw-r--r-- 1 root root 0  1. Dez 22:40 TEST2

Die Datei, die auf diesem Server nicht angelegt wurde, ist da

Der NFS-Server ist nun betriebsbereit

Clientkonfiguration

Um diesen HA-Speicher nutzen zu können, muss ein NFS-Client nach 192.168.200.10 eingerichtet werden:

  • auf dem Client
mkdir /data
mount 192.168.200.10:/data/export /data

Sollte es zu Problemen mit den Zugriffsrechten kommen, könnte der Grund sein, dass forward- und reverse-lookup für den client nicht zusammenpassen:

in /var/log/syslog:

#Nov  30 05:17:21 localhost rpc.mountd: Fake hostname localhost for 192.168.200.101 - forward lookup doesn't match reverse

Dies wäre dann der zeitpunkt, über DNS nachzudenken;)

Meine Werkzeuge
Namensräume

Varianten
Aktionen
Navigation
Werkzeuge