Inhaltsverzeichnis

!!! ACHTUNG - evtl. veraltet - ACHTUNG !!!

Diese Seite wurde zuletzt am 9. Juli 2014 um 10:54 Uhr geändert.

Wenn man mit mehreren (in unserem Fall waren es zwölf) Clients große Datenmengen (bei uns waren es >100GB) im lokalen Netz verteilen möchte,

und ein Teil der Infrastruktur (bei uns der 100MBit-Switch) ein Flaschenhals wäre, wenn alle Clients auf den selben Server zugreifen würden,

bieten sich torrents an.

Was brauche ich dazu:

opentracker

(ein lokaler Tracker)

 su -
 aptitude install cvs build-essential zlib1g-dev
 exit
 cd /usr/local/src
 cvs -d :pserver:cvs@cvs.fefe.de:/cvs -z9 co libowfat
 cd libowfat
 make
 cd ..
 cvs -d:pserver:anoncvs@cvs.erdgeist.org:/home/cvsroot co opentracker
 cd opentracker
 make
 su -
 cp opentracker /usr/local/bin/
 chown root:root /usr/local/bin/opentracker
 chmod 755 /usr/local/bin/opentracker

/etc/rc.local um folgenden Eintrag ergänzen (vor „exit 0“!):

 /usr/local/bin/opentracker &

web-Stats

(selbstgebaut)

 su -
 aptitude install thttpd curl mrtg
 sed -i "s/dir=\/var\/www/&\/mrtg/" /etc/thttpd/thttpd.conf

/etc/mrtg.cfg mit folgendem Inhalt versehen:

 EnableIPv6: no
 WorkDir: /var/www/mrtg
 Options[[_]]:
 YSize[[_]]: 150

 pagetop[[tracker-conn]]: <h1>tracker - Connections/min</h1><hr>
 target[[tracker-conn]]: `curl http://<IP-ADRESSE-DES-TRACKERS>:6969/stats?mode=conn`
 maxbytes[[tracker-conn]]: 100000000
 title[[tracker-conn]]: Connections/min
 options[[tracker-conn]]: growright, nopercent, perminute
 ylegend[[tracker-conn]]: Requests/min
 shortlegend[[tracker-conn]]: requests/min
 legendI[[tracker-conn]]: Requests
 legendO[[tracker-conn]]: Announces
 legend1[[tracker-conn]]: Requests
 legend2[[tracker-conn]]: Announces

 pagetop[[tracker-peer]]: &#60;h1&#62;tracker - Downloaders and Seeders&#60;/h1&#62;&#60;hr&#62;
 target[[tracker-peer]]: `curl http://<IP-ADRESSE-DES-TRACKERS>:6969/stats?mode=peer`
 maxbytes[[tracker-peer]]: 100000000
 title[[tracker-peer]]: Downloaders and Seeders
 options[[tracker-peer]]: growright, nopercent, gauge
 ylegend[[tracker-peer]]: Peers
 shortlegend[[tracker-peer]]: peers
 legendI[[tracker-peer]]: Downloaders
 legendO[[tracker-peer]]: Seeders
 legend1[[tracker-peer]]: Number of Downloaders and Seeders for complete Tracker
 legend2[[tracker-peer]]: Number of Seeders for complete Tracker

 pagetop[[tracker-udp4]]: &#60;h1&#62;tracker - UDP Connections&#60;/h1&#62;&#60;hr&#62;
 target[[tracker-udp4]]: `curl http://<IP-ADRESSE-DES-TRACKERS>:6969/stats?mode=udp4`
 maxbytes[[tracker-udp4]]: 100000000
 title[[tracker-udp4]]: UDP connections
 options[[tracker-udp4]]: growright, nopercent, perminute
 ylegend[[tracker-udp4]]: UDP requests/min
 shortlegend[[tracker-udp4]]: udp requests/min
 legendi[[tracker-udp4]]: Requests                                 
 legendo[[tracker-udp4]]: Announces
 legend1[[tracker-udp4]]: Requests
 legend2[[tracker-udp4]]: Announces

 pagetop[[tracker-tcp4]]: &#60;h1&#62;tracker - TCP Connections&#60;/h1&#62;&#60;hr&#62;
 target[[tracker-tcp4]]: `curl http://<IP-ADRESSE-DES-TRACKERS>:6969/stats?mode=tcp4`
 maxbytes[[tracker-tcp4]]: 100000000
 title[[tracker-tcp4]]: TCP connections
 options[[tracker-tcp4]]: growright, nopercent, perminute
 ylegend[[tracker-tcp4]]: TCP requests/min
 shortlegend[[tracker-tcp4]]: tcp requests/min
 legendi[[tracker-tcp4]]: Requests
 legendo[[tracker-tcp4]]: Announces
 legend1[[tracker-tcp4]]: Requests
 legend2[[tracker-tcp4]]: Announces

 pagetop[[tracker-scrp]]: &#60;h1&#62;tracker - Scrape Connetions&#60;/h1&#62;&#60;hr&#62;
 target[[tracker-scrp]]: `curl http://<IP-ADRESSE-DES-TRACKERS>:6969/stats?mode=scrp`
 maxbytes[[tracker-scrp]]: 100000000
 title[[tracker-scrp]]: Scrape connections
 options[[tracker-scrp]]: growright, nopercent, perminute
 ylegend[[tracker-scrp]]: Scrape requests/min
 shortlegend[[tracker-scrp]]: scrape requests/min
 legendi[[tracker-scrp]]: TCP Scrapes
 legendo[[tracker-scrp]]: UDP Scrapes
 legend1[[tracker-scrp]]: TCP Scrapes
 legend2[[tracker-scrp]]: UDP Scrapes

 pagetop[[tracker-torr]]: &#60;h1&#62;tracker - Number of Torrents&#60;/h1&#62;&#60;hr&#62;
 target[[tracker-torr]]: `curl http://<IP-ADRESSE-DES-TRACKERS>:6969/stats?mode=torr`
 maxbytes[[tracker-torr]]: 100000000
 title[[tracker-torr]]: Number of Torrents
 options[[tracker-torr]]: growright, nopercent, gauge
 ylegend[[tracker-torr]]: Torrents
 shortlegend[[tracker-torr]]: torrents
 legendi[[tracker-torr]]: Torrents
 legendo[[tracker-torr]]:
 legend1[[tracker-torr]]: Torrents
 legend2[[tracker-torr]]:

