Clustering und Lastenausgleich
Was sind Clustering und Lastenausgleich
Serverclustering ist eine Methode, mit der mehrere Computerserver in einen Cluster umgewandelt werden, dh eine Gruppe von Servern, die sich wie ein einzelnes System verhält.
Bei der Lastverteilung geht es um die Verteilung von Arbeitslasten auf mehrere Computerressourcen wie Computer, Servercluster, Netzwerkverbindungen usw. Der Lastenausgleich zielt darauf ab, die Ressourcennutzung zu optimieren, den Durchsatz zu maximieren, die Antwortzeit zu minimieren und eine Überlastung einer einzelnen Ressource zu vermeiden.
Ein MongoDB-Replikatsatz ist eine Gruppe von mongod
Prozessen, die denselben Datensatz verwalten. Replikatsätze bieten Redundanz und hohe Verfügbarkeit und sind die Grundlage für alle Produktionsbereitstellungen.
Hochverfügbarkeit (HA) ist ein allgemeines Merkmal eines Systems, das darauf abzielt, ein vereinbartes Maß an Betriebsleistung, in der Regel Betriebszeit, für einen höheren als normalen Zeitraum sicherzustellen.
RESTHeart war schon immer eine sehr gute Lösung für Microservices und andere Stile verteilter Architektur. Es wurde erfolgreich mit Clustering-Technologien wie AWS ECS und Fargate, Kubernetes und vielen anderen eingesetzt.
Funktionsweise
RESTHeart empfängt grundsätzlich HTTP-Anforderungen und wandelt sie über den Java-Treiber in MongoDB-Abfragen um. Das Erstellen eines Clusters bestand darin, einen einfachen HTTP-Load Balancer auf die gewählte Clustertechnologie zu setzen, genau wie bei jedem anderen HTTP-Server.
RESTHeart ist für alle Funktionen zustandslos, jedoch für den Standard-Token-Manager, der für die Token-Authentifizierung verwendet wird. Diese Implementierung, die mit RESTHeart OSS geliefert wird, enthält die Token im Speicher. Daher wird Clustering nicht unterstützt.
Daher erfordert ein Cluster von RESTHeart-Knoten bei Verwendung der Tokenauthentifizierung Sticky-Sitzungen, andernfalls könnte der RESTHeart-Knoten ein von einer anderen Instanz erstelltes Authentifizierungstoken erhalten, was zu einem HTTP 401-Fehler “Nicht autorisiert” führt.
Da RESTHeart-Instanzen nicht direkt kommunizieren (um teure Synchronisierungsschritte zu vermeiden), können sie Authentifizierungstoken, die von anderen Instanzen im selben Cluster erstellt wurden, nicht validieren. Um diese Situation zu überwinden, fügt der HTTP-Load Balancer ein Sticky-Sitzungstoken in ein Cookie ein und verarbeitet dann den Kommunikationsfluss von Clients zu RESTHeart-Instanzen entsprechend. Sticky-Sitzungen führen aus architektonischer Sicht eine Zustandsebene in das System ein, und ihr Ablaufzeitlimit muss sorgfältig abgestimmt werden.
RESTHeart EE-Funktionen
Kauf einer kommerziellen RESTHeart-Lizenz Clustering kann einfacher konfiguriert werden, ohne dass Sticky Sessions erforderlich sind. Dies ermöglicht eine vollständig zustandslose Bereitstellung.
Mit der Lizenz erhalten Sie einen spezialisierten Token-Manager, der kryptografisch signierte Token erstellt, die von jedem RESTHeart-Knoten im Cluster ohne direkte Kommunikation und Synchronisation zwischen ihnen bestätigt werden können: schnell, einfach und sicher.
Weitere Informationen finden Sie auf der Dokumentationsseite Token Manager.
Zusammenfassend sind die wichtigsten Schritte für eine hochverfügbare RESTHeart + MongoDB-Konfiguration:
-
Erstellen eines MongoDB-Replikatsatzes;
-
Erstellen eines RESTHeart-Clusters, der mit dem MongoDB-Replikatsatz verbunden ist;
-
Setzen Sie einen HTTP Load Balancer darauf.
Wenn Sie mehr über Clustering, Load Balancing und Hochverfügbarkeit erfahren möchten, kontaktieren Sie uns bitte.
Leave a Reply