In den meisten Fällen gibt es zu einem Servernamen genau eine IP-Adresse (oder je eine IPv4- und eine IPv6-Adresse). Stärker in Anspruch genommene Dienste verteilen die Last aber oftmals auf mehr als eine Maschine. In solchen Fällen werden gerne mehr als eine IP-Adresse pro Servernamen zurückgegeben. Daraufhin wählt das Programm, welches eine Verbindung aufbauen möchte, willkürlich eine der zur Auswahl stehenden IP-Adressen aus. Auf diese Weise kann die Last zwischen mehreren (identisch konfigurierten) Servern aufgeteilt werden.
Ein bekanntes Beispiel eines solchen Falles im Kontext von Debian
Paketspiegeln ist ftp.us.debian.org
. Aufgrund der Größe der USA wird
die Last des dortigen primären Debian-Paketmirrors auf drei Server
aufgeteilt.
IP-Verteilung des primären Debian-Paketmirrors für die USA.
$ host ftp.us.debian.org ftp.us.debian.org has address 64.50.236.52 ftp.us.debian.org has address 128.61.240.89 ftp.us.debian.org has address 64.50.233.100 ftp.us.debian.org has IPv6 address 2610:148:1f10:3::89 $
Auch wenn es vier IP-Adressen sind, handelt es sich jedoch nur um drei
Server. Sowohl die IPv6-Adresse 2610:148:1f10:3::89
, als auch die
IPv4-Adresse 128.61.240.89
gehören zum Server debian.gtisc.gatech.edu
.
Bei diesem Verfahren wird einer IP-Adresse ein geographischer Standort zugeordnet. Die Genauigkeit dieser Funktion schwankt je nach Internet-Anbieter, Datenbank und eingesetztem Verfahren.
Zu beachten ist dabei, dass der angegebene Standort nicht notwendigerweise dem tatsächlichen Standort des Rechners mit dieser IP-Adresse entspricht. Meistens ist das der Standort des Providers, von dem Sie diese IP-Adresse bezogen haben bzw. der diese IP-Adresse vergeben hat.
Eine Offline-Zuordnung ermöglicht beispielsweise das Paket geoip-database [Debian-Paket-geoip-database]. Es enthält eine entsprechende Datenbank mit stets bestehenden, festen IP-Adressen. Darüberhinaus existieren jedoch auch deutlich exaktere Alternativen.
Diese Funktionalitat lässt sich nutzen, um anhand der anfragenden IP-Adresse automatisiert einen geographisch nahen Paketmirror zu finden. Bei Debian ist dies an mehreren Stellen im Einsatz.
CDN steht für "Content Distribution Network" und beschreibt einen Service, der über die Welt verteilt viele Server stehen hat und je nach Qrt der Anfrage ein anderer Server kontaktiert wird. Die Verteilung auf verschiedene Server passiert dabei auf unterschiedliche Weisen. Mal antwortet unter der selben IP-Adresse ein anderer Server und die Verteilung wird per Routing gelöst. Mal kommt je nach Ort der DNS-Anfrage eine andere IP-Adresse als DNS-Antwort zurück.
Die Sicherheitsaktualisierungen von Debian kommen nicht über das
normale Spiegelnetzwerk, welches regulär nur alle sechs Stunden
aktualisiert wird. Stattdessen besteht ein separates Spiegelnetzwerk
unter dem Hostnamen security.debian.org
, das nur nach Bedarf
aktualisiert wird. Dieses Spiegelnetzwerk verwendet schon seit
längerem ein CDN.
Seit einigen Jahren ist aber auch die Standard-Einstellung in der
sources.list
-Datei von Debian der Hostname deb.debian.org
, der
auch wiederum auf ein CDN zeigt, zur Zeit auf das CDN von Fastly
[debian-partners-fastly].
Eine DNS-Anfrage auf diesen Hostnamen aus der Schweiz sieht so aus:
$ host deb.debian.org deb.debian.org is an alias for debian.map.fastlydns.net. debian.map.fastlydns.net has address 146.75.122.132 debian.map.fastlydns.net has IPv6 address 2a04:4e42:8e::644
Eine DNS-Anfrage aus Schweden dagegen anders:
$ host deb.debian.org deb.debian.org is an alias for debian.map.fastlydns.net. debian.map.fastlydns.net has address 199.232.18.132 debian.map.fastlydns.net has IPv6 address 2a04:4e42:41::644
APT kann seit Version 0.8 (ca. Ende 2010, ab Debian 6 Squeeze und
Ubuntu 10.10 Maverick Meerkat) über das Schlüsselwort mirror
in der
Datei /etc/apt/sources.list
seine Paketquelle aus einer Liste
von Paketspiegeln aussuchen [Vogt-Apt-Mirror].
Offizielle Mirror-Listen im passenden Format gibt es bisher jedoch nur von Ubuntu. Für Ubuntu 12.04 LTS Precise Pangolin sieht der Eintrag für generell gut erreichbare Paketmirrors wie folgt aus:
deb mirror://mirrors.ubuntu.com/mirrors.txt precise main restricted universe multiverse
In diesem Fall wird z.B. beim Aufruf von apt-get update
zunächst die
Mirror-Liste unter http://mirrors.ubuntu.com/mirrors.txt
heruntergeladen. In dieser Datei stehen die Basis-URLs mehrerer
Paketquellen. Danach sucht sich APT per Zufall eine der dieser
Paketquellen aus und lädt von dort die spezifizierten Paketlisten
herunter.
Clientseitig nutzt dieses Verfahren keinerlei GeoIP-Informationen, sondern wählt pro Maschine einen zufälligen Paketspiegel aus. Zunächst deutet o.g. URL auf eine simple Textdatei hin. Diese Datei wird jedoch bei jedem Aufruf automatisch neu generiert und — ähnlich wie die Weiterleitungen beim Debian Redirector — je nach anfragender IP dynamisch mit URLs anderer Spiegel gefüllt. Laden Sie diese Datei aus der Schweiz herunter, kann sie z.B. so aussehen:
http://ubuntu.ethz.ch/ubuntu/ http://archive.ubuntu.csg.uzh.ch/ubuntu/ http://mirror.switch.ch/ftp/mirror/ubuntu/ http://archive.ubuntu.com/ubuntu/
Aus Österreich sieht die Liste dagegen z.B. so aus:
http://ubuntu.lagis.at/ubuntu/ http://ubuntu.inode.at/ubuntu/ http://ubuntu.uni-klu.ac.at/ubuntu/ http://gd.tuwien.ac.at/opsys/linux/ubuntu/archive/ http://archive.ubuntu.com/ubuntu/
Erfragen Sie die Liste in Deutschland oder Frankreich, kommen sogar noch deutlich mehr Paketspiegel zur Auswahl. Eine Abfrage von einem Server, der bei dem deutschen Internetdienstleister Hetzner gehostet wird, ergab 34 aufgelistete Paketspiegel[9].
Auffällig ist allerdings, dass als letzter Paketmirror in dieser Liste
jeweils immer auch noch archive.ubuntu.com
angegeben wird. Unter
diesem Hostnamen sind per DNS Round Robin wiederum zur Zeit sechs
verschiedene Server von Canonical erreichbar.
Alternativ zum dynamisch generierten mirrors.txt
können Sie
bei Ubuntu auch eine Paketspiegel-Liste per Land angeben. Für
Deutschland gibt es eine Liste von deutschen Ubuntu-Paketspiegeln unter
http://mirrors.ubuntu.com/DE.txt
. Diese verwenden Sie z.B. für Ubuntu
14.04 LTS Trusty Tahr wie folgt in der /etc/apt/sources.list
:
deb mirror://mirrors.ubuntu.com/DE.txt trusty main restricted universe multiverse
Wenn Sie möchten, können Sie dieses Feature von APT natürlich auch nutzen, um eine Liste ihrer favorisierten Paketspiegel selbst zusammenzustellen — auch unter Debian.
Unter https://www.debian-paketmanagement.de/hetzner-mirrors.txt
haben
wir z.B. eine Liste von Paketspiegeln für Debian erstellt, die alle bei
dem deutschen Internetdienstleister Hetzner gehostet sind (ohne Gewähr)
und somit für andere ebenfalls dort gehostete Server nicht mit ins
Trafficvolumen zählen. Der passende Eintrag in der
/etc/apt/sources.list
sind dann so aus:
deb mirror://www.debian-paketmanagement.de/hetzner-mirrors.txt wheezy main contrib non-free
Egal, ob Sie eine der o.g. Methoden zur automatischen Auswahl des
Paketspiegels verwendet haben oder ob Sie einen bestimmten Hostnamen in
ihrer /etc/apt/sources.list
eingetragen haben — oft stellt
sich die Frage: Von welchem Paketspiegel bezieht APT denn nun die
Paketlisten und Pakete tatsächlich? APT gibt diese Information leider
nicht allzu leicht preis.
Falls einem der schlussendlich verwendeten Hostnamen mehr als eine IP
zugewiesen ist, wird eine davon zufällig ausgewählt. APT und
aptitude
verwenden diese IP-Adresse intern, zeigen sie aber erst
dann an, wenn Sie eines der Programme zur Paketverwaltung benutzen und
die zusätzliche Option -o Debug::pkgAcquire::Worker=true
verwenden.
Damit wird APT sehr gesprächig und zeigt en detail, welche Einstellungen
es benutzt. In dem nachfolgendem Beispiel sehen Sie das auszugsweise bei
der Installation des Pakets netselect-apt.
Informationen zum tatsächlich genutzten Paketmirror bei der Verwendung von apt-get
.
# apt-get -o Debug::pkgAcquire::Worker=true install netselect-apt Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: netselect The following NEW packages will be installed: netselect netselect-apt 0 upgraded, 2 newly installed, 0 to remove and 4 not upgraded. Starting method '/usr/lib/apt/methods/http' ... -> http:600%20URI%20Acquire%0aURI:%20http://ftp.ch.debian.org/debian/pool/main/n/netselect/netselect_0.3.ds1-25_amd64.deb%0aFilename:%20/var/cache/apt/archives/partial/netselect_0.3.ds1-25_amd64.deb%0a%0a <- http:102%20Status%0aURI:%20http://ftp.ch.debian.org/debian/pool/main/n/netselect/netselect_0.3.ds1-25_amd64.deb%0aMessage:%20Connecting%20to%20ftp.ch.debian.org%20(129.132.53.171) ... #
Deutlich übersichtlicher ist jedoch die Demo-Seite des Debian Redirectors [Debian-Redirector]. Neben dem aktuellen Standort — hier Berlin — zeigt Abbildung 3.5, „Auswahl des Paketmirrors über den Debian Redirector [Debian-Redirector]“ die ausgewählten Paketquellen als Hostname an.
Weitere Ansatzpunkte zur Leistungsfähigkeit eines bestimmten Mirrors
liefern Ihnen die Werkzeuge netselect
bzw. netselect-apt
. Beide
Programme stellen wir unter Bandbreite zum Paketmirror testen in
Abschnitt 3.6, „Am besten erreichbaren Paketmirror finden“ ausführlich vor.
[9] Um keine unübersichtlich langen Beispiele abzudrucken, wurden hier absichtlich die beiden Beispiele aus dem deutschsprachigen Raum gewählt, die relativ kurze Listen ergeben.