Sun Cluster überblick für das Betriebssystem Solaris

Scalable-Datendienste

Das wichtigste Ziel eines Cluster-Netzwerks besteht darin, Skalierbarkeit der Datendienste zu ermöglichen. Skalierbarkeit bedeutet, dass ein Datendienst trotz steigender Belastung eine konstante Antwortzeit beibehalten kann, weil dem Cluster neue Knoten hinzugefügt und neue Serverinstanzen ausgeführt werden. Ein gutes Beispiel für einen Scalable-Datendienst ist ein Webdienst. In der Regel besteht ein Scalable-Datendienst aus mehreren Instanzen, von denen jede auf unterschiedlichen Cluster-Knoten ausgeführt wird. Insgesamt verhalten sich diese Instanzen für einen Remote-Client wie ein einziger Dienst und führen die Funktionen dieses Dienstes aus. Bei einem Scalable-Webdienst mit mehreren httpd-Dämonen, die auf unterschiedlichen Knoten ausgeführt werden, kann jeder beliebige Dämon zum Bedienen einer Client-Anforderung eingesetzt werden. Welcher Dämon die Anforderung bedient, hängt vom Lastausgleichsverfahren ab. Die Antwort an den Client kommt scheinbar vom Dienst und nicht vom konkreten Dämon, der die Anforderung bedient hat, so dass der Eindruck eines einzigen Dienstes gewahrt wird.

Die nachstehende Abbildung zeigt eine Scalable-Dienst-Architektur.

Abbildung 3–3 Scalable-Datendienst-Architektur

Abbildung: Eine Datendienstanforderung, die auf mehreren Knoten ausgeführt wird.

Die Knoten, welche die globale Schnittstelle nicht hosten (Proxy-Knoten), hosten die gemeinsam genutzte Adresse auf ihren Schleifenschnittstellen. Die an der globalen Schnittstelle eintreffenden Pakete werden anhand konfigurierbarer Lastausgleichsverfahren auf andere Cluster-Knoten verteilt. Die möglichen Lastausgleichsverfahren werden im Folgenden beschrieben.

Lastausgleichsverfahren

Der Lastausgleich verbessert die Leistung der Scalable-Dienste sowohl bei der Antwortzeit als auch beim Durchsatz.

Es gibt zwei Klassen von Scalable-Datendiensten: reine und sticky. Ein reiner Dienst ist ein Dienst, bei dem jede Instanz Client-Anforderungen beantworten kann. Bei einem Sticky-Dienst sorgt der Cluster für den Lastausgleich bei Anforderungen an den Knoten. 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. Wenn zum Beispiel bei einem Drei-Knoten-Cluster jedem Knoten die Gewichtung 1 zugewiesen ist, bedient jeder Knoten ein Drittel der Anforderungen eines beliebigen Clients für diesen Dienst. Gewichtungen können jederzeit über die scrgadm(1M)-Befehlsschnittstelle bzw. über die GUI von SunPlex-Manager geändert werden.

Es gibt zwei Typen von Sticky-Diensten: 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. Ein Client wird als “Sticky” in Bezug auf die 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.

Platzhalter-Sticky-Dienste verwenden dynamisch zugewiesene Port-Nummern, erwarten jedoch trotzdem, dass die Client-Anforderungen an denselben Knoten geleitet werden. Der Client ist in Bezug auf dieselbe IP-Adresse “Sticky-Platzhalter” bei den Ports.