-
HINTERGRUND
-
Gebiet der
Erfindung
-
Die
vorliegende Erfindung bezieht sich auf clusterartige Computersysteme
mit mehreren Knoten, die auf skalierbare Weise Dienste bereitstellen. Genauer
bezieht sich die vorliegende Erfindung auf ein Verfahren und auf
eine Vorrichtung, die eine Paketverteilungstabelle verwenden, um
Pakete auf einen Cluster von Server-Knoten zu verteilen, die zusammenarbeiten,
um einen Dienst bereitzustellen.
-
Verwandtes
Gebiet
-
Das
jüngste
heftige Wachstum des elektronischen Handels hat zu einer starken
Zunahme von Web-Sites im Internet geführt, die so verschiedenartige
Produkte wie Spielzeug, Bücher
und Kraftfahrzeuge verkaufen und Dienste wie etwa Versicherung und
Aktienhandel bereitstellen. Millionen von Verbrauchern surfen derzeit
durch Web-Sites, um Informationen zu sammeln, Käufe vorzunehmen oder lediglich
zur Unterhaltung.
-
Der
zunehmende Verkehr im Internet übt eine
gewaltige Last auf die Server aus, die Web-Sites hosten. Einige
beliebte Web-Sites empfangen über eine
Million "Treffer" pro Tag. Um so viel
Verkehr zu verarbeiten, ohne die Web-Surfer störenden Verzögerungen beim Wiedergewinnen
von Web-Seiten auszusetzen, ist es notwendig, den Verkehr auf mehrere
Server-Knoten zu verteilen, so dass die mehreren Server-Knoten parallel
arbeiten können,
um den Verkehr zu verarbeiten.
-
Beim
Entwurf eines solchen Systems zur Verteilung des Verkehrs auf mehrere
Server-Knoten sind mehrere Eigenschaften erwünscht. Es ist erwünscht, dass
ein solches System effizient ist, damit es mit einem minimalen Betrag
an Reaktionszeit so viel Verkehr wie möglich versorgt. Es ist erwünscht, dass
ein solches System "skalierbar" ist, so dass zusätzliche
Server-Knoten hinzugefügt
werden können, und
dass eine Verteilung zu den Knoten änderbar sein kann, um einen
Dienst bereitzustellen, während der
Bedarf für
den Dienst steigt. Dabei ist es wichtig, dass sichergestellt ist,
dass die Reaktionszeit nicht zunimmt, während zusätzliche Server-Knoten hinzugefügt werden.
Außerdem
ist es erwünscht,
dass ein solches System ständig
verfügbar
ist, selbst wenn einzelne Server-Knoten oder Kommunikationspfade zwischen
Server-Knoten ausfallen.
-
Ein
System, das Verkehr auf mehrere Server-Knoten verteilt, führt typisch
eine Anzahl von Aufgaben aus. Beim Empfang eines Pakets schlägt das System
einen Dienst nach, zu dem das Paket gerichtet ist. (Es wird angemerkt,
dass eine Ansammlung von Server-Knoten häufig eine Anzahl verschiedener Server
hostet.) Es werden ein Verfahren und eine Vorrichtung, die das Nachschlagen
eines Dienstes ausführen,
benötigt,
die effizient, skalierbar und hochverfügbar sind.
-
Wenn
der Dienst festgestellt worden ist, teilt das System die an der
Bereitstellung des Dienstes beteiligten Arbeitslasten auf die Server-Knoten
auf, die verfügbar
sind, um den Dienst bereitzustellen. Aus Effizienzgründen ist
es wichtig, dass sichergestellt ist, dass Pakete, die von demselben
Client ausgehen, zu demselben Server gerichtet sind. Es werden ein
Verfahren und eine Vorrichtung zum Aufteilen der Arbeitslast auf
Server-Knoten benötigt,
die effizient, skalierbar und hochverfügbar sind.
-
Wenn
ein Server-Knoten für
das Paket ausgewählt
worden ist, wird das Paket zu dem Server-Knoten weitergeleitet.
Die herkömmliche
Technik der Verwendung eines Fernprozeduraufrufs (RPC) oder eines
Schnittstellendefinitionssprachen-Aufrufs (IDL-Aufrufs) zum Weiterleiten
eines Pakets umfasst typisch das Durchlaufen eines Internet-Protocol-Stapels
(IP-Stapels) von einem RPC/IDL-Endpunkt zu einem Transporttreiber
auf der Senderseite und daraufhin das Durchlaufen eines weiteren
IP-Stapels auf der Empfängerseite
von einem Transporttreiber zu einem RPC/IDL-Endpunkt. Es wird angemerkt,
dass das Durchlaufen dieser zwei IP-Stapel äußerst ineffizient ist. Es werden
ein Verfahren und eine Vorrichtung zum Weiterleiten von Paketen
an Server-Knoten benötigt,
die effizient, skalierbar und hochverfügbar sind.
-
EP0865180 offenbart ein
Verfahren und eine Vorrichtung zum Hosten eines Netz-Dienstes in einem
Cluster von Servern, die jeweils eine primäre und eine sekundäre Internet-Protocol-Adresse (IP-Adresse)
enthalten. Jedem der Server in dem Cluster wird eine gemeinsame
Cluster-Adresse als die sekundäre
Adresse zugewiesen. Die Cluster-Adresse kann in UNIX-gestützten Servern
unter Verwendung einer ifconfig-alias-Option zugewiesen werden und
eine Geist-IP-Adresse sein, die nicht durch irgendeinen Server in
dem Cluster als eine primäre
Adresse verwendet wird. Client-Anforderungen, die zu der Cluster-Adresse
gerichtet sind, werden so zugeteilt, dass nur einer der Server des
Clusters auf eine gegebene Client-Anforderung reagiert. Das Zuteilen
kann eine Routing-gestützte
Technik sein, in der alle Client-Anforderungen, die zu der Cluster-Adresse
gerichtet sind, zu einem Zuteiler geleitet werden, der mit dem lokalen
Netz des Server-Clusters verbunden ist. Daraufhin wendet der Zuteiler
auf die Client-IP-Adresse eine Hash-Funktion an, um einen der Server zum
Verarbeiten der Anforderung auszuwählen. Alternativ kann das Zuteilen eine
rundsende-gestützte
Technik verwenden, in der ein Router Client-Anforderungen mit den
Cluster-Adressen an alle Server des Clusters über ein lokales Netz rundsendet.
Daraufhin können
die Server jeweils eine Filterroutine bereitstellen, die den Vergleich
eines Server-Identifizierers mit einem aus einer Client-Adresse
erzeugten Hash-Wert umfassen kann, um sicherzustellen, dass auf
jede durch den Router rundgesendete Anforderung nur ein Server reagiert.
-
DAMANI,
O. P., U. A.: "ONE-IP:
techniques for hosting a service on a cluster of machines", COMPUTER NETWORKS
AND ISDN SYSTEMS, NORTH HOLLAND PUBLISHING, Amsterdam, NL, Bd. 29,
Nr. 8–13,
1. September 1997, S. 1019–1027, diskutiert
Verfahren zum Verteilen von Client-Anforderungen für einen
einzelnen Dienst an verschiedene Maschinen in einem Cluster und
offenbart eine ONE-IP genannte Technik, die auf dem Zuteilen von Paketen
auf der IP-Ebene beruht, was den Vorteil des schnellen Zuteilens
und der leichten Implementierung aufweist.
-
ZUSAMMENFASSUNG
-
Dementsprechend
schafft die Erfindung ein Verfahren und eine Vorrichtung zum Verteilen
von Paketen an Server-Knoten in einem Cluster, wie sie in den Ansprüchen 1 und
10 beansprucht sind, sowie ein computerlesbares Medium, wie es in
Anspruch 9 beansprucht ist. In den abhängigen Ansprüchen werden
vorteilhafte Ausführungsformen
geschaffen.
-
KURZBESCHREIBUNG
DER FIGUREN
-
1 veranschaulicht
ein clusterartiges Rechensystem, das über ein Netz mit Client-Rechensystemen
gekoppelt ist, in Übereinstimmung
mit einer Ausführungs form
der vorliegenden Erfindung.
-
2 veranschaulicht
die interne Struktur eines Schnittstellenknotens und zweier Server-Knoten in
einem clusterartigen Rechensystem in Übereinstimmung mit einer Ausführungsform
der vorliegenden Erfindung.
-
3 veranschaulicht
Datenstrukturen, die einem skalierbaren Dienst in Übereinstimmung
mit einer Ausführungsform
der vorliegenden Erfindung zugeordnet sind.
-
4 veranschaulicht,
wie ein IP-Paket mit einem DLPI-Anfangsblock in Übereinstimmung mit einer Ausführungsform
der vorliegenden Erfindung gekapselt ist.
-
5A ist
ein Ablaufplan, der den Prozess der Dienstregistrierung in Übereinstimmung
mit einer Ausführungsform
der vorliegenden Erfindung veranschaulicht.
-
5B ist
ein Ablaufplan, der den Prozess der Dienstaktivierung/-deaktivierung
in Übereinstimmung
mit einer Ausführungsform
der vorliegenden Erfindung veranschaulicht.
-
6 ist
ein Ablaufplan, der veranschaulicht, wie ein Paket in einem Schnittstellenknoten
in Übereinstimmung
mit einer Ausführungsform
der vorliegenden Erfindung verarbeitet wird.
-
7 ist
ein Ablaufplan, der den Prozess des Nachschlagens eines Dienstes
für ein
Paket in Übereinstimmung
mit einer Ausführungsform
der vorliegenden Erfindung veranschaulicht.
-
8 ist
ein Ablaufplan, der den Prozess des Weiterleitens eines Pakets zu
einem Server in Übereinstimmung
mit einer Ausführungsform
der vorliegenden Erfindung veranschaulicht.
-
9 veranschaulicht,
wie ein PDT-Server in Übereinstimmung
mit einer Ausführungsform
der vorliegenden Erfindung mit Fixpunkten zu einem Slave-PDT-Server
und zu einem sekundären
PDT-Server versehen wird.
-
AUSFÜHRLICHE
BESCHREIBUNG
-
Die
folgende Beschreibung wird gegeben, um zu ermöglichen, dass der Fachmann
auf dem Gebiet die Erfindung herstellt und verwendet, wobei sie im
Kontext einer besonderen Anwendung und ihrer Anforderungen gegeben
wird. Für
den Fachmann auf dem Gebiet sind verschiedene Abwandlungen an den
offenbarten Ausführungsformen
leicht sichtbar, wobei die hier definierten allgemeinen Prinzipien
auf andere Ausführungsformen
und Anwendungen angewendet werden können, ohne von dem Erfindungsgedanken
und Umfang der vorliegenden Erfindung abzuweichen. Somit soll die
vorliegende Erfindung nicht auf die gezeigten Ausführungsform
beschränkt
sein, sondern dem weitesten Umfang entsprechen, der mit den hier
offenbarten Prinzipien und Merkmalen in Einklang steht.
-
Die
Datenstrukturen und der Code, die in dieser ausführlichen Beschreibung beschrieben
sind, sind typisch in einem computerlesbaren Speichermedium gespeichert,
das irgendeine Vorrichtung oder irgendein Medium sein kann, das
Code und/oder Daten zur Verwendung durch ein Computersystem speichern
kann. Dies enthält,
ist aber nicht beschränkt auf,
magnetische und optische Speichervorrichtungen wie etwa Plattenlaufwerke,
Magnetband, CDs (Compact Discs) und DVDs (Digital Video Discs) sowie
Computeranweisungssignale, die in einem Übertragungsmedium (mit oder
ohne eine Trägerwelle, auf
der die Signale moduliert sind) verkörpert sind. Das Übertragungsmedium
kann z.B. ein Kommunikationsnetz wie etwa das Internet enthalten.
-
Clusterartiges
Rechensystem
-
1 veranschaulicht
ein über
Netze 120 mit Clients 121–123 gekoppeltes clusterartiges
Rechensystem 100 in Übereinstimmung
mit einer Ausführungsform
der vorliegenden Erfindung. Die Clients 121–123 können irgendeinen
Knoten in den Netzen 120 enthalten, der Rechenfähigkeit
und einen Mechanismus für
die Kommunikation über
die Netze 120 enthält.
Die Clients 121–123 kommunizieren
dadurch mit dem clusterartigen Rechensystem 100, dass sie Pakete
an das clusterartige Rechensystem 100 senden, um Dienste
vom clusterartigen Rechensystem 100 anzufordern.
-
Die
Netze 120 können
irgendeinen Typ eines Drahtkommunikationskanals oder drahtlosen
Kommunikationskanals enthalten, der Rechenknoten miteinander kop peln
kann. Dies umfasst, ist aber nicht beschränkt auf, ein lokales Netz,
ein Weitverkehrsnetz oder eine Kombination von Netzen. In einer
Ausführungsform
der vorliegenden Erfindung enthalten die Netze 120 das
Internet.
-
Das
clusterartige Rechensystem 100 enthält eine Menge von Knoten, die über einen
(nicht gezeigten) Kommunikationskanal miteinander gekoppelt sind.
Diese Knoten enthalten Server-Knoten 102 und 104 sowie
einen Schnittstellenknoten/Server-Knoten 103. Die Knoten 102–104 sind
mit einem Speichersystem 110 gekoppelt. Das Speichersystem 110 stellt für Code oder
für Daten,
die durch die Knoten 102–104 manipuliert werden,
eine Archivspeicherung bereit. Diese Archivspeicherung kann einen
Magnetspeicher, einen Flash-Speicher, einen ROM, einen EPROM, einen
EEPROM sowie einen batteriegestützten
RAM umfassen, ist aber darauf nicht beschränkt.
-
Die
Knoten 102–104 sind
durch eine private Zusammenschaltung mit redundanten Pfaden (nicht gezeigt)
miteinander gekoppelt. Zum Beispiel können die Knoten 102–104 durch
einen Kommunikationsmechanismus, der der Ethernet-Norm oder einer skalierbaren
kohärenten
Zusammenschaltungsnorm (SCI-Norm) genügt, zusammengeschaltet sein.
Ein Pfad-Manager bearbeitet alle Knoten im clusterartigen Rechensystem 100.
Dieser Pfad-Manager kennt die Zusammenschaltungstopologie und überwacht den
Status der Pfade. Außerdem
stellt der Pfad-Manager eine Schnittstellen-Registrierung bereit,
bei der sich andere interessierte Komponenten in dem Status der
Zusammenschaltung registrieren können. Dies
stellt für
den Pfad-Manager einen Mechanismus bereit, um Rückrufe zu den interessierten
Komponenten vorzunehmen, wenn sich der Status eines Pfads ändert, falls
ein neuer Pfad aufkommt oder falls ein Pfad entfernt wird.
-
Die
Knoten 102–104 sind über ein
hochverfügbares
Adressierungssystem 108 mit den Netzen 120 gekoppelt.
Ein hochverfügbares
Adressierungssystem 108 ermöglicht, dass Schnittstellenknoten
im clusterartigen Rechensystem 100 von den Netzen 120 auf "hochverfügbare" Weise adressiert
werden, so dass dann, wenn ein Schnittstellenknoten ausfällt, ein
sekundärer
Sicherheitsschnittstellenknoten seinen Platz einnehmen kann, ohne
dass der Ausfall für die
Clients 121–123 sichtbar
ist. Es wird angemerkt, dass der Schnittstellenknoten 103 eine
oder mehrere gemeinsam genutzte IP-Adressen für das clusterartige Rechensystem 100 hosten
kann. Außerdem
wird angemerkt, dass für
einen gegebenen Dienst mehr als ein Knoten im clusterartigen Rechensystem 100 als
ein Schnittstellenknoten wirken kann. Dies ermöglicht, dass für einen
Schnittstellenknoten, der ausfällt,
ein Sicherungsschnittstellenknoten übernimmt.
-
Es
wird angemerkt, dass die Knoten 102–104 im clusterartigen
Rechensystem 100 skalierbare Dienste bereitstellen können. Aus
Sicht der Clients 121–123 verhält sich
jeder skalierbare Dienst als eine einzelne logische Entität. Außerdem wird
angemerkt, dass die Clients 121–123 über eine
Transmission-Control-Protocol-Verbindung
(TCP-Verbindung) oder über
eine User-Datagram-Protocol-Sitzung (UDP-Sitzung) mit dem clusterartigen
Rechensystem 100 kommunizieren können.
-
Während die
Last an einen Dienst zunimmt, versucht der Dienst, dieselbe Reaktionszeit
pro Client aufrechtzuerhalten. Ein Dienst heißt "skalierbar", falls an eine erhöhte Last an den Dienst mit
einer Technikzunahme an die Hardware und an die Server-Instanzen,
die den Dienst ausführen,
angepasst wird. Zum Beispiel ist ein Web-Server skalierbar, falls an
eine zusätzliche
Last an den Web-Server durch eine entsprechende Zunahme der Server-Knoten
zur Verarbeitung der zusätzlichen
Last oder durch eine Änderung
der Verteilung der Last auf die Hardware und auf die Server-Instanzen,
die den Dienst ausführen,
angepasst wird.
-
Das
clusterartige Rechensystem 100 arbeitet allgemein wie folgt.
Während
Pakete von den Clients 121–123 am Schnittstellenknoten 103 ankommen,
wird anhand der Zieladresse in dem Paket ein Dienst für das Paket
ausgewählt.
Nachfolgend wird anhand der Quelladresse des Pakets sowie der Zieladresse
des Pakets eine Server-Instanz für
das Paket ausgewählt.
Es wird angemerkt, dass das System sicherstellt, dass Pakete, die
zu derselben TCP-Verbindung oder UDP-Instanz gehören, zu derselben Server-Instanz
gesendet werden. Schließlich
wird das Paket zu der ausgewählten
Server-Instanz gesendet.
-
Interne Struktur
von Schnittstellenknoten und Server-Knoten
-
2 veranschaulicht
die interne Struktur des Schnittstellenknotens 103 und
der Server-Knoten 102 und 104 im clusterartigen
Rechensystem 100 in Übereinstimmung
mit einer Ausführungsform
der vorliegenden Erfindung. Der Client 121 sendet Pakete
an das clusterartige Rechensystem 100, um vom clusterartigen
Rechensystem 100 einen Dienst zu empfangen. Diese Pakete
treten in die öffentliche Schnittstelle 221 im
Schnittstellenknoten 103 im clusterartigen Rechensystem 100 ein.
Die öffentliche Schnittstelle 221 kann
irgendeinen Schnittstellentyp enthalten, der Pakete von den Netzen 120 empfangen
kann.
-
Während Pakete über die öffentliche
Schnittstelle 221 am Schnittstellenknoten 103 ankommen, gehen
sie über
den Cluster-Vernetzungsmultiplexer 218. Der Cluster-Vernetzungsmultiplexer 218 leitet die
Pakete anhand der Richtlinien und weiterer Betrachtungen an verschiedene
Knoten im clusterartigen Rechensystem 100 weiter. Der Cluster-Vernetzungsmultiplexer 218 gewinnt
beim Treffen der Weiterleitungsentscheidungen Daten vom hochverfügbaren PDT-Server 230 wieder.
Die Struktur dieser Daten wird unten anhand von 3 ausführlicher
beschrieben. Es wird angemerkt, dass der HA-PDT-Server 230 über mehrere
Knoten des clusterartigen Rechensystems 100 repliziert
sein kann, so dass, falls ein Knoten ausfällt, ein Sicherungsknoten für ihn übernehmen
kann, um die Verfügbarkeit für den HA-PDT-Server 230 aufrechtzuerhalten.
-
Vom
Schnittstellenknoten 103 werden die Pakete über private
Schnittstellen 224 und 225 zu anderen Knoten des
clusterartigen Rechensystems 100 einschließlich der
Server-Knoten 102 und 104 weitergeleitet. Die
privaten Schnittstellen 224 und 225 können irgendeine
Schnittstelle enthalten, die die Kommunikation zwischen Knoten im
clusterartigen Rechensystem 100 behandeln kann. Zum Beispiel
können
Pakete von der privaten Schnittstelle 224 zur privaten
Schnittstelle 226 am Server-Knoten 104 oder von
der privaten Schnittstelle 225 zur privaten Schnittstelle 228 am
Server-Knoten 102 weitergeleitet werden. Es wird angemerkt,
dass die privaten Schnittstellen 224 und 225 keine
Kommunikation mit Entitäten
außerhalb
des clusterartigen Rechensystems 100 behandeln.
-
In
einigen Ausführungsformen
der vorliegenden Erfindung nutzen die private Schnittstelle 224 (und 225)
und die öffentliche
Schnittstelle 221 einen Teil derselben Kommunikations-Hardware
gemeinsam und senden Nachrichten entlang einiger derselben physikalischen
Datenpfade. In einigen dieser Ausführungsformen können die
private Schnittstelle 224 und die öffentliche Schnittstelle 221 außerdem einen
Teil derselben Schnittstellen-Software gemeinsam nutzen. Somit brauchen
die private Schnittstelle 224 und die öffentliche Schnittstelle 221 keine
verschiedenen Kommunikationsmechanismen zu repräsentieren. Somit kann der Unterschied
zwischen der privaten Schnittstelle 224 und der öffentlichen Schnittstelle 221 lediglich
ein Unterschied dazwischen sein, ob die Kommunikation mit einer
Entität außerhalb
des clusterartigen Rechensystems 100 oder mit einer Entität im clusterartigen
Rechensystem 100 erfolgt.
-
Die
Pakete, die in die Server-Knoten 102 und 104 eintreten,
gehen über
die IP-Stapel 214 bzw. 216.
Da der Knoten 103 ebenfalls als ein Server wirken kann,
kann der Cluster-Vernetzungsmultiplexer 218 ebenfalls Pakete
an den IP-Stapel 215 im Schnittstellenknoten/Server-Knoten 103 senden.
Im Server-Knoten 102 gehen die Pakete durch den IP-Stapel 214 ins
TCP-Modul 206, das TCP-Verbindungen unterstützt, oder
ins UDP-Modul 210, das UDP-Sitzungen unterstützt. Ähnlich gehen
die Pakete im Schnittstellenknoten/Server-Knoten 103 durch den
IP-Stapel 215 ins TCP-Modul 207 oder ins UDP-Modul 211.
Im Server-Knoten 104 gehen die Pakete durch den IP-Stapel 216 ins
TCP-Modul 208 oder ins UDP-Modul 212. Nachfolgend werden
die Pakete durch die Server-Instanzen 201–203 in
den jeweiligen Knoten 102–104 verarbeitet.
-
Es
wird angemerkt, dass die Rückkommunikation
für die
Server-Knoten 102 und 104 nicht demselben Pfad
folgt. Die Rückkommunikation
vom Server-Knoten 102 geht hinab durch den IP-Stapel 214, durch
die öffentliche
Schnittstelle 220 und daraufhin zum Client 121. Ähnlich geht
die Rückkommunikation vom
Server-Knoten 104 hinab
durch den IP-Stapel 216, durch die öffentliche Schnittstelle 222 und
daraufhin zum Client 121. Dies befreit den Schnittstellenknoten 103 davon,
den Rückkommunikationsverkehr
behandeln zu müssen.
-
Für Web-Server-Anwendungen
(und für
einige andere Anwendungen) kann dieser Rückkommunikationsmechanismus
einen Lastausgleich für
den Rückverkehr
schaffen. Es wird angemerkt, dass Web-Server typisch Navigationsbefehle
von einem Client empfangen und in Reaktion große Volumina an Web-Seiten-Inhalt
(wie etwa graphische Bilder) zu dem Client zurücksenden. Für diese Anwendungen ist es
vorteilhaft, den Rückverkehr über mehrere Rückpfade
zu verteilen, um das große
Volumen des Rückverkehrs
zu behandeln.
-
Es
wird angemerkt, dass in einem Server-Knoten wie etwa im Server-Knoten 104 gemeinsam
genutzte IP-Adressen in der "Loopback-Schnittstelle" des Server-Knotens 104 gehostet
werden. (Die Loopback-Schnittstelle ist in den Betriebssystemnormen
von UNIX und SOLARIS TM definiert. Solaris ist ein Warenzeichen
der Sun Microsystems, Inc., aus Palo Alto, Kalifornien). Das Hosten
einer gemeinsam genutzten IP-Adresse in einer Loopback-Schnittstelle
besitzt Ausfallsicherungsimplikationen. Die erste Schnittstelle
in dem Loopback wird typisch durch die Loopback-Adresse (z.B. 127.0.0.1) belegt,
die keine Ausfallsicherung ausführt.
-
Dies
verhindert ein Problem, dass die Ausfallsicherung einer IP-Adresse,
die den physikalischen Raum einer Technikschnittstelle belegt, veranlasst,
dass Konfigurationsdaten für
Logikadapter, die anderen IP-Adressen zugeordnet sind, die in derselben
Schnittstelle gehostet werden, verloren gehen.
-
Datenstrukturen
zur Unterstützung
skalierbarer Dienste
-
3 veranschaulicht
Datenstrukturen, die einem skalierbaren Dienst in Übereinstimmung
mit einer Ausführungsform
der vorliegenden Erfindung zugeordnet sind. Der HA-PDT-Server 230 enthält wenigstens
eine Dienstgruppe 302. Es wird angemerkt, dass die Dienstgruppe 302 einer
Gruppe von Diensten zugeordnet sein kann, die eine Lastausgleichspolitik
gemeinsam nutzen.
-
Außerdem wird
angemerkt, dass die Dienstgruppe 302 aus Hochverfügbarkeitszwecken
eine zugeordnete sekundäre
Version an einem anderen Knoten haben kann. Irgendwelche Änderungen
der Dienstgruppe 302 können
mit Fixpunkten zu dieser sekundären
Version versehen werden, so dass dann, wenn der Knoten ausfällt, der
die primäre
Version der Dienstgruppe 302 enthält, der Knoten, der die sekundäre Version
enthält, übernehmen
kann.
-
Außerdem können der
Dienstgruppe 302 eine Anzahl von "Slave"-Versionen des Dienstobjekts zugeordnet
sein, die sich an anderen Knoten im clusterartigen Rechensystem 100 befinden.
Dies ermöglicht,
dass die anderen Knoten auf die Daten in der Dienstgruppe 302 zugreifen.
Irgendwelche Änderungen
an der Dienstgruppe 302 können zu den entsprechenden
Slave-Versionen fortgepflanzt werden.
-
Die
Dienstgruppe 302 enthält
eine Anzahl von Datenstrukturen, die eine Paketverteilungstabelle
(PDT) 304, eine Lastausgleichspolitik 306, ein Dienstobjekt 308,
eine Konfigurationsknotenliste 310 und eine Instanzknotenliste 312 umfassen.
-
Die
Konfigurationsknotenliste 310 enthält eine Liste von Dienstknoten
im clusterartigen Rechensystem 100, die die der Dienstgruppe 302 zugeordneten
Dienste bereitstellen können.
Die Instanzknotenliste 312 enthält eine Liste der Knoten, die
tatsächlich
zur Bereitstellung dieser Dienste verwendet werden. Das Dienstobjekt 308 enthält Informationen, die
sich auf einen oder auf mehrere Dienste beziehen, die der Dienstgruppe 302 zugeordnet
sind.
-
Die
Lastausgleichspolitik 306 enthält eine Beschreibung einer
Lastausgleichspolitik, die dazu verwendet wird, Pakete auf Knoten
zu verteilen, die an der Bereitstellung der der Dienstgruppe 302 zugeordneten
Dienste beteiligt sind. Zum Beispiel kann eine Politik spezifizieren,
dass jeder Knoten in der Instanzknotenliste 312 Verkehr
von einem bestimmten Prozentsatz der Quelladressen von Clients empfängt, die
der Dienstgruppe 302 zugeordnete Dienste anfordern.
-
Die
PDT 304 wird verwendet, um die Lastausgleichspolitik zu
implementieren. Die PDT 304 enthält Einträge, die mit Identifizierern
für Knoten
bevölkert
sind, die derzeit Pakete für
die der Dienstgruppe 302 zugeordneten Dienste empfangen
können.
Um einen Server-Knoten zum Weiterleiten eines Pakets an ihn auszuwählen, hash-codiert
das System die Quelladresse des Clients, der das Paket gesendet
hat, über
die PDT 304. Die Hash-Codierung wählt einen besonderen Eintrag
in der PDT 304 aus, der einen Server-Knoten in dem clusterartigen
Rechensystem 100 identifiziert.
-
Es
wird angemerkt, dass zur Hash-Codierung der Quelladresse irgendeine
Zufalls- oder Pseudo-Zufallsfunktion
verwendet werden kann. Um eine TCP-Verbindung (oder UDP-Sitzung)
zwischen einem Client und dem Server-Knoten zu unterstützen, ist
es aber erwünscht,
dass Pakete mit derselben Quelladresse auf denselben Server-Knoten
abgebildet werden.
-
Außerdem wird
angemerkt, dass die Häufigkeit
der Einträge
geändert
werden kann, um verschiedene Aufteilungen des Verkehrs auf verschiedene
Server-Knoten zu
erreichen. Zum Beispiel kann ein Hochleistungs-Server-Knoten, der
viel Verkehr verarbeiten kann, mehr Einträge in der PDT 304 erhalten
als ein langsamerer Server-Knoten, der weniger Verkehr verarbeiten
kann. Auf diese Weise empfängt
der Hochleistungs-Server-Knoten im Durchschnitt mehr Verkehr als
der langsamere Server-Knoten.
-
Außerdem wird
angemerkt, dass dann, wenn ein PDT-Server ausfällt, während in seinem lokalen Speicher
Konfigurationsdaten vorhanden sind, ein sekundärer PDT-Server übernimmt.
Ein Fixpunkt-Prozess stellt sicher, dass die Konfigurationsdaten
in dem lokalen Speicher für
den sekundären PDT-Server
ebenfalls vorhanden sind. 9 veranschaulicht
genauer, wie ein PDT-Server in Übereinstimmung
mit einer Ausführungsform
der vorliegenden Erfindung mit Fixpunkten zu einem Slave-PDT-Server
und zu einem sekundären
PDT-Server versehen wird. Wie in 9 veranschaulicht
ist, unterhält
das System am Knoten 910 einen primären PDT-Server/Master-PDT-Server 912.
Aus Hochverfügbarkeitszwecken
wird der Zustand des primären PDT-Servers/Master-PDT-Servers 912 regelmäßig mit
Fixpunkten zum sekundären
PDT-Server 904 am Knoten 902 versehen, so dass
der sekundäre PDT-Server 904 mit
dem primären
PDT-Server/Master-PDT-Server 912 konsistent gehalten wird.
Auf diese Weise kann dann, wenn der primäre PDT-Server/Master-PDT-Server 912 ausfällt, der
sekundäre PDT-Server 904 seinen
Platz einnehmen.
-
Falls
sich der primäre
PDT-Server/Master-PDT-Server 912 nicht am Schnittstellenknoten 906 befindet,
wird am Schnittstellenknoten 906 aus Leistungsgründen (nicht
aus Hochverfügbarkeitsgründen) ein
Slave-PDT-Server 908 unterhalten. In diesem Fall wird der
größte Teil
des Zustands des primären
PDT-Servers/Master-PDT-Servers 912 regelmäßig mit
Fixpunkten zum Slave-PDT-Server 908 im Schnittstellenknoten 906 versehen.
Dies ermöglicht, dass
der Schnittstellenknoten 906 lokal, im Slave-PDT-Server 908,
auf die Informationen in Bezug auf die Paketweiterleitung zugreift,
ohne mit dem primären
PDT-Server/Master-PDT-Server 912 des
Knotens am Knoten 910 kommunizieren zu müssen.
-
Paketweiterleitung
-
4 veranschaulicht,
wie ein IP-Paket 400 mit einem DLPI-Anfangsblock 402 in Übereinstimmung
mit einer Ausführungsform
der vorliegenden Erfindung gekapselt ist. Damit ein IP-Paket 400 zwischen
einem Schnittstellenknoten 103 und einem Server-Knoten 104 (siehe 2)
weitergeleitet wird, wird an dem Kopf des IP-Pakets 400 ein
DLPI-Anfangsblock 402 angebracht. Es wird angemerkt, dass der
DLPI-Anfangsblock 402 die Medienzugangskontrolladresse
(MAC-Adresse) einer der Schnittstellen des Ziel-Server-Knotens 104 enthält. Außerdem wird angemerkt,
dass das IP-Paket 400 eine Zieladresse 404, die
eine IP-Adresse eines durch den Schnittstellenknoten 103 gehosteten
Dienstes spezifiziert, sowie die Quelladresse 406 für einen
Client, der das Paket gesendet hat, enthält.
-
Konfigurationsprozess
-
5A ist
ein Ablaufplan, der den Prozess der Dienstregistrierung in Übereinstimmung
mit einer Ausführungsform
der vorliegenden Erfindung veranschaulicht.
-
Das
System startet, indem es einen skalierbaren Dienst für die besondere
IP-Adresse und Portnummer
zu konfigurieren versucht (Schritt 502). Das System erzeugt
zunächst
ein erstes Dienstgruppenobjekt (Schritt 503) und daraufhin
ein Dienstobjekt für den
skalierbaren Dienst (Schritt 504). Außerdem initialisiert das System
eine Konfigurationsknotenliste 310 (siehe 3),
die angibt, welche Server-Knoten im clusterartigen Rechensystem 100 den
Dienst bereitstellen können
(Schritt 506), und stellt die Lastausgleichspolitik 306 für den Dienst
ein. Es wird angemerkt, dass eine besondere Lastausgleichspolitik die
Gewichtungen für
die besonderen Server-Knoten spezifizieren kann (Schritt 508).
-
5B ist
ein Ablaufplan, der den Prozess der Dienstaktivierung/-deaktivierung
in Übereinstimmung
mit einer Ausführungsform
der vorliegenden Erfindung veranschaulicht. Dieser Prozess findet
immer dann statt, wenn eine Instanz gestartet oder angehalten wird,
oder jedes Mal, wenn ein Knoten ausfällt. Das System untersucht
für jeden
skalierbaren Dienst jeden Knoten in der Konfigurationsknotenliste 310.
Falls der Knoten an die laufende Version des skalierbaren Dienstes
angepasst ist, wird der Knoten zur PDT 304 und zur Instanzknotenliste 312 hinzugefügt (Schritt 510).
-
Falls
zu einer zukünftigen
Zeit ein Knoten abstürzt
oder der Dienst abstürzt,
wird ein entsprechender Eintrag aus der PDT 304 und aus
der Instanzknotenliste 312 entfernt (Schritt 512).
-
Paketverarbeitung
-
6 ist
ein Ablaufplan, der veranschaulicht, wie ein Paket in Übereinstimmung
mit einer Ausführungsform
der vorliegenden Erfindung in einem Schnittstellenknoten verarbeitet
wird. Das System startet, indem es beim Cluster-Vernetzungsmultiplexer 218 im
Schnittstellenknoten 103 ein IP-Paket 400 vom
Client 122 empfängt
(Schritt 601). Das IP-Paket 400 enthält eine
Zieladresse 404, die einen Dienst spezifiziert, und eine
Quelladresse 406 des Clients, der das Paket gesendet hat.
-
Zunächst schlägt das System
anhand der Zieladresse 404 einen Dienst für das Paket
nach (Schritt 602). Dieser Nachschlageprozess wird anhand
von 7 unten ausführlicher
beschrieben.
-
Nachfolgend
stellt das System fest, ob der Server ein skalierbarer Dienst ist
(Schritt 603). Wenn das nicht der Fall ist, sendet das
System das Paket an den IP-Stapel 215 im
Schnittstellenknoten/Server-Knoten 103, so dass die Server-Instanz 202 den nicht
skalierbaren Dienst bereitstellen kann (Schritt 604). Alternativ
kann der Schnittstellenknoten 103 das Paket an einen Standard-Server-Knoten
außerhalb
des Schnittstellenknotens/Server-Knotens 103 senden, um
den nichtskalierbaren Dienst bereitzustellen. Zum Beispiel kann
der Server-Knoten 104 als ein Standardknoten für nichtskalierbare
Dienste festgelegt sein.
-
Falls
der Dienst ein skalierbarer Dienst ist, stellt das System fest,
an welchen Server-Knoten das Paket gesendet werden soll. Dabei stellt
das System zunächst
fest, ob das Paket der Client-Affinität unterliegt (Schritt 605).
Wenn das der Fall ist, führt
das System über
die PDT 304 eine Hash-Codierung der Quell-IP-Adresse aus,
um einen Eintrag aus der PDT 304 auszuwählen (Schritt 606).
Wenn das nicht der Fall ist, führt
das System über
die PDT-Tabelle 304 eine Hash-Codierung der Quell-IP-Adresse
und der Portnummer aus (Schritt 607).
-
Nachfolgend
stellt das System fest, ob das Protokoll TCP ist (Schritt 608).
Wenn das Protokoll nicht TCP ist (d.h. UDP ist), gewinnt das System
aus dem Eintrag einen Identifizierer für einen Server-Knoten wieder
(Schritt 611). Wenn das Protokoll andernfalls TCP ist,
stellt das System fest, ob die momentane IP-Nummer und Adresse in
einer Weiterleitungsliste sind (Schritt 609). Wenn das
der Fall ist, gewinnt das System den Server-Identifizierer aus der Weiterleitungsliste
wieder (Schritt 610). Andernfalls gewinnt das System den
Server-Identifizierer aus dem ausgewählten Eintrag in der PDT 304 wieder (Schritt 611).
-
Nachfolgend
leitet das System das Paket an den Server-Knoten weiter (Schritt 612).
Dieser Weiterleitungsprozess wird unten ausführlicher anhand von 8 beschrieben.
-
Daraufhin
ermöglicht
der Schnittstellenknoten 103, dass der ausgewählte Server-Knoten zurückgeleitete
Nachrichten direkt zu dem Client zurücksendet (Schritt 614).
-
Prozess des
Nachschlagens eines Dienstes
-
7 ist
ein Ablaufplan, der den Prozess des Nachschlagens eines Dienstes
für ein
Paket in Übereinstimmung
mit einer Ausführungsform
der vorliegenden Erfindung veranschaulicht. Das System startet,
indem es anhand der Zieladresse ein Nachschlagen in einer ersten
Hash-Tabelle ausführt (Schritt 702).
Dieses Nachschlagen umfasst die Verwendung des Protokolls, der IP-Adresse
und der Portnummer des Dienstes. Falls während dieses Nachschlagens
ein Eintrag zurückgegeben
wird, ist der Prozess abgeschlossen und es wird ein skalierbarer
Dienst zurückgegeben.
-
Andernfalls
schlägt
das System einen skalierbaren Dienst anhand der Zieladresse in einer zweiten
Hash-Tabelle nach (Schritt 706). In diesem Fall werden
lediglich das Protokoll und die IP-Adresse zum Ausführen des
Nachschlagens verwendet. Dies ist so, da das zweite Nachschlagen
einen skalierbaren Dienst mit einer "Client-Affinitäts"-Eigenschaft betrifft. Diese Client-Affinitäts-Eigenschaft
versucht sicherzustellen, dass auf demselben Server-Knoten für denselben
Client verwandte Dienste ausgeführt
werden. Somit ordnet die zweite Hash-Tabelle verwandte Dienste mit
derselben IP-Adresse, aber mit anderen Portnummern, demselben Server-Knoten
zu.
-
Falls
in dem zweiten Nachschlagen kein Eintrag zurückgegeben wird, ist der Dienst
ein nichtskalierbarer Dienst, wobei das System diese Tatsache signalisiert
(Schritt 710). Falls andernfalls in dem zweiten Nachschlagen
ein Eintrag zurückgegeben
wird, ist der Prozess abgeschlossen und es wird ein skalierbarer
Dienst des zweiten Typs zurückgegeben.
-
In
einer Ausführungsform
der vorliegenden Erfindung wählt
das erste Nachschlagen Dienste aus, die einer Lastausgleichspolitik
zugeordnet werden sollen, während
das zweite Nachschlagen Dienste auswählt, die einer zweiten, anderen
Lastausgleichspolitik zugeordnet werden sollen.
-
Prozess des
Weiterleitens eines Pakets
-
8 ist
ein Ablaufplan, der den Prozess des Weiterleitens eines Pakets zu
einem Server in Übereinstimmung
mit einer Ausführungsform
der vorliegenden Erfindung veranschaulicht. Zu einer Zeit während eines
Initialisierungsprozesses stellt das System sicher, dass die IP-Adresse
eines Dienstes in der Loopback-Schnittstelle jedes Server-Knotens
gehostet wird, der zur Ausführung
des Dienstes verwendet wird (Schritt 801). Dies ermöglicht,
dass jeder Server-Knoten trotz der Tatsache, dass der Dienst nicht
in einer öffentlichen
Schnittstelle des Server-Knotens gehostet wird, Pakete für den Dienst verarbeitet.
Nachdem ein IP-Paket 400 empfangen worden ist und nachdem
ein Dienst und ein Server-Knoten ausgewählt worden sind (in Schritt 612 aus 6),
leitet das System das IP-Paket 400 vom Cluster-Vernetzungsmultiplexer 218 im
Schnittstellenknoten 103 zum IP-Stapel 216 im
Server-Knoten 104 weiter. Dies umfasst das Konstruieren
eines DLPI-Anfangsblocks 402, der die MAC-Adresse des Server-Knotens 104 enthält (Schritt 802),
und daraufhin das Anbringen des DLPI-Anfangsblocks 402 am IP-Paket 400 (siehe 4)
(Schritt 804).
-
Nachfolgend
sendet das System das IP-Paket 400 mit dem DLPI-Anfangsblock 402 zur
privaten Schnittstelle 224 im Schnittstellenknoten 103 (Schritt 806).
Die private Schnittstelle 224 sendet das IP-Paket 400 mit
dem DLPI-Anfangsblock 402 zum Server-Knoten 104.
Der Server-Knoten 104 empfängt das IP-Paket 400 mit
dem DLPI-Anfangsblock 402 bei der privaten Schnittstelle 226 (Schritt 808).
Nachfolgend entfernt ein Treiber im Server-Knoten 104 den
DLPI-Anfangsblock 402 vom IP-Paket 400 (Schritt 810).
Daraufhin wird das IP-Paket 400 dem unteren Ende des IP-Stapels 216 beim
Server-Knoten 104 zugeführt
(Schritt 812). Nachfolgend geht das IP-Paket 400 auf
seinem Weg zur Server-Instanz 203 durch den IP-Stapel 216.
-
Es
wird angemerkt, dass das herkömmliche Mittel
der Verwendung eines Fernprozeduraufrufs (RPC) oder eines Schnittstellendefinitionssprachen-Aufrufs
(IDL-Aufrufs) zum
Weiterleiten eines Pakets vom Schnittstellenknoten 103 zum
Server-Knoten 104 das
Durchlaufen eines IP-Stapels von einem RPC/IDL-Endpunkt zur privaten
Schnittstelle 224 im Schnittstellenknoten 103 und
daraufhin das Durchlaufen eines weiteren IP-Stapels erneut beim
Server-Knoten 104 von der privaten Schnittstelle 226 zu
einem RPC/IDL-Endpunkt umfasst. Dies umfasst zwei IP-Stapel-Durchläufe und
ist somit äußerst ineffizient.
-
Im
Gegensatz dazu beseitigt die in dem Ablaufplan aus 8 skizzierte
Technik die zwei IP-Stapel-Durchläufe.
-
Außerdem wird
angemerkt, dass das System beim Weiterleiten des Pakets zu dem Server-Knoten unter
Verwendung eines Verteilungsmechanismus wie etwa einer PDT einen
Lastausgleich zwischen mehreren redundanten Pfaden zwischen dem Schnittstellenknoten
und dem Server-Knoten ausführen
kann.
-
Die
vorstehenden Beschreibungen von Ausführungsformen der Erfindung
wurden lediglich für Veranschaulichungs-
und Beschreibungszwecke dargestellt. Sie sollen nicht erschöpfend sein
und die Erfindung nicht auf die offenbarten Formen beschränken. Dementsprechend
sind für
den im Gebiet erfahrenen Anwender viele Abwandlungen und Änderungen
offensichtlich. Außerdem
soll die obige Offenbarung die Erfindung nicht einschränken. Der
Umfang der Erfindung ist durch die beigefügten Ansprüche definiert.