Der Lastausgleich verbessert die Leistung der Scalable-Dienste sowohl bei der Antwortzeit als auch beim Durchsatz. Es gibt zwei Klassen von Scalable-Datendiensten.
Bei einem reinen Dienst, kann jede Instanz Client-Anforderungen beantworten. Bei einem Sticky-Dienst kann ein Client Anforderungen an dieselbe Instanz senden. Diese Anforderungen werden nicht an andere Instanzen umgeleitet.
Ein reiner Dienst verwendet ein gewichtetes Lastausgleichsverfahren. Bei diesem Lastausgleichsverfahren werden Client-Anforderungen standardmäßig gleichmäßig auf die Serverinstanzen im Cluster verteilt. Angenommen, jeder Knoten in einem Drei-Knoten-Cluster hat eine Gewichtung von 1. Jeder Knoten bedient 1/3 der Anforderungen aller beliebigen Clients im Auftrag des Dienstes. Gewichtungen können jederzeit vom Verwalter über die scrgadm(1M)-Befehlsschnittstelle oder über die SunPlex-Manager-GUI geändert werden.
Ein Sticky-Dienst hat zwei Typen, normal-sticky und Platzhalter-Sticky. Mit Sticky-Diensten können Sitzungen auf Anwendungsebene gleichzeitig über mehrere TCP-Verbindungen ausgeführt werden, um den Zustandsspeicher (Anwendungssitzungszustand) gemeinsam zu nutzen.
Mit normalen Sticky-Diensten kann ein Client den Zustand zwischen mehreren gleichzeitigen TCP-Verbindungen teilen. Der Client wird als "sticky" gegenüber der Serverinstanz bezeichnet, die einen einzigen Port abhört. Der Client hat die Sicherheit, dass alle seine Anforderungen an dieselbe Serverinstanz gehen. Voraussetzung hierfür ist, dass die Instanz aktiv und zugänglich bleibt und das Lastausgleichsverfahren nicht geändert wird, solange der Dienst online ist.
Beispiel: Ein Webbrowser auf dem Client stellt mithilfe von drei verschiedenen TCP-Verbindungen eine Verbindung mit einer gemeinsam genutzten IP-Adresse an Port 80 her. Die Verbindungen tauschen jedoch zwischengespeicherte Sitzungsinformationen über den Dienst aus.
Eine Verallgemeinerung eines Sticky-Verfahrens erstreckt sich auf mehrere Scalable-Dienste, die im Hintergrund Sitzungsinformationen bei derselben Instanz austauschen. Wenn diese Dienste im Hintergrund Sitzungsinformation bei derselben Instanz austauschen, wird der Client als "sticky" bezeichnet, weil mehrere Serverinstanzen auf demselben Knoten unterschiedliche Ports abhören. .
Beispiel: Ein E-Commerce-Kunde füllt seinen Einkaufskorb mit Artikeln mithilfe von HTTP an Port 80, wechselt dann jedoch zum Senden sicherer Daten mit SSL auf Port 443, um die Artikel im Einkaufskorb mit Kreditkarte zu bezahlen.
Platzhalter-Sticky-Dienste verwenden dynamisch zugewiesene Port-Nummern, erwarten jedoch trotzdem, dass die Client-Anforderungen an denselben Knoten geleitet werden. Der Client ist "Sticky-Platzhalter" bei Ports, die dieselbe IP-Adresse aufweisen.
Ein gutes Beispiel dieses Verfahrens ist der passive FTP-Modus. Beispiel: Ein Client stellt an Port 21 eine Verbindung mit einem FTP-Server her. Anschließend wird er vom Server angewiesen, eine neue Verbindung mit einem Listener-Port-Server im dynamischen Port-Bereich herzustellen. Alle Anforderungen an diese IP-Adresse werden an denselben Knoten weitergeleitet, den der Server dem Client über die Steuerinformationen angegeben hat. .
Für jedes dieser Sticky-Verfahren ist das gewichtete Lastausgleichsverfahren standardmäßig gültig. Daher wird die ursprüngliche Client-Anforderung an die vom Lastausgleich vorgegebene Instanz geleitet. Nachdem der Client eine Affinität zum Knoten mit der ausgeführten Instanz aufgebaut hat, werden zukünftige Anforderungen unter bestimmten Bedingungen an diese Instanz geleitet. Der Knoten muss zugänglich sein und das Lastausgleichsverfahren darf sich nicht geändert haben.
Weitere Details zu spezifischen Lastausgleichsverfahren werden nachstehend erläutert.
Gewichtet. Die Last wird entsprechend den angegebenenen Gewichtungswerten auf mehrere Knoten verteilt. Dieses Verfahren wird mit dem LB_WEIGHTED-Wert für die Load_balancing_weights-Eigenschaft eingestellt. Wenn die Gewichtung für einen Knoten nicht ausdrücklich angegeben ist, beträgt die Standardgewichtung für diesen Knoten Eins.
Das gewichtete Verfahren leitet einen gewissen Prozentsatz des Datenverkehrs von Clients auf einen bestimmten Knoten. Bei X=Gewichtung und A=Gesamtgewichtung aller aktiven Knoten ist davon auszugehen, dass etwa X/A aller neuen Verbindungen zu einem aktiven Knoten geleitet werden. Allerdings muss dafür die Gesamtanzahl der Verbindungen groß genug sein. Dieses Verfahren befasst sich nicht mit einzelnen Anforderungen.
Beachten Sie, dass es sich nicht um ein Round-Robin-Verfahren handelt. Bei einem Round-Robin-Verfahren würde jede Anforderung eines Clients an einen unterschiedlichen Knoten geleitet. Beispielsweise würde die erste Anforderung an Knoten 1, die zweite Anforderung an Knoten 2 geleitet und so weiter.
Sticky. Bei diesem Verfahren ist der Satz an Ports bei der Konfiguration der Anwendungsressourcen bekannt. Dieses Verfahren wird mit dem LB_STICKY-Wert für die Load_balancing_policy-Ressourceneigenschaft eingestellt.
Sticky-Platzhalter. Dieses Verfahren ist eine Obermenge des normalen "Sticky"-Verfahrens. Bei einem durch die IP-Adresse identifizierten Scalable-Dienst werden die Ports vom Server zugewiesen (und sind vorher nicht bekannt). Die Ports können sich ändern. Dieses Verfahren wird mit dem LB_STICKY_WILD-Wert für die Load_balancing_policy-Ressourceneigenschaft eingestellt.