Dies ist eine alte Version des Dokuments!


dnbd3-Proxy-Installation

Falls Sie einen eigenen Rechner als dnbd3-Proxy abstellen wollen, müssen Sie dnbd3 zur Installation aus den Quellen kompilieren. Für eine Minimalinstallation benötigen Sie nur den Server-Part.

Gruppe und User

Es ist wie immer vorzuziehen, den dnbd3-Proxy unter einem unprivilegierten User laufen zu lassen. Erzeugen Sie daher eine Gruppe dnbd3 und einen User dnbd3. Der User dnbd3 benötigt kein Shell-Login und kein Homeverzeichnis:

groupadd dnbd3
useradd -g dnbd3 -s /bin/false -d /nonexistent -M dnbd3

Kompilieren des dnbd3-Servers

Achten Sie darauf, daß Sie libjansson (libjansson4) und libjansson-devel benötigen. Installieren Sie diese vorher. Zudem benötigen Sie einen c-Compiler (gcc), make sowie cmake (ccmake), außerdem zum Download git.

Quellcode und Vorbedingungen

Besorgen Sie sich anschließend den Quellcode mit

git clone git://git.openslx.org/dnbd3.git

Konfiguration

Wechseln sie in das nach dem git-Befehl vorhandene Verzeichnis dnbd3, erzeugen darin ein Verzeichnis build und wechseln in dieses:

cd dnbd3
mkdir build
cd build
Minimal, nur Server (empfohlen)

Führen Sie dort, also im build-Verzeichnis, folgenden Befehl aus:

cmake -DDNBD3_KERNEL_MODULE=OFF -DDNBD3_CLIENT_FUSE=OFF -DDNBD3_SERVER=ON -DDNBD3_SERVER_FUSE=OFF CMAKE_BUILD_TYPE=Release ..

Verfahren Sie anschließend weiter wie bei "Kompilierung" beschrieben.

Komplett (Client, Kernelmodul usw.)

Eine komplette Installation ist nicht unbedingt zu empfehlen, da die zusätzlichen Teile (Client, Kernelmodel usw.) nicht für den Betrieb eines dnbd3-Proxys notwendig sind und die zusätzlich benötigten Bibliotheken einigen Raum belegen. Falls Sie sich dennoch für eine komplette Installation entscheiden, installieren Sie zusätzlich die Pakete fuse-devel, fuse-libs, kernel-devel (Kernelsourcen) sowie kernel-headers. Führen Sie anschließend 'cmake ..' aus.

Kompilierung

Stoßen Sie die Kompilierung mit

make

an. Sie sollte mit „[100%] Built target dnbd3-server“ beendet werden.

Sie finden die ausführbare Datei unter:

./build/src/server/dnbd3-server

Wir schlagen vor, diese in ein zu erstellendes Verzeichnis '/opt/dnbd3' zu kopieren; falls Sie sie an einem anderen Ort haben wollen, geht dies auch; Sie müssen dann allerdings darauf achten, die notwendigen Konfigurationsdateien anzupassen.

Konfiguration

Erstellen Sie ein Verzeichnis

/etc/dnbd3-server

Erzeugen Sie in diesem drei Dateien, rpc.acl, alt-servers und server.conf. Vergleichen Sie für erweiterte Optionen die Datei dnbd3/conf/README.server.

/etc/dnbd3-server/rpc.acl
# localhost
127.0.0.0/8 ALL
[IP des Satellitenservers] ALL
Die Datei rpc.acl regelt nur die Abfrage der Statusinformationen, nicht den Zugriff auf den dnbd3-proxy an sich. Eine Zugriffsregelung erfolgt vorteilhaft durch iptables. Bitte beachten Sie, daß bei Einträgen der rpc.acl keine Namensauflösung erfolgt; eine Eintragung 'localhost' würde daher nicht funktionieren. Beachten Sie auch, daß bei nicht vorhandener rpc.acl, leerer rpc.acl oder einer rpc.acl mit nicht verständlichem (namensbasiertem) Eintrag keine Kontrolle erfolgt, also der Status von überall ausgelesen werden kann.
/etc/dnbd3-server/alt-servers
[IP des Satellit]
[IP anderer Proxy 1, wenn vorhanden]
[IP anderer Proxy 2, wenn vorhanden, usw.]

Am wichtigsten ist der Eintrag des Satellitenservers in dieser Datei, damit der Proxy-Server eine Quelle für die Images kennt. Die Eintragung anderer Proxy-Server sorgt für zusätzliche Redundanz bzw. Lastausgleich für die Replikation. Es ließen sich jedoch auch beliebig komplizierte Hierarchien konstruieren, in denen es auch Proxies gibt, die die Images nicht direkt vom Satellitenserver beziehen, sondern von anderen Proxies.