Nach dem ersten erfolgreichen Durchlaufe (guckst Du „tail /var/log/mrtg/mrtg.log“) fehlt nun noch ein letzter Befehl:

 /usr/bin/indexmaker /etc/mrtg.cfg > /var/www/mrtg/index.html

Danach kann man die root-Rechte per „exit“ natürlich wieder abgeben. ;-)

mktorrent

(etwas zum generieren von .torrent-Dateien)

 su -
 aptitude install mktorrent
 exit
 mktorrent -a http://<IP-DES-SERVERS-AUF-DEM-OPENTRACKER-LAEUFT>:6969/announce <VERZEICHNIS-MIT-GROSSEN-DATEIEN>/

(lenny: quellen downloaden, make, ausfuehren und fertig!)

<VERZEICHNIS-MIT-GROSSEN-DATEIEN>.torrent an alle verteilen (per download, script, cssh,…)

torrent-Client

Wenn ich mich in dem Verzeichnis, in der die .torrent-Datei UND die zu verteilenden Dateien im Unterverzeichnis <VERZEICHNIS-MIT-GROSSEN-DATEIEN> befinde:

 su -
 aptitude install rtorrent screen
 exit
 screen
 rtorrent .torrent
 <strg>+<a> <strg>+<d>

Jetzt nur noch per Cluster-SSH auf jedem Client rtorrent und screen installieren und rtorrent ebenfalls starten (natürlich ohne das Unterverzeichnis mit den großen Dateien)…

bereits nach wenigen sekunden werden auch sie seeden und so die netzlast gleichmäßig verteilen…

was sich ab zehn Clients im 100MBit-Netz schon fast wie ein 1GBit-Netz anfühlt!