Tutorials - Diskless Server

Sprachenübersicht/Betriebssysteme/Linux/System

Diskless Server

Diese Seite wurde 3631 mal aufgerufen.

Dieser Artikel wurde in einem Wikiweb System geschrieben, das heißt, Sie können die Artikel jederzeit editieren, wenn Sie einen Fehler gefunden haben, oder etwas hinzufügen wollen.

Editieren Versionen Linkpartnerschaft Bottom Printversion

Keywords: diskless linux server client high available nfs pxelinux dhcp

Inhaltsverzeichnis



Vorwort Top


In größeren Umgebungen müssen oftmals Dienste auf mehrere Server verteilt werden. Dabei trennt man gewöhnlich die Daten von der Rechenpower, z.B. lässt man mehrere gleiche Application-Server parallel die Anfragen abarbeiten, während die Daten anderswo in einer Datenbank gespeichert sind. Da das Programm ohnehin auf allen Servern gleich sein muss und keine Schreibvorgänge auf der Platte statt finden, lassen sich die Platten praktisch komplett auslagern und zusammenfassen.

Damit sich dieser Aufwand auch rentiert, müssen die Vorteile überwiegen:

  • vereinfachte Wartung - alle Daten liegen auf dem Storage


  • skalierbar - bei hoher Last können schnell weitere Server dazugeschalten werden


  • weniger Ausfälle - die Clients haben keine Festplatten, die gewechselt werden müssen


  • billig - nur der Storage-Server braucht Plattenplatz und RAID-Controller



Vorbereitung des Storage-Servers Top


Wer nicht riskieren will, dass die Server beim Ausfall des zentralen NFS-Servers alle plötzlich tot sind, sollte vorher noch das DRBD- und Heartbeat-Tutorial machen.

Wenn der Kernel wie im DRBD-Tutorial selbst gebaut wurde, kann dazu auch noch der NFS-Kernel-Server einkompiliert werden. Ansonsten genügt unter Debian ein schnelles apt-get install nfs-kernel-server.

Um alle Dateien an einem Ort zu haben, machen wir uns das /srv-Verzeichnis zu nutze. Das hat auch den Vorteil, dass man einfach das DRBD dorthin einbinden kann.

Installieren wir nun die benötigten Programme.

Code:


apt-get install tftpd-hpa syslinux debootstrap build-essential libncurses5-dev

cd /usr/src
wget http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.xx.tar.bz2
tar xvfj linux-2.6.xx.tar.bz2



PXEBoot Top


Am einfachsten Konfigurieren wir unser System nun in der Reihenfolge, wie später auch das Booten der Server ablaufen soll.

Als erstes brauchen wir einen DHCP-Server. Da ich davon ausgehe, dass bereits einer im LAN vorhanden ist, erkläre ich nur kurz, welche Zeilen der Konfiguration hinzugefügt werden müssen, falls es sich um den am weitest verbeiteten ISC-DHCPD handelt.

/etc/dhcp/dhcpd.conf:


subnet 192.168.0.0 netmask 255.255.255.0 {
  range 192.168.0.50 192.168.0.100;
  option routers 192.168.0.1;
  next-server 192.168.0.49; # das ist der server mit dem tftp-server
  filename "pxelinux.0"; # der boot-loader auf dem tftp-server
}



Theoretisch wäre es möglich, den DHCP-, TFTP- und den NFS-Server auf unterschiedliche Rechner zu verteilen, ich gehe jetzt jedoch davon aus, dass TFTP und NFS auf dem selben liegen.

Nun folgt die Konfiguration des TFTP-Servers.

/etc/default/tftpd-hpa:


RUN_DAEMON="yes"
OPTIONS="-l -s /srv/tftp"



Da der Standalone-Server aus meiner Sicht besser läuft als über Inetd, können wir folgende Zeile in der Inetd-Konfig auskommentieren oder löschen.

/etc/inetd.conf:


#tftp           dgram   udp     wait    nobody  /usr/sbin/tcpd  /usr/sbin/in.tftpd /srv/tftp



Als nächstes kopieren wir den Bootloader in das TFTP-Root.

Code:


mkdir /srv/tftp
mkdir /srv/tftp/pxelinux.cfg
cp /usr/lib/syslinux/pxelinux.0 /srv/tftp