/etc/dnbd3-server/server.conf
[dnbd3]
listenPort=5003
# Je nach Partitionierung ggf. ein anderes Verzeichnis wählen:
basePath=/mnt/huge_disk/dnbd3
serverPenalty=500
clientPenalty=0
isProxy=true
backgroundReplication=true
sparseFiles=false
lookupMissingForProxy=true
removeMissingImages=false
uplinkTimeout=5000
clientTimeout=15000

[logging]
consoleMask=ERROR WARNING MINOR INFO
; Valid types (warning: specifying invalid types will not yield an error!)
; ERROR     Fatal error, server will terminate
; WARNING   Major issue, something is broken but keep running
; MINOR     Minor issue, more of a hickup than serious problem
; INFO      Informational message
; DEBUG1    Debug information, used for medium verbosity
; DEBUG2    Used for debug messages that would show up a lot

Wenn Sie zu Testzwecken eine Logdatei benötigen, hängen Sie noch folgendes an die Abteilung [logging] an. Beachten Sie jedoch, daß diese Logs sehr schnell sehr groß werden können - im Normalbetrieb daher nicht zu empfehlen!

; file logging:
file=/var/log/dnbd3.log
; which type of messages to log to file:
fileMask=ERROR WARNING MINOR INFO DEBUG1

Die wichtigsten Optionen sind:

  • basePath: Caching-Verzeichnis des Proxies. Es wird der gesamte Platz genutzt. Versucht der Proxy ein neues Image zu cachen, für das nicht genug Platz zur Verfügung steht, wird das am längsten nicht verwendete Image gelöscht (bzw. die ältesten). Der Einfachste weg, den maximal zu verwendeten Speicher zu beschränken, ist das Anlegen einer separaten Partition.
  • serverPenalty: „Straffaktor“ wenn sich ein anderer DNBD3 Proxy zu diesem Server/Proxy verbindet. Je höher dieser Wert ist, desto unattraktiver erscheint er dem anderen Proxy als Replikationsquelle. Somit lässt sich das Load-Balancing beeinflussen.
  • clientPenalty: Gleiche Funktion wie serverPenalty, allerdings für Clients.
  • lookupMissingForProxy: Diese Option entscheidet, ob dieser Proxy-Server Anfragen eines anderen Proxy-Servers nach einem ihm nicht bekannten Image weiterleitet (an den Satelliten oder andere konfigurierte Proxies), oder die Anfrage ablehnt.
  • backgroundReplication: Wenn false, leitet der Proxy nur Anfragen nach Image-Teilen an den Satellitenserver bzw. andere Proxies weiter, für die er selbst eine Anfrage von einem Client erhalten hat. Nur diese Teile werden dann auf dem Proxy gecached. Wird die Option auf true gesetzt, nutzt der Proxy freie Bandbreite, um nach und nach das gesamte Image lokal zu cachen.
  • sparseFiles=false: Wenn false, wird der für ein Abbild notwendige Platz präalloziiert, also bei Anfrage des ersten Blocks komplett reserviert. Sollte der zur Verfügung stehende Speicherplatz sehr knapp sein, kann dieses auf true gesetzt werden.

Vergessen Sie auch nicht, das in der Datei server.conf unter basePath angegebene Verzeichnis ggf. zu erstellen und dafür zu sorgen, daß der User dnbd3 lesen und schreiben kann.

In der (git-)Datei dnbd3/conf/server.conf ist übrigens eine recht vollständige Beispielkonfiguration zu finden.

Automatischer Start

Erzeugen Sie im Verzeichnis /etc/systemd/system eine Datei namens dnbd3-proxy.service des Inhalts:

[Unit]
Description=DNBD3 proxy server

[Service]
User=dnbd3
ExecStart=/opt/dnbd3/dnbd3-server -n
Restart=on-failure
RestartSec=3
TimeoutStopSec=10
LimitNOFILE=65536

[Install]
WantedBy=network-online.target

Führen Sie anschließend die Befehle

systemctl daemon-reload

und

systemctl enable dnbd3-proxy.service

aus, damit der dnbd3-Proxy bei jedem Neustart automatisch gestartet wird. Sie können ihn selbstverständlich gleich mit

systemctl start dnbd3-proxy

starten.

Satellitenserver

Abschließend muß der neue Proxy dem zuständigen Satellitenserver mitgeteilt werden. Gehen Sie hierzu in der Webschnittstelle des Satellitenservers auf den Menupunkt DNBD3 und wählen „+Externen Server hinzufügen“.

Geben Sie dann die IP des Proxys ein, …

… aber drücken Sie auf „Testen“, bevor Sie die IP speichern.

Klicken Sie anschließend auf das Doppelpfeilsymbol neben „Serverliste“ zur Aktualisierung der Anzeige.

Drucken/exportieren