Der Apache Traffic Server (TS abgekürzt) ist ein stabiles und zuverlässiges Tool, um einen Reverse Proxy zu realisieren. Wir nutzen dieses Tool für alle Arten von HTTP(S) Routing und Mapping zwischen externen URLs und internen Services. Auch komplexere Einstellungen wie das Verwalten von mehreren SSL Zertifikaten pro Domain oder präzise HTTP Method Filter wird von TS unterstützt und bleibt auch unter Hochlast performant. (Der Apache TS war ursprünglich ein kommerzielles Produkt von Yahoo!, wurde aber im Nov. 2009 an die Apache Foundation gespendet)

„Handling over 400TB a day at Yahoo! both as forward and reverse proxies, Traffic Server is battled hardened.“

 

Der Nachteil dieses großartigen Tools ist deren Konfiguration. Es gibt dutzende Konfigurationsdateien, meist länglichem Formats. Grundlegend besteht die Konfiguration aus einer enorm großen Liste von Key/Value-Paaren; einige davon sind eher kryptischer Natur. Die meisten Werte sind Nummern, deren Bedeutung in der Dokumentation nachzulesen sind. Komplexere Einstellungen wie bspw. das Method Filtering für eingehende HTTP Requests ist eine Kombination aus 31 Bits, dargestellt als Integer-Zahl. Jedes dieser Bits steht für ein bestimmtes Flag. Eine Änderung eines einzelnen Flags ist also aufwändig. (Dezimal nach Binär umrechnen, Flags setzen, zurück von Binar nach Dezimal umrechnen)

Solche Einstellungen möchte man nicht zwei mal am Tag ändern müssen. Um dieses Dilemma zu umgehen, haben wir ein kleines Web-Frontend entwickelt, welches mit zwei Mausklicks remap und redirect Regeln für die remap.config Konfiguration verwaltet.

Traffic Server

 

Der komplette Ruby-Code ist knapp 100 Zeilen lang + etwas CSS für die Optik. Für die Programmierung wurde das Ramaze Web Framework verwendet. Auf eine separate Datenbank wurde verzichtet und alle relevanten Daten direkt in der Konfigurationsdatei selbst gespeichert. Es ist auch nicht nötig, einen Webserver wie Apache oder LigHTTPd aufzusetzen, um die Requests an den Ruby-Code weiterzureichen und die Responses auszuliefern. Ein kleiner Webserver ist bereits mit an Board.

Es wird lediglich Ruby (Version 1.8.7 ist ausreichend) benötigt. Die Installation ist einfach: Zuerst wird das Repository von Github gecloned. Anschließend wird mit bundle install sichergestellt dass alle benötigten Gems (rack, ramaze, webrick) installiert sind. Das Script frontend.rb stellt die eigentliche Web-Oberfläche unter http://<ip>:7000/ zur Verfügung. Jetzt lässt sich mit dem Reverse Proxy Frontend ein Mapping für das Reverse Proxy Frontend anlegen 🙂

0 Kommentare

Dein Kommentar

An Diskussion beteiligen?
Hinterlasse uns Deinen Kommentar!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.