Der Bootloader muss als nächstes einen Kernel übers Netz nachladen. Diesen bauen wir am besten selbst. Wichtig ist, dass folgende Option aktiviert ist und die NFS-Client-Module einkompiliert sind.

make menuconfig:


Networking
  Networking Options
    TCP/IP networking
      IP: kernel level autoconfiguration
        IP: DHCP support



Ich empfehle hierbei komplett auf Module zu verzichten!

Code:


make bzImage
cp arch/<arch>/boot/bzImage /srv/tftp/vmlinuz-2.6.xx-nfs



Der Kernel liegt nun auch im TFTP-Root, doch damit das ganze auch reibungslos klappt, braucht es noch eine Konfigurationsdatei.

/srv/tftp/pxelinux.cfg/default:


LABEL linux
KERNEL vmlinuz-2.6.xx-nfs
APPEND root=/dev/nfs nfsroot=192.168.0.49:/srv/nfsroot ip=dhcp rw



Man kann auch rechner- und netzspezifische Konfiguration anlegen. Diese liegen dann auch innerhalb von pxelinux.cfg und tragen als Namen beispielsweise 01-00-30-48-8b-95-28. Das 01- am Anfang muss immer dort stehen, die restlichen Ziffern sind die Mac-Adresse der Netzwerkkarte. Wichtig ist hierbei, die Buchstaben klein zu schreiben und Bindestriche statt Doppelpunkte zu verwenden.

Um die Konfiguration auf basis der IP-Adresse zu machen, hilft das Tool gethostip, dass die Adresse bzw. Netz in der hexadezimalen Schreibweise ausgibt, die dem Namen der Konfigdatei entspricht.

NFS-Root Top


Damit der Server später auch ein System per NFS erhält, passen wir zuerst die NFS-Konfiguration an.

/etc/exports:


/srv/nfsroot    *(rw,async,no_root_squash)



Das Hostsystem ist dann ziemlich schnell eingerichtet.

Code:


mkdir /srv/nfsroot
cd /srv/nfsroot
debootstrap --include=nfs-common,portmap,vim,less,openssh-server,syslog-ng etch ./
cp /etc/apt/sources.list /srv/nfsroot/etc/apt/sources.list



Der Server braucht natürlich eine angepasst fstab-Datei, damit das Root richtig eingebunden wird.

/srv/nfsroot/etc/fstab:


/dev/nfs        /               nfs     defaults        1 1
none            /proc           proc    defaults        0 0
tmpfs           /tmp            tmpfs   defaults        0 0
tmpfs           /var/run        tmpfs   defaults        0 0
tmpfs           /var/lock       tmpfs   defaults        0 0
tmpfs           /var/log        tmpfs   defaults        0 0



Als nächstes müssen noch die hostname- und die hosts-Datei angepasst werden. Einstellungen für IP-Adresse und Netzwerk sind nicht erforderlich, da das bereits vom Kernel erledigt wurde.

Abschluss Top


Weiters ist es empfehlenswert, dass syslog-ng sämtliche Log-Meldungen an einen zentralen Server schickt und nichts lokal gelogt wird.

Wer hier DRBD mit Heartbeat verwendet, sollte nicht vergessen den NFS-Kernel-Server und TFTP-HPA aus den default-Runlevel zu löschen und stattdessen in der Heartbeat-Konfig einzutragen.

Erfahrungen Top


Bei Tests lief das System überaus stabil. Bei manchen Anwendungen ist es erforderlich für jeden Host ein eigenes NFS-Root anzulegen, damit keine Schreibkonflikte entstehen können.

Wurde im Betrieb einem NFS-Server der Strom genommen, so sprang innerhalb kurzer Zeit Heartbeat ein und fuhr den anderen Server hoch. Der Diskless-Server stand dadurch für 20 Sekunden still und setzte danach seine Arbeit ungehindert fort.

Gibt es noch irgendwelche Fragen, oder wollen Sie über den Artikel diskutieren?

Editieren Versionen Linkpartnerschaft Top Printversion

Haben Sie einen Fehler gefunden? Dann klicken Sie doch auf Editieren, und beheben den Fehler, keine Angst, Sie können nichts zerstören, das Tutorial kann wiederhergestellt werden

Sprachenübersicht/Betriebssysteme/Linux/System/Diskless Server