Mehrere Webprojekte für Kunden <-> Mehrere Tomcats?

Michoel

Aktives Mitglied
Hallo Forum,
ich habe nur einen Server zur Verfügung für mehrere Domains und somit mehrere User mit eigenen "kleinen" Webprojekten.

Mit PHP wäre das ganze ja kein Problem, da man mit Apache und Plesk ja mehrere vHosts einrichten könnte.

Nun frage ich mich, wie man jedoch mehrere Java/JSP Anwendungen für mehrere User einrichtet?

1. Variante 1. Jeder User kann in seinem Home-Verzeichnis einen eigenen Tomcat installieren. Der Nachteil, jeder User hat einen eigenen Port. Nur ein User von vielen könnte seinen eigenen Tomcat über mod_jk an den Apache hängen und hätte den Standard-Port von 80. Die restlichen User hätten andere Ports, was nicht so schön ist.


2. Ich habe auch gehört, dass Tomcat mittlerweile auch schon vHost beherscht, dann müsste ich nur einen Tomcat installieren und alle User erhalten einen vHost. Ich habe aber gelesen:

Kommt darauf an, was du konkret erreichen willst und wie sehr du deinen Kunden vertraust. Wenn du die VirtualHosting-Funktion von Tomcat benutzt, laufen eben alle Java-Anwendungen von allen Benutzern in der gleichen JVM und im gleichen Systembenutzerkontext (dem des Tomcat eben). Das bedeutet, das alle Benutzer prinzipiell (ohne entsprechend eingerichteten SecurityManager) auf alle Dateien der anderen Benutzer im gleichen Tomcat zugreifen können. Im Zweifel könnte ein "böser" Benutzer auch den Tomcat abschießen und ihn so für die anderen Benutzer unbrauchbar machen.

Also auch nicht das wahre ne?

3. Was gäbe es noch für leicht zu administrierende Varianten? Leider müssen, bzw. sind viele Projekte mit Java/JSP realieiert, so dass Tomcat in Frage kommt. Habe auch gelesen, dass man vor dem Apache ein proxy einrichten kann, der dann entsprechend entweder an apache oder direkt an die richtigen tomcats intern weiterleitet, dann hätte man das Port-Problem nicht. So möglich?

Viele Grüße
 

Noctarius

Top Contributor
Prinzipiell kannst du mit einem vorgeschalteten Apache beliebig viele Domains auf eigene Tomcat-Instanzen umbiegen (diese laufen dann auch alle auf Port 80 wenn du magst). Hierbei sollte man aber bedenken, dass auch ein Apache irgendwann mit Anfragen vollgestopft ist.

Eine weitere Alternative wäre virtuallisieren z.B. mit XEN oder KVM (oder einem Hypervisor wie VMware ESXi). Hier ist KVM sicherlich eine schöne Variante, da es auch gemeinsame Seicherbereiche unterstützt z.B. für Dateien die jede VM Instanz benötigt (z.B. Dateien von Linux, der JVM oder Tomcat), was den benötigten Gesamtspeicher schont.

Hier hätte dann jeder Kunde eine eigene VM, einen eigenen Apache und einen eigenen Tomcat. Speicherbereiche der VMs sind gegeneinander abgetrennt und keiner kann beim anderen Müll machen.

Nachteil der Lösung: Entweder muss auf dem Host-OS ein Proxy laufen, der passend zur Domain die Daten an die VMs weiterleitet (z.B. ein Apache) oder du musst jeder VM eine eigene (echte) IP Adresse zuordnen.
 

Michoel

Aktives Mitglied
ah ok,
d.h., dass man mit mod_jk mehrere tomcat-instanzen verwalten kann, da man entsprechend der domain auf den richtigen tomcat weiterleitet. dann versuche ich zusammenzufassen, vielleicht können andere dies erweitern oder noch andere vorschläge oder bedenken nennen.


1) Virtualisieren. Jeder User hat seinen eigenen abgeschotteten Bereich. Man kann Lasten für verschiedene User anpassen/teilen. VM getrennt, keiner kann Müll machen.

2) Apache mit mod_jk verwaltet mehre tomcat-instanzen. Leicht umzusetzen, jedoch Belastung für den einzelnen Apache bei vielen Anfragen/Usern/Tomcats. VM eigentlich auch getrennt, da jeder einen eigenen Tomcat hat? Nachteil, dass man für mehrere virtuelle Maschinen mehrere IP's braucht oder wiederum einen Apache-Proxy voranschalten muss.

da es auch gemeinsame Seicherbereiche unterstützt z.B. für Dateien die jede VM Instanz benötigt (z.B. Dateien von Linux, der JVM oder Tomcat)

das habe ich nicht ganz verstanden. Gemeinsame Dateien von Linux ist klar, falls man da überhaupt von Linux was nutzen will. Aber JVM wäre ja eigentlich getrennt und jeder hätte seinen eigenen Tomcat, sonst würde die Trennung ja weniger Sinn machen ne? Oder verstehe ich da was falsch.

Grüße
 

Noctarius

Top Contributor
Ja aber die JVM nutzt auch die Runtime Classes von Java und die sind für alle Instanzen die selben. Damit können diese Dateien auch nur einmal im Speicher liegen und von dort gelesen werden. Dieser "shared" Access sorgt eigentlich nur dafür, dass gleiche Dateien nicht x-mal im Speicher vorkommen und so unnötig Arbeitsspeicher vergeuden.

