Ich bitte um Unterstützung beim Lösungsansatz.
Das Scenario =
Ein Server mit Lan (eth0).
Drei VM's an einen virtuellen Netzwerk. (192.168.122.0)
Aufgabe des Prog's:
Am eth0 eingehende Anfragen je nach URL an eine der drei VM's weiterleiten.
Die Antwort der entsprechenden VM an der Absender / Client über eth0 (zurück)-senden.
Wie packe ich dieses Problem grundlegend an.
MrNiceTry
Lösungsansatz gesucht: Abhängiges Port-Forwarding
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo MrNiceTry!MrNiceTry hat geschrieben:Am eth0 eingehende Anfragen je nach URL an eine der drei VM's weiterleiten.
Die Antwort der entsprechenden VM an der Absender / Client über eth0 (zurück)-senden.
Falls es sich um HTTP-Anfragen handelt, kannst du den Apache dafür verwenden. Dieser kann mit "Virtuellen Servern" sehr gut umgehen. Der Apache entscheidet anhand der URL (Domäne), welcher "VirtualHost"-Eintrag in der Konfiguration für die Anfrage zuständig ist.
Und für die Weiterleitung kannst du das Apache-Modul mod_proxy verwenden. Damit kannst du die Anfragen intern an eine andere IP-Adresse und Port weiterleiten. Die Rückgabe dieser Anfrage wird dann vom Apachen wieder an den ursprünglichen "Fragesteller" zurück gegeben.
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- Defnull
- User
- Beiträge: 778
- Registriert: Donnerstag 18. Juni 2009, 22:09
- Wohnort: Göttingen
- Kontaktdaten:
http://www.apsis.ch/pound/ ist für genau sowas da.
Bottle: Micro Web Framework + Development Blog
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo MrNiceTry!MrNiceTry hat geschrieben:Oder habe ich hier meine Ansprüche an Python zu hoch angesetzt?
Natürlich kannst du so etwas auch mit Python programmieren. Ich bin etwas geübt in der Konfiguration des Apachen. So brauche ich für die Installation und Konfiguration eines für diesen Zweck eingerichteten Apachen vielleicht eine viertel Stunde. Das dürfte sich bei der Installation und Konfiguration von Pound sicher in ähnlichen Verhältnissen bewegen. Und beides dürfte hochperformant sein.
Wenn du dir so etwas nachprogrammieren möchtest, dann musst/solltest du auch an Multithreading denken. Sonst könnte/wird es passieren, dass immer nur ein Request nach dem anderen abgearbeitet wird. Dann brauchst du etwas was die Anfrage erkennt und beantwortet. Z.B. SimpleHTTPServer und urllib. Die Anfrage muss jetzt vom Proxy an den externen Server gestellt werden. Z.B. mit httplib. Bis dieses Programm annähernd so performant läuft, wie die bereits existierenden Lösungen, dürfte einige Zeit vergehen.
mfg
Gerold
PS:
gerold@ubuntu:~$ aptitude show pound
Paket: pound
Neu: ja
Zustand: nicht installiert
Version: 2.4.5-3
Priorität: extra
Bereich: universe/net
Verwalter: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Unkomprimierte Größe: 279k
Hängt ab von: libc6 (>= 2.4), libpcre3 (>= 7.7), libssl0.9.8 (>= 0.9.8f-5)
Beschreibung: reverse proxy, load balancer and HTTPS front-end for Web servers
Pound was developed to enable distributing the load among several Web-servers
and to allow for a convenient SSL wrapper for those Web servers that do not
offer it natively.
Homepage: http://www.apsis.ch/pound/
gerold@ubuntu:~$
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Hab Pound mal angeschaut.
Interessant.
Hab zwar noch nicht so ganz verstanden wie es funktioniert, scheint aber vielversprechend.
Was ist mit anderen Protokollen ?
SSH, SIP o.ä. ?
Kann ich die auch mit Pound umleiten ?
MrNiceTry
Interessant.
Hab zwar noch nicht so ganz verstanden wie es funktioniert, scheint aber vielversprechend.
Was ist mit anderen Protokollen ?
SSH, SIP o.ä. ?
Kann ich die auch mit Pound umleiten ?
MrNiceTry