Karten - Open Street Map

Einleitung

Schon seit einigen Monaten hat sich Ralf DH3WR mit der vom Internet unabhängigen Bereitstellung von Kartenmaterial im Hamnet beschäftigt. Durch die Verfügbarkeit von neuer, leistungsfähiger Server-Hardware in Aachen kann nun dieser Dienst im zuverlässigen Produktionsbetrieb angeboten werden. Basierend auf switch2osm.org und einer Ubuntu 14.04 LTS Installation wurde ein Open Street Map Karten Server aufgesetzt.

Details zur Funktion des Kachelservers

Karten bestehen aus Teil-Bildern, die als Kacheln bezeichnet werden. Diese Kacheln werden aus dem OSM Datenbestand erzeugt. Dieser ist in einer ca. 700 GB (!) großen Datenbank auf Basis von postgresql auf einem SSD-LVM von 1,5 TB Größe gespeichert. Regemäßige Updates dieser Datenbank garantieren aktuelle Karten. Aus dieser Datenbank werden die für die jeweilige Kachel benötigten Daten ausgewählt und damit die Kachel "gemalt". Diese Daten stehen unter http://2com.db0sda.ampr.org/osm zur Verfügung. Es sind bis zur Zoomstufe 14 alle Kacheln der Welt bereits auf Vorrat erzeugt worden. Noch nicht vorhandene Kacheln werden bei Bedarf gemalt (gerendert). Damit dies in einer vertretbaren Zeit abgeschlossen ist, sind sowohl die SSDs als auch schnelle CPUs notwendig.

Struktur des verteilen Caching Clusters

Im Hamnet wird die Ladezeit einer Karte durch zwei Faktoren bestimmt:

  1. Geschwindigkeit der Verbindung vom User zum Kachel-Server
  2. Geschwindigkeit der Bereitstellung der Daten durch den Kachel-Server

Beide Punkte können durch einen verteilten Caching Cluster verbessert werden. Durch Zwischenspeicher-Server (caching server) wird die Last des zentralen Kachel-Server sigifikant vermindert. Viele Kacheln ändern sich nur selten und müssen daher nicht jedes Mal beim zentralen Server angefragt werden. Wenn sich dieses Konzept weiter im Hamnet verbreitet, kann durch dynamische Anpassung der Anforderungsadresse der Kacheln auch ein zum jeweiligen Nutzer nächster caching server verwendet werden. Dies steigert gleichzeitig die Reaktionszeit und senkt den Datenverkehr auf den Backbone-Linkstrecken. Als caching server wird die Software Apache Traffic Server. Dieser wird u.a. bei der Suchmaschine Yahoo! eingesetzt, wo er täglich 400 TB Daten als Lastverteiler bewegt. Damit ist diese Software als erprobt einzustufen. Das folgende Bild zeigt den aktuellen Stand des Caching Clusters im Hamnet.

 OSM Proxy Overview

 

Dienste und Webseiten die OSM im Hamnet nutzen

Es gibt mehrere Dienste, die Open Street Map im Hamnet benutzen.

karten.db0sda.ampr.org (Link)

Einer der zentralen Caching Server stellt eine interaktive OSM Karte bereit. Auf dieser kann ebenfalls mit einfach Werkzeugen gemalt werden. Dazu zählt das festlegen von Punkt, Linien und Flächen.

aprs.db0sda.ampr.org (Link)

Eine Kartendarstellung von APRS Postionen von Amateurfunkstationen. Diese Seite wurden von Sven Wittig dem Original aprs.fi nachempfunden. Die Positionsdatenbank auf Basis von MySQL befindet sich ebenfalls im Hamnet und wird auch über dieses mit Daten gefüllt. Den Code dazu haben Claudia Kraft und Ralf Wilke geschrieben. Insgesamt kann damit eine Echtzeitdarstellung von Positionsdaten ohne Internet-Zugang erreicht werden. Dies kann im Katastrophenfall für THW oder BOS interessant sein.

srv.db0ii.ampr.org/aprs (Link)

Diese Installtion stellt einen Klon mit Standort Mönchengladbach von aprs.db0sda.ampr.org dar. Sinn ist es, im Raum Mönchengladabach / Düsseldort einen eigenen Server für die APRS Kartendarstellung zu haben.

Aufruf zur Beteiligung am verteilten Caching Cluster

Damit diese Idee und Funktionalität im Hamnet weiter verbreitet werden, rufen wir zum Mitmachen auf. Jeder Hamnet-Knoten, der einen Linux-Server und min. 1 GB Festplattenspeicher zur Verfügung hat, kann einfach ebenfalls einen Caching Server und auf Wunsch auch eine eigene Kartendarstellung auf seiner Webseite betreiben. Die Installation ist einfach und für unerfahrende Sysops in weniger als 20 Minuten durchzuführen.

Anleitung zum Aufsetzen eines Open Street Map Proxys

1. Paket installieren

Für debian basierte Systeme:

apt-get install trafficserver

Für openSuSE: Anleitung zum selbst kompilieren

2. Konfigurieren /etc/trafficserver/storage.config

/var/cache/trafficserver 2560M

Die Größe und der Speicherort können natürlich angepasst werden.

3. Konfigurieren /etc/trafficserver/remap.config (Beispiel)

Diese Datei verbindet die Proxy-URL mit der Quell-URL. Der OSM Proxy sollte vorteilhafterweise auf Port 80 laufen. Wenn auf dem Rechner, auf dem der Proxy-Server laufen soll, auch ein Webserver auf Port 80 läuft, muss man einen Trick anwenden. Dazu stellt man in der Webserver-Config den Webserver von Port 80 auf Port 81 um. Der Traffic Server leitet dann die Anfragen, die sich nicht auf OSM beziehen, auf diesen Port um. Anfragen an xxx.ampr.org/osm werden an den Quell-Kachelserver bei DB0SDA c2com.db0sda.ampr.org weitergeleitet. Die Reihenfolge der Einträge in dieser Datei ist wichtig. Daher zuerst den "/osm" Fall abfangen und dann den allgemeinen "/" Fall. Der Ausdruck "example.db0aaa.ampr.org" ist durch den eigenen Domainnamen zu ersetzen, auf dem der Server laufen soll.

map http://example.db0aaa.ampr.org/osm/ http://c2com.db0sda.ampr.org/osm/
reverse_map http://c2com.db0sda.ampr.org/osm http://example.db0aaa.ampr.org/osm/

map http://example.db0aaa.ampr.org/ http://example.db0aaa.ampr.org:81/
reverse_map http://example.db0aaa.ampr.org:81/ http://example.db0aaa.ampr.org/

4. Konfiguration /etc/trafficserver/records.config

Hier muss der Port auf Port 80 angepasst werden.

CONFIG proxy.config.http.server_ports STRING 80

Das müssten alle notwendigen Änderungen gewesen sein. Wenn nicht, bitte bei uns kurz melden, dann berichtigen wir diese Seite.

5. (optional) Cache auf Vorat befüllen

Wir haben leider keine Möglichkeit gefunden, den Cache mit einem speziellen Kommando zu befüllen. Daher wurde ein Perl-Skript osmcache.pl geschrieben, welches dieses mittels http-Anfragen tut.

#!/usr/bin/perl
use LWP::Simple;
$num_args = $#ARGV + 1;
if ($num_args != 3) {
  print "\nUsage: osmchache.pl minzoom maxzoom FQDN\n";
  exit;
}
$minzoom = $ARGV[0];
$maxzoom = $ARGV[1];

for(my $zoom = $minzoom; $zoom <= $maxzoom; $zoom++) {
  for(my $x = 0; $x <= ((4**($zoom/2))-1); $x++) {
    for(my $y = 0; $y <= ((4**($zoom/2))-1); $y++) {
      $url = "http://$ARGV[2]/osm/$zoom/$x/$y.png\n";
      get($url);
    }
  }
  print ("Zoom: $zoom fertig.\n");
}

Beispielaufruf:

sudo -u xxx nice -n 19 /usr/local/bin/osmcache.pl 1 9 proxy1.db0sda.ampr.org > /dev/null &

6. Mitteilung an RWTH AFU, dass neuer Proxy besteht

Nach erfolgreicher Installation würden wir uns über eine kurze Nachricht freuen, damit wir den neuen Proxy in den Load-Balance-Verbund aufnehmen können.

Aktuelle Seite: Home Projekte Hamnet Infos für Betreiber OSPF Tutorial static-content Karten - Open Street Map