Hadoop Web UI via FoxyProxy & ssh

Kurt Klinner

Im Rahmen eines Big Data Projektes wurde ich gebeten externen Entwicklern Zugriff auf die Web UIs des Resourcemanager & Co. zu geben. Problem an der Stelle war, das die eigentlichen Hadoop Nodes über die privaten IPs / Hostnamen kommunizieren bzw. die Web Interfaces diese referenzieren und somit der Ansatz "ich mach mal eine Reihe public ips, pass die Firewallregeln an und lass die Kollegen so drauf" scheitert.

Die Lösung war eine Kombination aus SSH/SOCKS 5 proxy und FoxyProxy als Firefox Plugin.

Im ersten Schritt öffnen wir einen SSH Tunnel zu einem der Rechner der über eine public IP verfügt (Voraussetzung für das folgende Beispiel ist natürlich das der Publickey des Users auf dem Remotehost bereits hinterlegt ist)

ssh -CTN -D 6666 USERNAME@ipXX-XX-XX-XX.pbiaas.com

(die Erläuterung zu den einzelnen Switches gibt es unter explainshell.com :-) http://www.explainshell.com/explain?cmd=ssh+-CTN+-D). Wichtig ist in erster Linie der Schalter -D, der den Port festlegt, den man lokal anspricht und über den die Requests an die Remoteseite gehen.

Um nun die diversen Weboberflächen nutzen zu können benötigen wir das FoxyProxy Addon im Firefox.

Im Bereich Allgemein stellen wir sicher, dass die Option "DNS-Auflösung für Hostnamen, die durch diesen Proxy geladen werden, entfernt ausführen" aktiv ist, vergeben einen sprechenden Namen für diese Proxykonfiguration und passen ggf. die Farbeauswahl an.

Im nächsten Schritt spezifizieren wir die Proxy-Details, in dem wir die Option "Manuelle Proxy-Konfiguration" wählen. In den zugehörigen Eingabefeldern spezifizieren wir die IP und Port (in unserem Fall als localhost und 6666, der Port den wir beim SSH Aufruf oben angegeben haben) und aktivieren die Socks-Proxy / SOCKS v5 Option

Optional können wir, falls mehrere Proxy-Konfigurationen im Einsatz sind im Bereich de URL-Muster Patterns angeben, für die die jeweiligen Einstellungen nur genutzt werden sollen.

Et voilà wir sind bereit loszulegen. Proxy-Konfiguration aktivieren, die entsprechende URL aufrufen und los gehts