PS: Sauberste Version ist VM z.B. mit KVM. Einfach zu verwalten und sehr sauber in den aktuellen Linux Kernel integriert. Für Windows kann man entweder auf VMware oder auf den Microsoft HyperV (Hypervisor) setzen.

Viele Hoster bieten bereits Ripe-Netzwerke mit mehreren IP-Adressen kostenlos oder für kleinen Obulus an. Man sollte sich zu mindestens mal informieren ob das möglich ist.
 
Zuletzt bearbeitet:

Michoel

Aktives Mitglied
hi,
vielen dank. ich mache mich mal schlau. mit VM habe ich zwar nicht viel erfahrung, lässt sich aber sicher schnell lernen.

nutze auf meinem laptop ubuntu mit virtualbox. wollte zwar letztens kvm testen, aber die installation klappte nicht, da meine cpu/hardware nicht dafür geeignet sei.

grüße
 

Noctarius

Top Contributor
Prinzipiell brauchst du für KVM keine spezielle CPU, da das Linux paravirtuallisiert läuft. Bedeutet soviel wie, die VM weißß, dass sie nur virtuell ausgeführt wird. Nur unmodifizierte Betriebssysteme benötigen die passenden CPUs welche die Virtuallisierungssoftware unterstützt.
 

Michoel

Aktives Mitglied
ich habe gerade nochmal im Wiki nachgeschaut:

KVM ? Wiki ? ubuntuusers.de

Um KVM unter Ubuntu zu nutzen ist es zwingend erforderlich, dass man einen Prozessor hat, der Hardwarevirtualisierung direkt unterstützt. Dies kann man herausfinden, indem man die Ausgabe der Datei /proc/cpuinfo anschaut. Ist dort unter flags entweder der Eintrag vmx oder svm vorhanden, beherrscht der Prozessor diese Technologie. Dies erledigt auch der folgende Befehl

Bei mir liefern die Befehle keine Ausgabe.
Ich müsste aber mal nachschauen, ob ich eventuell im Bios etwas freischalten kann.


Hab einen Intel Centrino M 1600Mhz mit Ubuntu 9.10

Grüße
 

Noctarius

Top Contributor
1. Interessant, dachte das KVM auch ohne Prozessorunterstützung genutzt kann.
2. Der Pentium M mit Napa, Santa Rosa oder Montevina Kern unterstützen Virtuallisierung, dazu muss die Funktion im BIOS aktiviert sein (ist meistens aus um Hypervisor-artige Viren an der Verbreitung zu hindern)
3. Xen kann Paravirtuallisierung, dann aber eben nur mit modifizierbaren Gästen (wie BSD, Linux, ... aber eben kein Windows)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Mehrere Datasources unter JBoss Domain-Modus? Server einrichten und konfigurieren 0
P JEE-Anwendung auf mehrere Rechner verteilen Server einrichten und konfigurieren 2
A Mehrere Tomcat Instanzen auf Basis einer Tomcat Installation Server einrichten und konfigurieren 1
M Tomcat oder sonstiger Webserver für mehrere Projekte Server einrichten und konfigurieren 5
K Log4j - Realisierung mehrere Ausgabedateien Server einrichten und konfigurieren 2
F Velocity Variablen und mehrere Includes ? Server einrichten und konfigurieren 2
O Ich Suche GTA 5 RP Server Scripter für atl:V Server einrichten und konfigurieren 0
S JVM Wartung und Optimierung für Sysadmins Server einrichten und konfigurieren 9
S Suche Apache Experte für Windows Server einrichten und konfigurieren 1
A Tomcat bekommt keine Schreibrechte für webapps Server einrichten und konfigurieren 6
TheJavaKid Cent OS für Java und MySQL konfigurieren Server einrichten und konfigurieren 21
schlingel Tomcat für den Produktiveinsatz Server einrichten und konfigurieren 14
NoXiD EJB 3.1 für JBoss 7 Server einrichten und konfigurieren 3
M minimalste Hardwareanforderungen für Jetty / Apache Archiva Server einrichten und konfigurieren 2
T App Server für Ubuntu gesucht Server einrichten und konfigurieren 9
M Hardwareempfehlung für TOMCAT Server Server einrichten und konfigurieren 8
V Keystore Type für Tomcat ändern Server einrichten und konfigurieren 2
I Beurteilung der Serverausstattung für JAVA Programm Server einrichten und konfigurieren 10
D Tomcat für SSLv2 konfigurieren Server einrichten und konfigurieren 6
R JBoss AS 5.1: --host-Parameter für Windows-Service Server einrichten und konfigurieren 1
R Spring Server für Spring-Framework notwendig? Server einrichten und konfigurieren 3
I Tomcat für Dummies Server einrichten und konfigurieren 2
H reservierter Speicher für Tomcat Server einrichten und konfigurieren 8
H JDK für Tomcat notwendig Server einrichten und konfigurieren 7
A richtige Pfadangabe für den Tomcat Server einrichten und konfigurieren 8
M Ant-Build für verschiedene Servlet-Container? Server einrichten und konfigurieren 5
B War-Datei für Tomcat. Pfadprobleme :( Server einrichten und konfigurieren 4
M Tomcat Umgebungsvariablen für JSP (CompilerError) Server einrichten und konfigurieren 5
M tomcat plugin für eclipse Server einrichten und konfigurieren 10
A Lucene für DB + Files? Server einrichten und konfigurieren 2
D commons db: schlankes framework für db-kommunikation unter j Server einrichten und konfigurieren 2

Ähnliche Java Themen


Oben