Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
satellite:dnbd3-proxy_installation [2021/02/09 16:49 CET] – [Kompilieren des dnbd3-Servers] srittersatellite:dnbd3-proxy_installation [2023/05/08 14:22 CEST] (aktuell) – Update git:// to https:// simon
Zeile 3: Zeile 3:
 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. 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.
  
 +<WRAP center round info 60%>
 +Die aktuelle (englischsprachige) Anleitung befindet sich im dnbd3 git Repository auf [[https://git.openslx.org/dnbd3.git/tree/README.md|git.openslx.org]] (gespiegelt auf [[https://github.com/bwLehrpool/dnbd3|github.com]]). Bei Problemen oder Unklarheiten lohnt sich evtl. ein Blick in diese, falls Änderungen noch nicht in diesen Artikel übertragen wurden. Die dortige Anleitung bezieht sich allerdings auf alle Komponenten des DNBD3-Projekts. Zum Betrieb eines Proxies ist jedoch nur der **dnbd3-server** notwendig. Insbesondere das Kernelmodul braucht nicht kompiliert und installiert zu werden, was u.a. die Installation von Kernel-Headern erspart.
 +</WRAP>
 ==== Gruppe und User ==== ==== Gruppe und User ====
  
Zeile 12: Zeile 15:
 ==== Kompilieren des dnbd3-Servers ==== ==== Kompilieren des dnbd3-Servers ====
  
-Achten Sie darauf, daß Sie libjansson (libjansson4) und libjansson-devel benötigenInstallieren Sie diese vorherZudem benötigen Sie einen c-Compiler (gcc), make sowie cmake (ccmake), außerdem zum Download git.+=== Installation der Abhängigkeiten (z.BUbuntu 20.04===
  
-=== Quellcode und Vorbedingungen ===+<code> 
 +apt install git \ 
 +                make \ 
 +                cmake \ 
 +                gcc \ 
 +                libjansson-dev 
 +</code>
  
-Besorgen Sie sich anschließend den Quellcode mit <code>git clone git://git.openslx.org/dnbd3.git</code>+=== Quellcode und Kompilierung ===
  
-=== Konfiguration ===+Besorgen Sie sich anschließend den Quellcode mit <code>git clone https://git.openslx.org/dnbd3.git</code>
  
 Wechseln sie in das nach dem git-Befehl vorhandene Verzeichnis dnbd3, erzeugen darin ein Verzeichnis build und wechseln in dieses: Wechseln sie in das nach dem git-Befehl vorhandene Verzeichnis dnbd3, erzeugen darin ein Verzeichnis build und wechseln in dieses:
 <code> <code>
 cd dnbd3 cd dnbd3
-mkdir build +mkdir build && cd build
-cd build+
 </code> </code>
  
-== Minimal, nur Server (empfohlen) == +Führen Sie dort, also im **build-Verzeichnis**, folgenden Befehl aus:
- +
-Führen Sie dort, also im build-Verzeichnis, folgenden Befehl aus:+
 <code> <code>
-cmake -DDNBD3_KERNEL_MODULE=OFF -DDNBD3_CLIENT_FUSE=OFF -DDNBD3_SERVER=ON -DDNBD3_SERVER_FUSE=OFF CMAKE_BUILD_TYPE=Release ..+cmake -DDNBD3_KERNEL_MODULE=OFF -DDNBD3_CLIENT_FUSE=OFF -DDNBD3_SERVER=ON -DDNBD3_SERVER_FUSE=OFF -DCMAKE_BUILD_TYPE=Release ..
 </code> </code>
-Verfahren Sie anschließend weiter wie bei [[satellite:dnbd3-proxy_installation#Kompilierung|"Kompilierung"]] beschrieben. 
  
-== Komplett (Client, Kernelmodul usw.) == +Die eigentliche Kompilierung starten Sie mit
- +<code>make install</code>
-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 <code>make</code> an. Sie sollte mit "[100%] Built target dnbd3-server" beendet werden. +
- +
-Sie finden die ausführbare Datei unter: <code>./build/src/server/dnbd3-server</code>  +
-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 ==== ==== Konfiguration ====
  
-Erstellen Sie ein Verzeichnis <code>/etc/dnbd3-server</code> +Nach der Kompilierung finden Sie unter **/etc/dnbd3-server/sample/** eine Beispielkonfiguration. Kopieren Sie diese ein Verzeichnis nach oben und passen Sie diese entsprechend Ihrer Umgebung an.
-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 == 
 <code> <code>
-# localhost +cp /etc/dnbd3-server/sample/* /etc/dnbd3-server/
-127.0.0.0/8 ALL +
-[IP des Satellitenservers] ALL+
 </code> </code>
  
-<note>Die Datei rpc.acl regelt nur die Abfrage der Statusinformationen, nicht den Zugriff auf den dnbd3-proxy an sichEine Zugriffsregelung erfolgt vorteilhaft durch iptablesBitte 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.aclleerer rpc.acl oder einer rpc.acl mit nicht verständlichem (namensbasiertem) Eintrag keine Kontrolle erfolgtalso der Status von überall ausgelesen werden kann.</note>+=== alt-servers === 
 + 
 +Am wichtigsten ist der Eintrag des Satellitenservers in dieser Datei, damit der Proxy-Server eine Quelle für die Images kenntDie Eintragung anderer Proxy-Server sorgt für zusätzliche Redundanz bzwLastausgleich für die ReplikationEs ließen sich jedoch auch beliebig komplizierte Hierarchien konstruierenin denen es auch Proxies gibtdie die Images nicht direkt vom Satellitenserver beziehensondern von anderen Proxies.
  
-== /etc/dnbd3-server/alt-servers == 
 <code> <code>
 [IP des Satellit] [IP des Satellit]
Zeile 67: Zeile 61:
 </code> </code>
  
-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.+=== rpc.acl ===
  
-== /etc/dnbd3-server/server.conf == +Hier müssen Sie in der Regel nur Ihren Satellitenserver (sowie standardmäßig 127.0.0.1) freischalten. 
-<code> +
-[dnbd3] +
-listenPort=5003 +
-# Je nach Partitionierung ggfein 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] +<code> 
-consoleMask=ERROR WARNING MINOR INFO +# localhost 
-; Valid types (warning: specifying invalid types will not yield an error!) +127.0.0.0/8 ALL 
-; ERROR     Fatal error, server will terminate +[IP des Satellitenservers] ALL
-; 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+
 </code> </code>
  
-Wenn Sie zu Testzwecken eine Logdatei benötigenhängen Sie noch folgendes an die Abteilung [logging] an. Beachten Sie jedochdaß diese Logs sehr schnell sehr groß werden können - im Normalbetrieb daher nicht zu empfehlen!+<note>Die Datei rpc.acl regelt nur die Abfrage der Statusinformationennicht den Zugriff auf den dnbd3-proxy an sichEine Zugriffsregelung kann beispielsweise mit Hilfe von iptables erfolgen. Bitte beachten Sie, dass bei Einträgen der rpc.acl keine Namensauflösung erfolgt; eine Eintragung 'localhost' würde daher nicht funktionieren. Beachten Sie auch, dass 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.</note>
  
-<code> +=== server.conf ===
-; file logging: +
-file=/var/log/dnbd3.log +
-; which type of messages to log to file: +
-fileMask=ERROR WARNING MINOR INFO DEBUG1 +
-</code>+
  
 Die wichtigsten Optionen sind: 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.+  * **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. Dies vermeidet Probleme mit dem laufenden System, falls die Root-Partition vollläuft, und andere Services keine Dateien mehr anlegen können.
   * **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.   * **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.+  * **clientPenalty**: Gleiche Funktion wie serverPenalty, allerdings für Clients. Falls Sie einen Proxy-Server aufsetzen wollen, der nur von anderen Proxies, jedoch nicht von Clients genutzt wird, erhöhen Sie diesen Wert.
   * **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.   * **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.   * **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.+  * **sparseFiles**: Wenn **false**, wird der für ein Abbild notwendige Platz präalloziiert, also bei Anfrage des ersten Blocks komplett reserviert. Dies stellt sicher, dass in Zukunft das gesamte Image repliziert werden kann. Sollte der zur Verfügung stehende Speicherplatz sehr knapp sein, kann dieses auf **true** gesetzt werden. In diesem Fall wird erst bei einem Schreibfehler durch eine volle Partition versucht, durch löschen alter Images wieder Speicher freizuräumen, um den Schreibvorgang durchführen zu können. Dieser Modus wird z.B. beim lokalen Caching auf Clients genutzt.
  
-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. +<note important>Vergessen Sie auch nicht, das in der Datei ''server.conf'' unter ''basePath'' angegebene Verzeichnis ggf. zu erstellen und dafür zu sorgen, dass der User dnbd3 lesen **und** schreiben kann.</note>
- +
-In der (git-)Datei dnbd3/conf/server.conf ist übrigens eine recht vollständige Beispielkonfiguration zu finden.+
  
 ==== Automatischer Start ==== ==== Automatischer Start ====
  
-Erzeugen Sie im Verzeichnis /etc/systemd/system eine Datei namens dnbd3-proxy.service des Inhalts: +Damit der Server nicht mit root-Rechten ausgeführt wird, sondern unter dem im ersten Schritt angelegten dnbd3-User startet, muss das Service File noch angepasst werden. 
-<code>[Unit] + 
-Description=DNBD3 proxy server+Ergänzen Sie daher die Datei **/etc/systemd/system/dnbd3-server.service**. Fügen Sie im Block **[Service]** die Zeile **User=dnbd3** ein.
  
-[Service] 
-User=dnbd3 
-ExecStart=/opt/dnbd3/dnbd3-server -n 
-Restart=on-failure 
-RestartSec=3 
-TimeoutStopSec=10 
-LimitNOFILE=65536 
  
-[Install] +Führen Sie anschließend die Befehle <code>systemctl daemon-reload</code> und <code>systemctl enable dnbd3-server.service</code> aus, damit der dnbd3-Proxy bei jedem Neustart automatisch gestartet wird. 
-WantedBy=network-online.target</code>+
  
-Führen Sie anschließend die Befehle <code>systemctl daemon-reload</code> und <code>systemctl enable dnbd3-proxy.service</code> aus, damit der dnbd3-Proxy bei jedem Neustart automatisch gestartet wird. Sie können ihn selbstverständlich gleich mit <code>systemctl start dnbd3-proxy</code> starten.+Starten Sie den Server abschließend mit:  
 +<code>systemctl start dnbd3-server</code>
  
 ==== Satellitenserver ==== ==== Satellitenserver ====
  
-{{ :dnbd3:1_satellit_dnbd3_vor_hinzufuegen.png?direct&250|}}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". {clear}+{{ :dnbd3:1_satellit_dnbd3_vor_hinzufuegen.png?direct&250|}}Als letzter Schritt muss 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". {clear}
  
 {{ :dnbd3:2_Satellit_dnbd3_aufklapp_hinzufuegen.png?direct&250|}}Geben Sie dann die IP des Proxys ein, … {clear} {{ :dnbd3:2_Satellit_dnbd3_aufklapp_hinzufuegen.png?direct&250|}}Geben Sie dann die IP des Proxys ein, … {clear}
Drucken/exportieren