Supportnet Computer
Planet of Tech

Supportnet / Forum / Webseiten/HTML

Mehrere WebServer (VMs) logisch zusammenfassen?





Frage

Guten Tag alle miteinander, ich habe zur Zeit ein mittelschweres Problem: Ich bin gerade dabei, in der Firma mehrere Virtuelle Maschinen (auf Basis von VMware Server) aufzusetzen, auf denen unsere WebServices (Kalender, Wiki, Zeiterfassung, etc) laufen sollen. Die Virtuellen Maschinen stellen für mich auch nicht das Problem dar... Die Schwierigkeit besteht darin, diese VMs ins Internet zu bekommen! Ich möchte vermeiden, jede einzelne VM bei einem Dienst wie z. B. DynDNS anzumelden. Meine Ideallösung sähe so aus, daß ich eine VM konfiguriere, die als eine Art "Vermittler" fungiert, idealerweise wäre das mit der bei uns eingesetzten Firewall (ipfilter unter NetBSD 3.1) umzusetzen. Wichtig bei der ganzen Geschichte ist zusätzlich noch, daß die gesamte kommunikation über Port 80 laufen muss, da meine Kollegen auch von ausserhalb (aus anderen Firmen mit durchaus restriktiven Firewalls) auf unsere WebServices zugreifen können müssen. Also muss die Unterscheidung, an welche VM intern weitervermittelt werden muss, an der eingegebenen WebAdresse laufen. Um das mal schematisch darzustellen: [code] extern arbeitender Kollege gibt Web-Adresse ein http://www.unsereAdresse/GewünschteVM Restriktive Firewall des Kunden Internet Unsere Firewall (NetBSD 3.1, ipfilter) Vermittler leitet weiter VM "GewünschteVM" antwortet (Ubuntu 8.04 Server, Apache) [/code] Gibt es eine (möglichst kostenfreie) Software, die die Aufgabe dieses Vermittlers übernehmen kann? Wie gesagt, die Unterscheidung kann nicht auf Port-Ebene laufen, sondern muss anhand der eingegebenen Adresse funktionieren... Ich freue mich über jeden hilfreichen Ansatz! MfG, Jan Schmitte

Antwort 1 von Flupo

Mein erster Gedanke dazu ist eigentlich recht einfach:
Leite die Anfragen alle an einen Webserver, der in der Lage ist, die anderen zu erreichen. Auf diesem legst du dann für jede Anwendung eine HTML/PHP-Seite an, die automatisch auf den richtigen Webserver weiterverbindet.

HTML (im HEAD-Bereich):
<meta http-equiv="refresh" content="0; URL=http://webserver1/startseite.html">

PHP:
<?
Header("Location: http://webserver1/startseite.php");
exit();
?> 


Die PHP-Lösung arbeitet meist etwas schneller.

Gruß Flupo

Antwort 2 von Flupo

Hier noch ein recht ausführlicher Artikel zu Weiterleitungen.

Gruß Flupo

Antwort 3 von rabies

Ich weiß nicht, wie's bei Apache aussieht, aber Lighttpd hat zum Beispiel das Modul "mod_proxy". Dieses fungiert als LoadBalancer und schleift Anfragen je nach Bedingung auf einen anderen Host durch.

Beispiel-Konfiguration sähe so aus:
$HTTP["host"] == "www.example.org" {
   $HTTP["url"] =~ "^/VMNr1/" {
      proxy.balance = "hash"
      proxy.server  = ( "" => ( 
         ( "host" => "192.168.0.100" )
       ))
   }
   $HTTP["url"] =~ "^/VMNr2/" {
      proxy.balance = "hash"
      proxy.server  = ( "" => ( 
         ( "host" => "192.168.0.101" )
       ))
   }
}

Erster Teil: mod_proxy leitet alle Anfragen, die an die Domain www.example.org gehen und VMNr1 anfragen, auf Server 192.168.0.100 um.

Zweiter Teil: mod_proxy leitet alle Anfragen, die an die Domain www.example.org gehen und VMNr2 anfragen, auf Server 192.168.0.101 um.


Apache sollte soetwas denke ich auch anbieten.


Nähere Informationen zu mod_proxy unter Lighttpd.

Grüße, rabies.

Antwort 4 von wellon

ich glaub du hast da nen denkfehler drin. du forderst, dass der server mit den anderen kommunizieren können muss, aber du lässt ihn dann doch ausschliesslich mit dem client quatschen. eine weiterleitung ist kein proxy! du sagst dem client nur wo er hin soll, aber du gibst ihm keinen content durch.

Antwort 5 von JanSchmitte

Uiuiui, so viel Hilfe,


erst einmal Danke allen!

@Flupo
Ich denke, wellon hat Recht... Eine einfache Weiterleitung wird nicht funktionieren, da die interne IP meiner VMs im Internet ja nicht verfügbar ist, genau das möchte ich ja vermeiden!

@rabies
Das ist wohl der richtige Ansatz. "Reverse Proxy" nennt sich das und scheint genau die Funktion zu sein, die ich benötige!

Apache kann das auch, unter http://www.apachetutor.org/admin/reverseproxies steht dazu eine Anleitung... Ich brauche also die Module mod_proxy und mod_proxy_html, damit Anfragen aus dem Internet vom Reverse Proxy an den entsprechenden Virtuellen Server bei uns im LAN weitergeleitet werden. Nach meinem Verständnis ist das von aussen absolut unsichtbar, dort ist nur der Reverse Proxy sichtbar, der nach aussen hin alle Anfragen entgegennicmmt und auch beantwortet


Hach ist das schön, wenn man weiss, wonach man suchen muss!


Danke allen Beteiligten!


MfG, Jan

Antwort 6 von Flupo

Zitat:
Eine einfache Weiterleitung wird nicht funktionieren, da die interne IP meiner VMs im Internet ja nicht verfügbar ist, genau das möchte ich ja vermeiden!

Wenn die Weiterleitung erst hinter dem Internet-Gateway erfolgt, sollte es gehen. Von "draußen" wählst du ja nur die Adresse des Gateways an. Das leitet alle Anfagen auf den "Verteiler-Webserver" weiter, der dann die Verteilung auf die VM's erledigt.
Kann sein, dass ich da falsch liege, aber ich denke, dass das geht.

Gruß Flupo

Antwort 7 von rabies

So eine Weiterleitung funktioniert in diesem Falle nicht, Flupo. Ich denke, alles soll eben über eine Adresse erreichbar sein.
Bei Deiner Methode müssten die VMs einzeln und jede für sich direkt aus dem Netz erreichbar sein.

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: