DE60025129T2 - Verfahren und Vorrichtung zur Bereitstellung von skalierbaren Diensten unter Benutzung einer Paketverteilungstabelle - Google Patents

Verfahren und Vorrichtung zur Bereitstellung von skalierbaren Diensten unter Benutzung einer Paketverteilungstabelle Download PDF

Info

Publication number
DE60025129T2
DE60025129T2 DE60025129T DE60025129T DE60025129T2 DE 60025129 T2 DE60025129 T2 DE 60025129T2 DE 60025129 T DE60025129 T DE 60025129T DE 60025129 T DE60025129 T DE 60025129T DE 60025129 T2 DE60025129 T2 DE 60025129T2
Authority
DE
Germany
Prior art keywords
server
nodes
distribution table
node
service
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60025129T
Other languages
English (en)
Other versions
DE60025129D1 (de
Inventor
Sohrab F. Modi
Sankar Ramamoorthi
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of DE60025129D1 publication Critical patent/DE60025129D1/de
Application granted granted Critical
Publication of DE60025129T2 publication Critical patent/DE60025129T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1008Server selection for load balancing based on parameters of servers, e.g. available memory or workload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1019Random or heuristic server selection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1023Server selection for load balancing based on a hash applied to IP addresses or costs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/10015Access to distributed or replicated servers, e.g. using brokers

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

  • 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 121123 gekoppeltes clusterartiges Rechensystem 100 in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung. Die Clients 121123 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 121123 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 102104 sind mit einem Speichersystem 110 gekoppelt. Das Speichersystem 110 stellt für Code oder für Daten, die durch die Knoten 102104 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 102104 sind durch eine private Zusammenschaltung mit redundanten Pfaden (nicht gezeigt) miteinander gekoppelt. Zum Beispiel können die Knoten 102104 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 102104 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 121123 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 102104 im clusterartigen Rechensystem 100 skalierbare Dienste bereitstellen können. Aus Sicht der Clients 121123 verhält sich jeder skalierbare Dienst als eine einzelne logische Entität. Außerdem wird angemerkt, dass die Clients 121123 ü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 121123 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 201203 in den jeweiligen Knoten 102104 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.

Claims (15)

  1. Verfahren zum Verteilen von Paketen auf Server-Knoten (102; 103; 104) in einem Cluster von Knoten (102; 103; 104), um wenigstens einen Dienst bereitzustellen, wobei das Verfahren umfasst: Empfangen (601) eines Pakets (400) bei einem Schnittstellenknoten (103) in dem Cluster von Knoten, wobei das Paket eine Quelladresse (406), die einen Ort eines Clients (121), von dem das Paket ausging, spezifiziert, und eine Zieladresse (404), die einen durch den Cluster von Knoten bereitgestellten Dienst spezifiziert, enthält; Abbilden (602) der Quelladresse (406) auf einen Eintrag in einer Paketverteilungstabelle (304), wobei die Paketverteilungstabelle Einträge enthält, die Identifizierer für Server-Knoten in dem Cluster von Knoten enthalten; Wiedergewinnen (612) eines einen Server-Knoten spezifizierenden Identifizierers aus dem Eintrag in der Paketverteilungstabelle; und Weiterleiten (613) des Pakets zu dem durch den Identifizierer spezifizierten Server-Knoten, so dass der Server-Knoten den Dienst für den durch die Zieladresse spezifizierten Client ausführen kann, wobei Pakete, die zu einem durch eine einzige Zieladresse (404) spezifizierten Dienst gerichtet sind, auf mehrere Server-Knoten (102, 103, 104) auf eine Weise verteilt werden, die durch die Paketverteilungstabelle (304) spezifiziert ist, und dadurch gekennzeichnet, dass eine Politik für die Aufteilung von Paketen auf Server-Knoten in dem Cluster von Knoten durch Verändern einer Anzahl von Einträgen in der Paketverteilungstabelle für jeden Server-Knoten erzwungen wird, so dass ein Server-Knoten mit mehr Einträgen häufiger als ein Server-Knoten mit weniger Einträgen Pakete empfängt.
  2. Verfahren nach Anspruch 1, das ferner das Zulassen (614), dass der Server-Knoten zurückgeleitete Nachrichten direkt zu dem Client (121) sendet, ohne die zurückgeleiteten Nachrichten durch den Schnittstellenknoten (103) zu leiten, umfasst.
  3. Verfahren nach einem der Ansprüche 1 bis 2, bei dem das Abbilden der Quelladresse das Verwenden einer Hash-Funktion umfasst, die verschiedene Quelladressen auf im Wesentlichen zufällige Weise auf verschiedene Einträge in der Paketverteilungstabelle abbildet, und bei der die Hash-Funktion eine gegebene Quelladresse stets auf denselben Eintrag in der Paketverteilungstabelle (304) abbildet.
  4. Verfahren nach einem der Ansprüche 1 bis 3, das ferner das Verwenden der Zieladresse, um die dem Dienst zugeordnete Paketverteilungstabelle aus mehreren Paketverteilungstabellen auszuwählen, umfasst; und bei dem jede Paketverteilungstabelle in den mehreren Paketverteilungstabellen wenigstens einem durch den Cluster von Knoten bereitgestellten Dienst zugeordnet ist.
  5. Verfahren nach einem der Ansprüche 1 bis 4, das ferner umfasst: periodisches Senden von Fixpunktinformationen von einem primären Paketverteilungstabellen-Server oder PDT-Server zu einem sekundären PDT-Server, so dass der sekundäre PDT-Server in einem konsistenten Zustand mit dem primären PDT-Server gehalten wird; und falls der primäre PDT-Server ausfällt, Zulassen, dass der sekundäre PDT-Server die Rolle des primären PDT-Servers übernimmt.
  6. Verfahren nach den Ansprüchen 1 bis 5, das ferner das periodische Senden von Fixpunktinformationen von einem Master-Paketverteilungstabellen-Server oder Master-PDT-Server zu einem Slave-PDT-Server, der sich bei dem Schnittstellenknoten befindet, umfasst.
  7. Verfahren nach den Ansprüchen 1 bis 6, das ferner umfasst: Untersuchen der Zieladresse, um festzustellen, ob ein durch die Zieladresse spezifizierter Dienst ein skalierbarer Dienst ist, der durch mehrere Server-Knoten in dem Cluster von Knoten bereitgestellt wird, oder ein nicht skalierbarer Dienst ist, der durch einen einzigen Server-Knoten bereitgestellt wird; und falls der Dienst ein nicht skalierbarer Dienst ist, Senden des Pakets zu einer Dienst-Instanz bei dem Schnittstellenknoten.
  8. Verfahren nach einem der Ansprüche 1 bis 7, das ferner dann, wenn ein neuer Server von dem Cluster von Knoten verfügbar wird, das Hinzufügen wenigstens eines Eintrags für den neuen Server in der Paketverteilungstabelle umfasst.
  9. Computerlesbares Speichermedium, das Befehle speichert, die, wenn sie von einem clusterartigen Computersystem ausgeführt werden, das clusterartige Computersystem dazu veranlassen, ein Verfahren zum Verteilen von Paketen auf Server-Knoten (102; 103; 104) in einem Cluster von Knoten (102; 103; 104), um wenigstens einen Dienst bereitzustellen, auszuführen, wobei das Verfahren durch einen der Ansprüche 1 bis 8 definiert ist.
  10. Vorrichtung, die Pakete auf Server-Knoten (102; 103; 104) in einem Cluster von Knoten (102; 103; 104) verteilt, um wenigstens einen Dienst bereitzustellen, wobei die Vorrichtung umfasst: einen Empfangsmechanismus (221) in einem Schnittstellenknoten (103) in dem Cluster von Knoten, der so konfiguriert ist, dass er ein Paket (400) empfängt, das eine Quelladresse (406), die einen Ort eines Clients (121), von dem das Paket ausging, spezifiziert, und eine Zieladresse (404), die einen durch den Cluster von Knoten bereitgestellten Dienst spezifiziert, enthält; einen Serverauswahlmechanismus (230), der so konfiguriert ist, dass er die Quelladresse auf einen Eintrag in einer Paketverteilungstabelle (304) abbildet, wobei die Paketverteilungstabelle Einträge enthält, die Identifizierer für Server-Knoten in dem Cluster von Knoten enthalten, und dass er einen Identifizierer, der einen Server-Knoten spezifiziert, aus dem Eintrag in der Paketverteilungstabelle wiedergewinnt (601); und einen Weiterleitungsmechanismus, der so konfiguriert ist, dass er das Paket zu dem durch den Identifizierer spezifizierten Server-Knoten weiterleitet, so dass der Server-Knoten den Dienst für den durch die Zieladresse spezifizierten Client ausführen kann, wobei Pakete, die zu einem durch eine einzige Zieladresse (404) spezifizierten Dienst gerichtet sind, auf mehrere Server-Knoten (102; 103; 104) auf eine durch die Paketverteilungstabelle (304) spezifizierte Weise verteilt werden, und dadurch gekennzeichnet, dass die Vorrichtung ferner einen Politikimplementierungsmechanismus (306) umfasst, der so konfiguriert ist, dass er eine Politik für die Aufteilung von Paketen auf Server-Knoten in dem Cluster von Knoten durch Verändern einer Anzahl von Einträgen in der Paketverteilungstabelle für jeden Server-Knoten implementiert, so dass ein Server-Knoten mit mehr Einträgen häufiger als ein Server-Knoten mit weniger Einträgen Pakete empfängt.
  11. Vorrichtung nach Anspruch 10, die ferner einen Kommunikationsmechanismus (220; 222) bei dem Server-Knoten (102; 104) umfasst, der so konfiguriert ist, dass er direkt mit dem Client (121) kommuniziert, ohne die Nachrichten über den Schnittstellenknoten (103) weiterzuleiten.
  12. Vorrichtung nach einem der Ansprüche 10 bis 11, bei der der Serverauswahlmechanismus so konfiguriert ist, dass er eine Quelladresse unter Verwendung einer Hash-Funktion abbildet, die verschiedene Quelladressen auf im Wesentlichen zufällige Weise auf unterschiedliche Einträge in der Paketverteilungstabelle (304) abbildet, wobei die Hash-Funktion eine gegebene Quelladresse (406) stets auf denselben Eintrag in der Paketverteilungstabelle (304) abbildet.
  13. Vorrichtung nach den Ansprüchen 10 bis 12, die ferner einen Paketverteilungstabellen-Auswahlmechanismus umfasst, der so konfiguriert ist, dass er die Zieladresse verwendet, um die dem Dienst zugeordnete Paketverteilungstabelle aus mehreren Paketverteilungstabellen auszuwählen; und wobei jede Paketverteilungstabelle der mehreren Paketverteilungstabellen wenigstens einem durch den Cluster von Knoten bereitgestellten Dienst zugeordnet ist.
  14. Vorrichtung nach Anspruch 10 bis 13, die ferner umfasst: einen Fixpunktmechanismus, der so konfiguriert ist, dass er periodisch Fixpunktinformationen von einem primären Paketverteilungstabellen-Server oder PDT-Server zu einem sekundären PDT-Server sendet, so dass der sekundäre PDT-Server in einem konsistenten Zustand mit dem primären PDT-Server gehalten wird; und einen Ausfallmechanismus, der so konfiguriert ist, dass er zulässt, dass der sekundäre PDT-Server die Rolle des primären PDT-Servers übernimmt, falls der primäre PDT-Server ausfällt.
  15. Vorrichtung nach Anspruch 14, bei der der Fixpunktmechanismus ferner so konfiguriert ist, dass er periodisch Fixpunktinformationen von dem primären PDT-Server zu einem bei dem Schnittstellenknoten befindlichen Slave-PDT-Server sendet.
DE60025129T 1999-10-21 2000-10-18 Verfahren und Vorrichtung zur Bereitstellung von skalierbaren Diensten unter Benutzung einer Paketverteilungstabelle Expired - Lifetime DE60025129T2 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US16099599P 1999-10-21 1999-10-21
US160995P 1999-10-21
US09/480,147 US6667980B1 (en) 1999-10-21 2000-01-10 Method and apparatus for providing scalable services using a packet distribution table
US480147 2000-01-10

Publications (2)

Publication Number Publication Date
DE60025129D1 DE60025129D1 (de) 2006-02-02
DE60025129T2 true DE60025129T2 (de) 2006-08-17

Family

ID=26857421

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60025129T Expired - Lifetime DE60025129T2 (de) 1999-10-21 2000-10-18 Verfahren und Vorrichtung zur Bereitstellung von skalierbaren Diensten unter Benutzung einer Paketverteilungstabelle

Country Status (4)

Country Link
US (1) US6667980B1 (de)
EP (1) EP1094645B1 (de)
AT (1) ATE314776T1 (de)
DE (1) DE60025129T2 (de)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6735205B1 (en) * 2000-01-10 2004-05-11 Sun Microsystems, Inc. Method and apparatus for fast packet forwarding in cluster networking
US6735206B1 (en) * 2000-01-10 2004-05-11 Sun Microsystems, Inc. Method and apparatus for performing a fast service lookup in cluster networking
US7225240B1 (en) * 2000-05-20 2007-05-29 Ciena Corporation Decoupling processes from hardware with logical identifiers
US7136913B2 (en) * 2000-05-31 2006-11-14 Lab 7 Networks, Inc. Object oriented communication among platform independent systems across a firewall over the internet using HTTP-SOAP
FI20010552A0 (fi) * 2001-03-19 2001-03-19 Stonesoft Oy Tilatietojen käsittely verkkoelementtiklusterissa
US6925492B2 (en) * 2001-06-25 2005-08-02 Sun Microsystems, Inc Method and apparatus for automatic configuration of a cluster of computers
US6757735B2 (en) * 2001-07-03 2004-06-29 Hewlett-Packard Development Company, L.P. Method for distributing multiple description streams on servers in fixed and mobile streaming media systems
US7228337B1 (en) * 2001-09-11 2007-06-05 Cisco Technology, Inc. Methods and apparatus for providing a network service to a virtual machine
FR2865051B1 (fr) * 2004-01-14 2006-03-03 Stg Interactive Procede et systeme pour l'exploitation d'un reseau informatique destine a la publication de contenu
US7415035B1 (en) 2005-04-04 2008-08-19 Sun Microsystems, Inc. Device driver access method into a virtualized network interface
US7443878B2 (en) * 2005-04-04 2008-10-28 Sun Microsystems, Inc. System for scaling by parallelizing network workload
US7779164B2 (en) * 2005-04-04 2010-08-17 Oracle America, Inc. Asymmetrical data processing partition
US7865624B1 (en) 2005-04-04 2011-01-04 Oracle America, Inc. Lookup mechanism based on link layer semantics
US7992144B1 (en) 2005-04-04 2011-08-02 Oracle America, Inc. Method and apparatus for separating and isolating control of processing entities in a network interface
US7415034B2 (en) * 2005-04-04 2008-08-19 Sun Microsystems, Inc. Virtualized partitionable shared network interface
US7987306B2 (en) * 2005-04-04 2011-07-26 Oracle America, Inc. Hiding system latencies in a throughput networking system
US7529245B1 (en) 2005-04-04 2009-05-05 Sun Microsystems, Inc. Reorder mechanism for use in a relaxed order input/output system
US7353360B1 (en) 2005-04-05 2008-04-01 Sun Microsystems, Inc. Method for maximizing page locality
US7664127B1 (en) 2005-04-05 2010-02-16 Sun Microsystems, Inc. Method for resolving mutex contention in a network system
US8510491B1 (en) 2005-04-05 2013-08-13 Oracle America, Inc. Method and apparatus for efficient interrupt event notification for a scalable input/output device
US7889734B1 (en) 2005-04-05 2011-02-15 Oracle America, Inc. Method and apparatus for arbitrarily mapping functions to preassigned processing entities in a network system
US7567567B2 (en) * 2005-04-05 2009-07-28 Sun Microsystems, Inc. Network system including packet classification for partitioned resources
US7843926B1 (en) 2005-04-05 2010-11-30 Oracle America, Inc. System for providing virtualization of network interfaces at various layers
US8762595B1 (en) 2005-04-05 2014-06-24 Oracle America, Inc. Method for sharing interfaces among multiple domain environments with enhanced hooks for exclusiveness
US7895308B2 (en) 2005-05-11 2011-02-22 Tindall Steven J Messaging system configurator
US20070071233A1 (en) * 2005-09-27 2007-03-29 Allot Communications Ltd. Hash function using arbitrary numbers
ES2387625T3 (es) * 2007-12-17 2012-09-27 Nokia Siemens Networks Oy Encaminamiento de consulta en un sistema de base de datos distribuida
CN101355476B (zh) * 2008-05-23 2011-05-11 林云帆 一种基于服务器群集的数据文件存储、分发和应用的系统和方法
US9094364B2 (en) * 2011-12-23 2015-07-28 A10 Networks, Inc. Methods to manage services over a service gateway
CN102769582B (zh) * 2012-08-02 2015-06-03 深圳中兴网信科技有限公司 逻辑服务器、即时通信系统和即时通信方法
CN103731448B (zh) 2012-10-11 2017-09-26 腾讯科技(深圳)有限公司 一种压缩图片的方法和系统
US9391884B2 (en) * 2014-01-31 2016-07-12 Google Inc. Consistent hashing using exact matching with application to hardware load balancing
US10402172B1 (en) 2019-02-28 2019-09-03 Qrypt, Inc. Multi-source entropy and randomness aggregation and distribution network

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6185619B1 (en) 1996-12-09 2001-02-06 Genuity Inc. Method and apparatus for balancing the process load on network servers according to network and serve based policies
US6097882A (en) 1995-06-30 2000-08-01 Digital Equipment Corporation Method and apparatus of improving network performance and network availability in a client-server network by transparently replicating a network service
JP3613863B2 (ja) * 1995-07-19 2005-01-26 株式会社日立製作所 ネットワーク接続システム及び並列ネットワーク接続方法
US6104717A (en) * 1995-11-03 2000-08-15 Cisco Technology, Inc. System and method for providing backup machines for implementing multiple IP addresses on multiple ports
US6154777A (en) 1996-07-01 2000-11-28 Sun Microsystems, Inc. System for context-dependent name resolution
US5774660A (en) 1996-08-05 1998-06-30 Resonate, Inc. World-wide-web server with delayed resource-binding for resource-based load balancing on a distributed resource multi-node network
US5918017A (en) 1996-08-23 1999-06-29 Internatioinal Business Machines Corp. System and method for providing dynamically alterable computer clusters for message routing
US5938732A (en) 1996-12-09 1999-08-17 Sun Microsystems, Inc. Load balancing and failover of network services
US6424992B2 (en) 1996-12-23 2002-07-23 International Business Machines Corporation Affinity-based router and routing method
US6470389B1 (en) * 1997-03-14 2002-10-22 Lucent Technologies Inc. Hosting a network service on a cluster of servers using a single-address image
US6256675B1 (en) 1997-05-06 2001-07-03 At&T Corp. System and method for allocating requests for objects and managing replicas of objects on a network
JPH1196102A (ja) * 1997-09-25 1999-04-09 Hitachi Ltd サーバ分散管理方法
US6266335B1 (en) 1997-12-19 2001-07-24 Cyberiq Systems Cross-platform server clustering using a network flow switch
US6363077B1 (en) 1998-02-13 2002-03-26 Broadcom Corporation Load balancing in link aggregation and trunking
US5964886A (en) 1998-05-12 1999-10-12 Sun Microsystems, Inc. Highly available cluster virtual disk system
US6195680B1 (en) 1998-07-23 2001-02-27 International Business Machines Corporation Client-based dynamic switching of streaming servers for fault-tolerance and load balancing
US6253230B1 (en) * 1998-09-22 2001-06-26 International Business Machines Corporation Distributed scalable device for selecting a server from a server cluster and a switched path to the selected server
US6247141B1 (en) * 1998-09-24 2001-06-12 Telefonaktiebolaget Lm Ericsson (Publ) Protocol for providing replicated servers in a client-server system
US6438652B1 (en) 1998-10-09 2002-08-20 International Business Machines Corporation Load balancing cooperating cache servers by shifting forwarded request
US6226684B1 (en) 1998-10-26 2001-05-01 Pointcast, Inc. Method and apparatus for reestablishing network connections in a multi-router network
US6445709B1 (en) 1999-05-13 2002-09-03 Advanced Micro Devices, Inc. Method and apparatus for finding a match entry using receive port number embedded in the port vector
US6549516B1 (en) * 1999-07-02 2003-04-15 Cisco Technology, Inc. Sending instructions from a service manager to forwarding agents on a need to know basis
US6389448B1 (en) * 1999-12-06 2002-05-14 Warp Solutions, Inc. System and method for load balancing

Also Published As

Publication number Publication date
DE60025129D1 (de) 2006-02-02
ATE314776T1 (de) 2006-01-15
EP1094645A2 (de) 2001-04-25
EP1094645A3 (de) 2001-06-13
US6667980B1 (en) 2003-12-23
EP1094645B1 (de) 2005-12-28

Similar Documents

Publication Publication Date Title
DE60025129T2 (de) Verfahren und Vorrichtung zur Bereitstellung von skalierbaren Diensten unter Benutzung einer Paketverteilungstabelle
DE60026231T2 (de) Verfahren und Vorrichtung zur Durchführung eines Schnellen Dienstnachschlagen in einem Neztwerkgruppen
DE60103088T2 (de) Verfahren zur Herstellung von Weiterleitungslisten für Netzwerkgruppe
DE60024763T2 (de) Verfahren und Vorrichtung zur Packetfragmentenweiterleitung
DE69837691T2 (de) Lastverteilung zwischen Servern in einem TCP/IP-Netz
DE69935920T2 (de) Lastausgleich in einer netzwerkumgebung
DE69736422T2 (de) Verfahren und Vorrichtung für eine hybride Serverkommunikationsstruktur zwischen gleichen Schichten
DE112020001459T5 (de) Konsistente Route-Ankündigungen zwischen redundanten Controllern im globalen Netzwerk-Access-Point
DE69837938T2 (de) Übergreifende bildung von server clustern mittels einer netzwerkflussvermittlung
DE112008001682B4 (de) Speicherbereichsnetzwerk mit Erkennung auf der Zielseite und dem Hochladen einer Routing- Tabelle
US6735205B1 (en) Method and apparatus for fast packet forwarding in cluster networking
DE60216918T2 (de) Verfahren und computersystem zur auswahl eines randservercomputers
DE69835400T2 (de) Netzbelastungsausgleich für Mehrrechner Anbieter
DE60122782T2 (de) Adressierungsverfahren und system zur verwendung einer anycast-adresse
DE69733498T2 (de) Verteiltes rechnersystem und verfahren zur aufteilung von benutzeranfragen auf duplizierte netzwerkserver
US7406540B2 (en) Method and apparatus for content-aware web switching
US7111300B1 (en) Dynamic allocation of computing tasks by second distributed server set
DE602005003142T2 (de) Vorrichtung und verfahren zur unterstützung von verbindungsherstellung in einem offload der netzwerkprotokollverarbeitung
DE102005009107B3 (de) Bereitstellung von redundanten SIP Proxy Ressourcen
DE112019005826T5 (de) Lastverteilter Zugang zu verteilten Endpunkten unter Verwendung globaler Netzwerkadressen
DE112008003966T5 (de) Selektives Um-Abbilden einer Netzwerktopologie
DE202015009264U1 (de) Anycast-basiertes, wide-area-verteiltes kartierungs- und lastverteilungssystem
DE10205108A1 (de) System und Verfahren zum Zugreifen auf Softwarekomponenten in einer verteilten Netzwerkumgebung
DE10297645B4 (de) Verfahren und Einrichtung zum Lastteilen und zur Datenverteilung in Servern
JP2003519872A (ja) データ・マルチキャスト・チャネル

Legal Events

Date Code Title Description
8364 No opposition during term of opposition