Frage

ich bin Planung zu verwenden 2 root Server gemietet bei einem hosting-provider.diese Maschinen führen Sie tomcat 6 in a cluster.wenn ich hinzufügen zusätzliche Maschinen, die später auf - es ist unwahrscheinlich, dass Sie zugänglich sein wird, mit multicast, weil Sie sich in unterschiedlichen Subnetzen.

ist es möglich, tomcat, ohne multicast?alle tutorials für tomcat 6-clustering-include-multicast heartbeat.gibt es alternativen zum SimpleTcpCluster?

oder andere alternativen besser geeignet in dieser situation?

War es hilfreich?

Lösung

Ohne Kontrolle über den Abstand zwischen den beiden Servern (sie könnten in zwei verschiedenen Rechenzentren sein) und keine dedizierte Interserver-Kommunikationsleitung, würde ich sie lieber über Round-Robin-DNS oder einem Loadbalancer ausgeführt werden, die Clients umleitet entweder www1.yourdomain.xxx oder www2.yourdomain.xxx und Griff-Server-Kommunikation sorgfältig.

Wenn die Server stark miteinander kommunizieren Sie entweder Ihre Architektur aussehen könnte sich ändern, optimieren die Hölle aus Ihrer Anwendung „fit“ auf einem Server (zumindest für eine Weile) oder für dediziertes Hosting gehen mit der Kontrolle über die Lage, die Entfernung und die Verkabelung der Server. Andernfalls Ihre Interserver-Kommunikation, Herzschlag usw. würde den gleichen Kanal wie die Clients verwenden, die mit ihm kommunizieren (beispielsweise das Netzwerksegment), die jeden verlangsamen könnten.

Wenn Sie erwarten, dass wirklich viel Last ich es nehme ist zumindest etwas Geld beteiligt, nicht wahr? Verwenden Sie es mit Bedacht aus und nutzen Sie Ihre Setup-Fähigkeiten für Probleme härter als verteilte Clustering-Einrichtung ohne Kontrolle oder Standleitungen.

Andere Tipps

Sehen Sie den Kommentar auf die Frage nach meiner anderen Antwort gegeben zu haben ich bin verwirrt über das, was Ihre Frage ist ... Ist es über Session-Replikation? Cluster-Kommunikation? Es könnte besser sein, Ihr Problem, anstatt die geplante Lösung zu erklären, dass die Probleme selbst hat.

Ich werde einige mögliche Probleme mit schnellen Antworten angeben:

Ihre Anwendung ist CPU / RAM intensive

  • Profil, optimieren, versuchen Sie es erneut
  • Kaufen Sie einen größeren / besseren Server

Ihre Anwendung ist die Bandbreite intensive

  • mit der cheapo Clustering Sie in Ihrer Frage erwähnt wird höchstwahrscheinlich noch schlimmer machen, als der gleiche (getarnte) Kanal für Interserverkommunikation als für Client-Server-Kommunikation verwendet wird
  • Möglicherweise können Sie verschiedene Arten von Bandbreite trennen z.B. indem servierten dynamische Inhalte von einem anderen Server als statische Inhalte: Keine Notwendigkeit für Interserverkommunikation hier

Ihre Anwendung ist speicherintensiven

  • erhalten einen größeren Server
  • für dediziertes Hosting gehen und wie viele Spinnscheiben passen, wie Sie benötigen
  • siehe
  • , wenn andere Modelle (wie Amazonen S3 Storage) könnte für Sie arbeiten)

Ihre Anwendung ist wahrscheinlich slashdotted werden

  • bestimmen, welche der oben genannten Faktoren (oder andere) die Grenzen Ihrer Anwendung zu bestimmen, beheben, dass.

Sie müssen nur die Sitzungsreplikation?

  • Tomcats Sessionmanager Interface ist klein und kann leicht implementiert werden / erweitert sich. Verwenden Sie es für jede Sitzung Replikation Sie möchten. Siehe Norm Dokumentation und die Umsetzung für weitere Informationen

Weitere Ideen

  • Blick auf flexiblere Setups wie EC2 (amazon), Googles Angebote oder andere Cloud-Computing-Setups. Nutzen Sie ihre eigenen Cloud-Speicherung und inter-Server-Kommunikation-Einrichtungen. Achten Sie darauf, nicht zu viel hängt von dieser Infrastruktur.

Ich habe sicherlich etwas vergessen, aber dies könnte einigen Ausgangspunkt bieten. Sei konkreter über die Natur des zugrunde liegenden Problems bessere Antworten zu bekommen:)

Ich bin der Bereitstellung der yale-Central Authentication Server (CAS) und ich möchte cluster für Redundanz, denn dies ist ein Kritischer Teil der Infrastruktur.CAS erfordert, dass die Sitzung repliziert werden, weil die nach der Anmeldung des Benutzers in der Anwendung Ein und navigiert zur Anwendung B, und jeder in der single-sign-on-Domäne, Anwendung B sendet eine Anforderung an Zertifizierungsstellen, um festzustellen, ob der Benutzer eine aktive 'ticket'.Da es kein Gerät, um anzuzeigen, Anwendung B, um die Knoten, die es ansprechen sollte, sich selbst zu validieren, das ticket, der alle aktiven tickets, die in einem Knoten repliziert werden müssen, auf allen Knoten im cluster.In anderen Worten, Sitzung Klebrigkeit ist nicht eine Lösung finden, weil die Anwendung B, bei der Validierung der Karte in der user ' s cookie, ist nicht bekannt, die sessionId der ursprünglichen Sitzung in der Anwendung Ein, während dessen der Benutzer angemeldet ist.

So, CAS erfordert, dass die Sitzung repliziert werden über alle Knoten hinweg.Die Anforderung, dass die Netzwerk-multicasting unterstützen fügt eine nicht-triviale Menge overhead, und es ist dieser Ansatz ein bisschen schwerer zu implementieren.Getestet habe ich das Projekt auf google code:

http://code.google.com/p/memcached-session-manager

das scheint sehr nützlich und einfach zu implementieren (zumindest auf einem linux-OS), aber leider nur für Sitzungs-failover, und ist nicht eine session-replication-Lösung.

Verwenden Sie einfach http://code.google.com/p/memcached-session -manager / . Es funktioniert großartig. Wir verwenden es seit Jahren für diese Konfiguration mit 20 Tomcat-Server-Sitzungen zu teilen. Sie können ein oder zwei Memcached-Server verfügen, um die Sitzung Replikation zu behandeln.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top