-
Hintergrund
-
1. Gebiet der Erfindung:
-
Die hier beschriebene und beanspruchte Erfindung betrifft im Allgemeinen ein Verfahren und eine Vorrichtung, bei denen ein Hypervisor mit einem oder mehreren anderen Hypervisors verbunden ist, um einen Cluster mit hoher Verfügbarkeit (HA-Cluster) zu bilden. Die Erfindung betrifft insbesondere ein Verfahren und eine Vorrichtung des oben genannten Typs, bei denen jeder Hypervisor eine Vielzahl von Gast-Betriebssystemen oder virtuelle Gast-Maschinen (Gast-VMs) freigeben kann, damit diese auf einer Host-Datenverarbeitungsplattform gleichzeitig betrieben werden können.
-
2. Beschreibung des Standes der Technik:
-
Bestimmte Virtualisierungs-Verwaltungsprodukte halten die Verfügbarkeit von Gast-VMs vor, indem ein HA-Cluster-Produkt in ihren Produktangeboten enthalten oder eingebettet ist. Diese Produkte funktionieren üblicherweise, indem sie aus zugrundeliegenden Hypervisors, die jeweils auf einer physischen Maschine betrieben werden, ein Cluster mit hoher Verfügbarkeit bilden. Ein Austausch von Aktivitätssignalen (heartbeating) findet dann zwischen den Hypervisors statt. Wenn bei einem Mitglied des Clusters kein Aktivitätssignal mehr auftritt, entweder infolge eines Hypervisor-Fehlers oder eines Fehlers eines physischen Servers, startet die eingebettete Technologie der HA-Clusterbildung die Gast-VMs auf alternativen Servern, wodurch ihre Verfügbarkeit aufrechterhalten wird.
-
Dieser Ansatz weist verschiedene Einschränkungen auf. Er erkennt z. B. keinen Fehler der eigentlichen Gast-VM-Systeme und führt keine Wiederherstellung nach einem Totalabsturz der Gast-Betriebssysteme aus. Bei einem derartigen Ansatz wird lediglich der Fehler des zugrundeliegenden Hypervisor und seines physischen Servers erkannt und eine Wiederherstellung ausgeführt. Es wird weder der Fehler von Anwendungen erkannt, die in den Gast-VMs ausgeführt werden, noch eine Wiederherstellung ausgeführt. Dadurch können Anwendungen möglicherweise ausfallen, während sie in der Gast-VM ausgeführt werden, ohne dass der Hypervisor-gestützte Cluster irgendeine Notiz davon nimmt. In diesem Fall ist der Gast noch aktiv, aber er erbringt keine Dienstleistung. Das stellt eine wesentliche Einschränkung der erreichbaren Verfügbarkeit von virtualisierten Systemen dar, da Fehler häufig infolge von Problemen des Betriebssystems auftreten und Anwendungen abstürzen und sich aufhängen. Darüber hinaus erfordern komplexere kritische Geschäftsanwendungen, dass Operationen auf der Anwendungsebene Nutzen aus einer bestimmten integrierten Technologie zur Daten-Replikation ziehen. Wenn die Gast-VM nicht einsehbar ist, ist es nicht möglich, diese Operationen aufzurufen und aus den integrierten Funktionen Nutzen zu ziehen.
-
Außerdem müssen Benutzer, die aus beiden HA-Funktionen, auf der Hypervisor-Ebene und in der Gast-VM Nutzen, ziehen möchten, üblicherweise zu Experten in Bezug auf HA-Manager auf der Hypervisor-Ebene und der Anwendungsebene werden und diese installieren. Gleichzeitig müssen diese Benutzer sicherstellen, dass Strategien, die eine Beziehung zwischen Ressourcen ausdrücken und gewährleisten, dass z. B. Dateisysteme dort eingerichtet werden, wo die Anwendung gestartet wird, oder dass der Empfänger eines Daten-Replikationspaars auf einem anderen physischen System als der Absender gestartet wird, durch die HA-Systeme sowohl der Hypervisor-Ebene als auch der Anwendungsebene vorgehalten werden. Dieser Komplexitätsgrad der Verwaltung übersteigt jedoch im Allgemeinen die Möglichkeiten der meisten Benutzer.
-
Zusammenfassung
-
Ausführungsformen der Erfindung können wahlweise die Form eines Verfahrens, eines Computerprogrammprodukts oder einer Vorrichtung annehmen. Eine Ausführungsform, die auf ein Verfahren gerichtet ist, ist mit einem ersten Knoten ausgestattet, der einen Hypervisor und eine oder mehrere virtuelle Gast-Maschinen (VMs) aufweist, wobei jede Gast-VM so angeordnet ist, dass auf ihr eine oder mehrere Anwendungen ausgeführt werden, und wobei der erste Knoten mit einem oder mehreren anderen Knoten verbunden ist, um ein Cluster mit hoher Verfügbarkeit (HA) zu bilden. Das Verfahren beinhaltet einen Schritt des Einrichtens eines internen bidirektionalen Datenübertragungskanals zwischen jeder Gast-VM und dem Hypervisor des ersten Knotens. Das Verfahren beinhaltet des Weiteren ein Senden von Nachrichten, die Befehle enthalten, und von Antworten auf Befehle über den internen Kanal zwischen dem Hypervisor und einer speziellen Gast-VM, wobei entsprechende Befehle gesendet werden, um eine bestimmte Anwendung zu verwalten, die auf der speziellen Gast-VM ausgeführt wird. Die Nachrichten werden wahlweise überwacht, um ein Auftreten einer Fehlerbedingung zu erkennen, die der speziellen Anwendung zugehörig ist, die auf der vorgegebenen Gast-VM ausgeführt wird. In Reaktion auf ein Erkennen einer Fehlerbedingung werden Aktionen unternommen, um die Fehlerbedingung zu korrigieren, wobei zu den Aktionen das Senden wenigstens eines Befehls über den internen Kanal von dem Hypervisor zu der vorgegebenen Gast-VM gehört.
-
Kurzbeschreibung der mehreren Zeichnungsansichten
-
Die 1A und 1B sind Blockschaltpläne, die jeweils ein HA-Cluster aus Knoten darstellen, bei denen eine veranschaulichende Ausführungsform der Erfindung umgesetzt ist;
-
2 ist eine schematische Ansicht, die einen Knoten für ein Knoten-Cluster von 1A oder 1B veranschaulicht;
-
3 ist ein Ablaufplan, der Schritte eines Verfahrens zeigt, das eine Ausführungsform der Erfindung aufweist; und
-
4 ist ein Blockschaltplan, der ein Computer- oder Datenverarbeitungssystem zeigt, das als eine oder mehrere der Komponenten einer Ausführungsform der Erfindung verwendet werden kann.
-
Genaue Beschreibung
-
Einem Fachmann ist klar, dass Aspekte der vorliegenden Erfindung als System, Verfahren oder Computerprogrammprodukt verkörpert werden können. Dementsprechend können Aspekte der vorliegenden Erfindung die Form einer reinen Hardware-Ausführungsform, einer reinen Software-Ausführungsform (darunter Firmware, residente Software, Mikrocode usw.) oder einer Ausführungsform, die Software- und Hardware-Aspekte kombiniert, annehmen, die hier alle als ”Schaltung”, ”Modul” oder ”System” bezeichnet werden können. Des Weiteren können Aspekte der vorliegenden Erfindung die Form eines Computerprogrammprodukts annehmen, das in einem oder mehreren computerlesbaren Medien verkörpert wird, die computerlesbaren Programmcode aufweisen, der darin ausgeführt wird.
-
Jede Kombination aus einem oder mehreren computerlesbaren Medien kann genutzt werden. Bei dem computerlesbaren Medium kann es sich um ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium handeln. Ein computerlesbares Speichermedium kann z. B. ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, -vorrichtung oder -einheit oder jede geeignete Kombination des Vorhergehenden sein, ist jedoch nicht darauf beschränkt. Zu spezifischeren Beispielen (eine nicht erschöpfende Liste) des computerlesbaren Speichermediums würde Folgendes gehören: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, ein Festplattenlaufwerk, ein Direktzugriffsspeicher (RAM), ein Festwertspeicher (ROM), ein löschbarer programmierbarer Festwertspeicher (EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Compactdisk-Festwertspeicher (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder jede geeignete Kombination des Vorhergehenden. Im Kontext dieses Dokuments kann ein computerlesbares Speichermedium jedes materielle Medium sein, das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Befehlsausführung enthalten oder speichern kann.
-
Ein computerlesbares Signalmedium kann ein sich ausbreitendes Datensignal mit computerlesbarem Programmcode enthalten, der darin z. B. im Basisband oder als Teil einer Trägerwelle verkörpert wird. Ein derartiges sich ausbreitendes Signal kann jede von einer Vielfalt von Formen annehmen, zu denen elektromagnetische, optische Formen oder jede geeignete Kombination hiervon gehören, jedoch nicht darauf beschränkt sind. Ein computerlesbares Signalmedium kann jedes computerlesbare Medium sein, das kein computerlesbares Speichermedium ist und ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Befehlsausführung übertragen, verbreiten oder transportieren kann.
-
Programmcode, der auf einem computerlesbaren Medium verkörpert ist, kann unter Verwendung jedes geeigneten Mediums übertragen werden, darunter drahtlose, leitungsgestützte, Lichtwellenleiterkabel-, Hochfrequenz-(HF-)Medien usw. oder jede geeignete Kombination aus dem Vorhergehenden, ohne darauf beschränkt zu sein.
-
Computerprogrammcode zum Ausführen von Operationen für Aspekte der vorliegenden Erfindung kann in jeder Kombination aus einer oder mehreren Programmiersprachen geschrieben sein, darunter eine objektorientierte Programmiersprache wie Java, Smalltalk, C++ oder dergleichen und herkömmliche prozedurale Programmiersprachen wie etwa die Programmiersprache ”C” oder ähnliche Programmiersprachen. Der Programmcode kann nur auf dem Computer eines Benutzers, teilweise auf dem Computer eines Benutzers, als ein eigenständiges Software-Paket, teilweise auf dem Computer eines Benutzers und teilweise auf einem fernen Computer oder nur auf dem fernen Computer oder Server ausgeführt werden. In dem zuletzt genannten Szenario kann der ferne Computer mit dem Computer des Benutzers durch jeden Netzwerktyp verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann zu einem externen Computer (z. B. über das Internet unter Verwendung eines Internet-Dienstanbieters) hergestellt werden.
-
Aspekte der vorliegenden Erfindung werden hier unter Bezugnahme auf Ablaufplan-Darstellungen und/oder Blockschaltbilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es ist klar, dass jeder Block der Ablaufplan-Darstellungen und/oder Blockschaltbilder und Kombinationen von Blöcken in den Ablaufplan-Darstellungen und/oder Blockschaltbildern durch Computerprogrammbefehle umgesetzt werden können. Diese Computerprogrammbefehle können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu bilden, so dass Befehle, die über den Prozessor des Computers oder der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, Mittel zum Umsetzen der Funktionen/Wirkungen, die in dem Block oder den Blöcken des Ablaufplans und/oder Blockschaltbilds spezifiziert sind, erzeugen.
-
Diese Computerprogrammbefehle können außerdem in einem computerlesbaren Medium gespeichert sein, das einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten anweisen kann, in einer bestimmten Weise zu funktionieren, so dass die in dem computerlesbaren Medium gespeicherten Befehle einen Herstellungsgegenstand produzieren, der Befehle enthält, die die Funktion/Wirkung umsetzen, die in dem Block/den Blöcken des Ablaufplans und/oder Blockschaltbilds spezifiziert sind.
-
Computerprogrammbefehle können außerdem in einen Computer, andere programmierbare Datenverarbeitungsvorrichtungen oder andere Einheiten geladen werden, um eine Reihe von Operationsschritten zu bewirken, die auf dem Computer, der anderen programmierbaren Datenverarbeitungsvorrichtung oder anderen Einheiten ausgeführt werden sollen, um einen durch einen Computer umgesetzten Prozess zu erzeugen, so dass die Befehle, die auf dem Computer oder der anderen programmierbaren Vorrichtung ausgeführt werden, Prozesse zum Umsetzen der Funktionen/Wirkungen, die in dem Block oder Blöcken des Ablaufplans und/oder Blockschaltbilds spezifiziert sind, bereitstellen.
-
In 1A ist ein Computer-Cluster 100 mit hoher Verfügbarkeit (HA-Computer-Cluster) gezeigt, der mehrere Knoten aufweist, die durch die Knoten 102 und 104 beispielhaft dargestellt sind. Die Knoten 102 und 104 werden außerdem als Knoten 1 bzw. Knoten N bezeichnet, wobei es sich bei N um die Gesamtanzahl von Knoten handelt. N ist zweckmäßigerweise zwei, wobei der Cluster 100 nicht darauf beschränkt ist. Entsprechende Knoten werden miteinander verbunden, um den Cluster mit Hilfe eines Busses 106 oder dergleichen zu bilden.
-
Jeder der Knoten weist ein Computerserversystem auf, das wie nachfolgend in Verbindung mit 2 beschrieben gemäß einer Ausführungsform der Erfindung aufgebaut oder eingerichtet ist. Im Einzelnen enthält jeder Knoten einen Hypervisor und eine Hardware-Plattform zum Ausführen von Anwendungen und mehrerer Gast-Betriebssysteme, die hier als virtuelle Gast-Maschinen (Gast-VMs) bezeichnet werden.
-
In 1A ist des Weiteren ein Kabel 108 gezeigt, das vorgesehen ist, um alle Hypervisors der Knoten des Clusters 100 untereinander zu verbinden und um Aktivitäts-Impulse und Nachrichten zwischen ihnen zu befördern. Wenn eine Anwendung auf einem vorgegebenen Knoten ausgeführt wird und der andere Knoten eine Veränderung oder ein Ausbleiben der Aktivitätssignale erkennt, die von dem vorgegebenen Knoten gesendet werden, erkennt der andere Knoten, dass in dem Hypervisor oder in dem physischen Server des vorgegebenen Knotens ein Fehler aufgetreten ist. Der andere Knoten kann dann gestartet werden, um eine Ausfallsicherung (failover) auszuführen, damit die Anwendung auf einer Gast-VM ausgeführt wird, die durch den Hypervisor des anderen Knotens verwaltet wird.
-
Bei dem Cluster 100 handelt es sich um eine Peer-zu-Peer-Anordnung, da der Cluster nicht mit einer zentralen Verwaltungseinheit ausgerüstet ist, um eine Ausfallsicherung zwischen verschiedenen Knoten anzuweisen oder zu steuern. Eine Ausfallsicherung wird stattdessen durch die eigentlichen Knoten umgesetzt.
-
In 1B sind wiederum die Knoten 102 und 104 gezeigt, die mit Hilfe eines Busses 106 zum Bilden eines Clusters miteinander verbunden sind. Der Cluster von 1B ist jedoch anstelle des Aktivitätssignal-Kabels 108 mit einer HA-Cluster-Verwaltungseinheit 110 ausgestattet. Wenn eine Anwendung auf einem vorgegebenen Knoten ausgeführt, werden Aktivitätssignale, die von dem vorgegebenen Knoten gesendet werden, durch die Verwaltungseinheit 110 überwacht. Beim Erfassen eines Fehlers, der durch die Aktivitätssignale erkennbar ist, könnte die Verwaltungseinheit 110 eine Ausfallsicherung ausführen, damit die Anwendung auf dem anderen Knoten ausgeführt wird.
-
In 2 ist ein Knoten 200 gezeigt, der als einer der Knoten 102 oder 104 von 1A und 1B verwendet werden kann. Der Knoten 200 weist eine Datenverarbeitungsplattform 102 mit einer Hardware-Komponente 204a und einem Betriebssystem 204b auf, die einen Hypervisor 206 enthält. Die Hardware-Komponente 204a und der Host 204b sind funktionsmäßig in der Lage, Gast-Betriebssysteme oder virtuelle Maschinen (VMs) 208 und 210 bereitzustellen, die durch den Hypervisor 206 verwaltet werden. Die Gast-VMs 208 und 210 sind in der Lage, entsprechende Anwendungen 212 und 214 auszuführen und sind mit Verwaltungseinheiten 216 und 218 der Anwendungsverfügbarkeit ausgestattet, die diese Anwendungen steuern und überwachen.
-
2 zeigt des Weiteren eine lokale HA-Cluster-Verwaltungseinheit 220, die einen Hypervisor 206 über einen bidirektionalen Datenübertragungspfad wie etwa eine Verbindung 220a verwaltet. Wie nachstehend genauer beschrieben ist die HA-Cluster-Verwaltungseinheit 220 so eingerichtet, dass sie Ausfallsicherungen ausführt, die den Knoten 200 betreffen. Wenn beispielsweise eine Anwendung auf einer Gast-VM ausgeführt wird und ein Hypervisor 206 die Cluster-Verwaltungseinheit 220 über einen erkannten Fehler benachrichtigt, könnte die HA-Cluster-Verwaltungseinheit den Hypervisor 206 anweisen, die Anwendung auf einer anderen Gast-VM des Knotens 200 oder auf einer Gast-VM eines anderen Knotens des zugehörigen Knoten-Clusters ausführen zu lassen. Durch Bereitstellen dieser Möglichkeit ist der Knoten-Cluster in der Lage, eine hohe Verfügbarkeit zu erreichen. Die entsprechende Operation der HA-Cluster-Verwaltungseinheit 220 und des Hypervisor 206 und die Interaktion zwischen ihnen zum Überwachen und Verwalten von Gast-VMs 208 und 210 und Anwendungen, die auf den Gast-VMs ausgeführt werden, werden nachfolgend genauer beschrieben.
-
Bei einer weiteren Ausführungsform der Erfindung könnte der HA-Cluster-Manager 220 benachbart zum Hypervisor 206 angeordnet oder in ihm enthalten sein. Bei dieser Ausführungsform würde jede dieser Komponenten in der oben beschriebenen Weise funktionieren oder betrieben werden.
-
Zweckmäßigerweise weist die HA-Cluster-Verwaltungseinheit 220 eine Komponente der Tivoli System Automation Multi-Platform (TSA-MP) der International Business Machines Corporation auf. Die Erfindung ist jedoch nicht darauf beschränkt. 2 zeigt außerdem, dass die HA-Cluster-Verwaltungseinheit 220 so geschaltet ist, dass sie mit lokalen Dateisystem-Komponenten 222 und 224 der Datenverarbeitungsplattform 202 über Verbindungen 220b bzw. 220c interagiert. Diese Dateisystem-Komponenten werden bei Datenübertragungen mit Gast-VMs 216 bzw. 218 verwendet wie nachstehend genauer beschrieben.
-
In 2 ist des Weiteren ein VM-Kanal oder interner Kanal 226 gezeigt, der zwischen dem Hypervisor 206 und einer Anwendungsverfügbarkeits-Verwaltungseinheit 216 der Gast-VM 208 verläuft. Ein ähnlicher interner Kanal 228 verläuft zwischen dem Hypervisor 206 und einer Anwendungsverfügbarkeits-Verwaltungseinheit 218 der Gast-VM 210. Die internen Kanäle 226 und 228 sind jeweils bidirektional und sind somit in der Lage, Nachrichten zwischen dem Hypervisor 206 und ihren entsprechenden Gast-VMs 208 und 210 zu befördern. 2 zeigt des Weiteren einen Kanal 226, der weiter zum Dateisystem 22 verläuft, und einen Kanal 228, der weiter zum Dateisystem 224 verläuft. Die internen Kanäle 226 und 228 können unter Verwendung eines Hypervisor einer Kernel-gestützten virtuellen Maschine (KVM) umgesetzt sein, obwohl die Erfindung keinesfalls darauf beschränkt ist.
-
Der interne Kanal 226 weist einen im Voraus spezifizierten Pfad zum Streamen von Daten in zwei Richtungen zwischen dem Hypervisor 206 und der Anwendungsverfügbarkeits-Verwaltungseinheit 208 der Gast-VM 208 auf. Der interne Kanal 226 enthält einen Speicherpuffer mit einer im Voraus spezifizierten Kapazität an seinen beiden Enden, um Daten zu streamen oder über den Kanal gestreamte Daten zu empfangen. Lesenachrichten und Schreibnachrichten könnten unter Verwendung einer API gesendet werden, die Teile zur Übertragung über den internen Kanal erzeugt und verwendet. Anschlüsse könnten bei dem Hypervisor und auch bei der Anwendungsverfügbarkeits-Verwaltungseinheit 208 erzeugt werden.
-
Der interne Kanal 228 ist dem internen Kanal 226 ähnlich oder mit diesem identisch, mit der Ausnahme, dass der interne Kanal 228 zwischen dem Hypervisor 206 und der Anwendungsverfügbarkeits-Verwaltungseinheit 218 verläuft.
-
Durch Bereitstellen von Kanälen 226 und 228 in der oben beschriebenen Weise und gemäß Ausführungsformen der Erfindung erhält die HA-Cluster-Verwaltungseinheit 220, die über den Hypervisor 206 wirkt, eine bessere Möglichkeit, Anwendungen zu verwalten und zu steuern, die auf Gast-VMs 208 und 210 ausgeführt werden. Der Hypervisor 206 ist beispielsweise in der Lage, Befehle über den internen Kanal 226 zum Kern der Gast-VM 208 und insbesondere zu ihrer Anwendungsverfügbarkeits-Verwaltungseinheit 216 zu senden. Zu diesen Befehlen gehören Start-, Stopp- und Statusabfragebefehle, die eine Anwendung 212 betreffen. In Reaktion auf diese Befehle werden Antwortcodes von der Verwaltungseinheit 216 der Gast-VM 208 zurück zum Hypervisor 206 gesendet. Dadurch ist der Hypervisor 206 in der Lage, den Betrieb einer Anwendung 212 direkt zu steuern, wenn diese Anwendung auf der Gast-VM 208 ausgeführt wird.
-
Darüber hinaus kann der Hypervisor 206 Nachrichten über den internen Kanal 226 zur Verfügbarkeits-Verwaltungseinheit 216 senden, die den Status oder die Verfügbarkeit einer Anwendung 212 abfragt, die auf der Gast-VM 208 ausgeführt wird. Statusinformationen, die durch die Verfügbarkeits-Verwaltungseinheit 216 über den internen Kanal 226 bereitgestellt werden, könnten Fehlernachrichten, die durch die Verwaltungseinheit 216 protokolliert werden, Leistungsinformationen für die Anwendung 212 und Warnnachrichten wie etwa eine eingeschränkte Speicherkapazität enthalten. Statusinformationen könnten des Weiteren eine Benachrichtigung enthalten, dass ein Schwellenwert überschritten wurde, der eine im Voraus spezifizierte Regel betrifft, die der Anwendung 212 zugehörig ist. Durch Überwachen der Antworten auf diese Anfragen und andere Nachrichten, die von der Anwendungsverfügbarkeits-Verwaltungseinheit 216 der Gast-VM 208 über den internen Kanal 226 gesendet werden, können Fehler erkannt werden, die in der ausgeführten Anwendung 212 oder in der Gast-VM 208 aufgetreten sind. Beim Erkennen eines derartigen Fehlers können Korrekturmaßnahmen ergriffen werden. Somit können durch Bereitstellen der Anwendungsverfügbarkeits-Verwaltungseinheit 216 zusammen mit dem internen Kanal in der beschriebenen Weise Anwendungen in der VM 208 verwaltet und überwacht werden.
-
Die HA-Cluster-Verwaltungseinheit 220 ist über die Verbindung 220a oder dergleichen in der Lage, Statusinformationen von dem Hypervisor 206 in Bezug auf die Anwendungsverfügbarkeit und Hardware-Einheiten in den beiden Gast-VMs 208 und 210 zu erhalten. Das schließt die Verfügbarkeits-Verwaltungseinheiten 216 und 218 ein. In Reaktion auf das Sammeln von derartigen Statusinformationen ist die Cluster-Verwaltungseinheit 220 in der Lage, auf der Grundlage von im Voraus spezifizierten Regeln Entscheidungen zum Ausführen von Befehlen für den Hypervisor 206 zu treffen. Derartige Befehle könnten durch das Ausführen von Skripts oder dergleichen abgearbeitet werden. Wenn demzufolge wie oben beschrieben in einer ausgeführten Anwendung 212 ein Fehler erkannt wird, könnte die HA-Cluster-Verwaltungseinheit 220 den Hypervisor 206 anweisen, eine Anwendung 212 zu starten, anzuhalten und anschließend in derselben Gast-VM 208 neu zu starten. Diese Aktion könnte in einfacher Weise ausgeführt werden, indem eine geeignete Folge von Befehlen von dem Hypervisor 206 über den internen Kanal 226 zu der VM 208 gesendet wird.
-
Eine alternative Korrekturmaßnahme bestünde darin, eine Anwendung 212 anzuhalten und dann neu zu starten, damit sie auf einer anderen Gast-VM des Knotens 200 z. B. einer Gast-VM 210 ausgeführt wird. Als weitere Korrekturmaßnahme könnte eine Anwendung 212 angehalten und dann neu gestartet werden, damit sie auf einer Gast-VM ausgeführt wird, die sich in einem Knoten des Knoten-Clusters 100 befindet, der von dem Knoten 200 verschieden ist. Bei der Gast-VM könnte es sich entweder um die Gast-VM 208 oder eine andere Gast-VM handeln. Einem Fachmann ist klar, dass die hier verwendeten Maßnahmen des oben genannten Typs als „Ausfallsicherung” (failover) und „Ausführen einer Ausfallsicherung” bezeichnet werden.
-
Es ist klar, dass die obige Beschreibung der Funktionen und Operationen der Gast-VM 208, der Anwendung 212, der Verwaltungseinheit 216 und des internen Kanals 226 außerdem für die Gast-VM 210, die Anwendung 214, die Verwaltungseinheit 218 bzw. den internen Kanal 228 gelten.
-
Wenn eine Anwendung auf einer Gast-VM des in 2 gezeigten Typs ausgeführt wird, müssen Daten, die erzeugt werden und einer derartigen Aktivität zugehörig sind, verfolgt werden. Das ist erforderlich, um sicherzustellen, dass diese Daten in dem Fall zur Verfügung stehen, wenn wie oben beschrieben eine Ausfallsicherung (failover) in einem anderen Knoten oder in einer anderen Gast-VM desselben Knotens ausgeführt wird. Um das zu erreichen, ist eine Replikations-Software über alle Knoten des oben beschriebenen Knoten-Clusters 100 verteilt. Wie durch 2 gezeigt sind die Gast-VMs 208 und 210 mit E/A-Emulatoren 230 bzw. 232 ausgestattet. Jeder dieser Emulatoren ermöglicht, dass Daten durch seine entsprechende Gast-VM empfangen oder von dieser gesendet werden. Eine E/A-Einheit-Anforderungskomponente 234 ist dem Emulator 230 zugehörig und mit dem internen Kanal 226 verbunden. Die Komponente 234 spricht auf Befehle an, die über den internen Kanals 226 gesendet werden, um zu bewirken, dass Daten wahlweise zwischen der Gast-VM 208 und dem Dateisystem 222 der Datenverarbeitungsplattform 202 ausgetauscht werden. Eine ähnliche E/A-Einheiten-Anforderungskomponente 236 ist dem E/A-Emulator 232 zugehörig und mit dem internen Kanal 228 verbunden.
-
Wenn eine Anwendung 212 auf einer Gast-VM 208 ausgeführt wird, funktioniert eine Komponente wie z. B. die Komponente 234 als Replikations-Absender. Das heißt, sie bewirkt, dass eingehende Daten und andere Daten, die der ausgeführten Anwendung 212 zugehörig sind, repliziert und beispielsweise durch das Dateisystem 222 oder dergleichen gespeichert werden. Während dieser Zeit funktioniert eine Komponente wie z. B. die Komponente 236 der Gast-VM 210 als Replikations-Empfänger. Der Replikations-Empfänger ist so eingerichtet, dass er Daten, die durch den Replikations-Absender repliziert wurden, empfängt oder diese verfolgt. Wenn dann wie oben beschrieben ein Fehler auftritt, kann die Anwendung 212 auf der Gast-VM 208 angehalten und auf der Gast-VM 210 gestartet werden. Wenn das eintritt, wird ein Befehl von der Verwaltungseinheit 220 über den internen Kanal 228 zur Komponente 236 gesendet, wobei der Befehl die Komponente 236 anweist, die Funktion des Replikations-Absenders anstelle des Replikations-Empfängers auszuführen. Die Komponente 234 wird in ähnlicher Weise angewiesen, die Funktion des Replikations-Empfängers auszuführen. Daten, die durch den Replikations-Absender 236 repliziert wurden, können dann zur Speicherung geleitet werden. Alternativ werden im Fall des Enqueue-Replikationsdienstes (ENQREP) der SAP AG die replizierten Daten im Speicher gehalten. Wenn der SAP-Enqueue-Dienst (ENQ) endet und auf dem Gast des ENQREP neu gestartet wird, ruft er seine Daten durch einen Transfer von Speicher zu Speicher ab, der schneller als jeder Speicherzugriff ist.
-
Durch Bereitstellen der VM oder des internen Kanals in der oben beschriebenen Konfiguration von 2 wird bei Ausführungsformen der Erfindung für deren Benutzer ein weiterer wichtiger Vorteil bereitgestellt. Bei der HA-Cluster-Verwaltungseinheit 220 kann es sich insbesondere um eine Komponente eines Produkts zur Verwaltung eines Clusters mit hoher Verfügbarkeit handeln, der möglicherwiese recht komplex ist. Ein derartiges Produkt kann z. B. komplexe Verwaltungs-Skripts und Ressourcen-Konfigurationen enthalten. Bei der Ausführungsform von 2 sind jedoch alle derartigen Skripts und Konfigurationen in dem Hypervisor 206 enthalten wie durch die Komponente 238 dargestellt. Folglich müssen diejenigen, die die Ausführungsform von 2 verwenden, damit ihre Anwendungen auf Gast-VMs 208 und 210 oder dergleichen ausgeführt werden können, nicht alle Skripts und Ressourcen des Produkts zum Verwalten des Clusters kennenlernen oder mit diesen vertraut werden.
-
In 3 sind Schritte eines Verfahrens gezeigt, das eine Ausführungsform der Erfindung aufweist. Im Schritt 302 wird ein interner bidirektionaler Kanal zwischen einem Hypervisor einer Datenverarbeitungsplattform und jeder der mehreren Gast-VMs eingerichtet, wobei der Hypervisor und die Gast-VMs in einem Knoten eines Knoten-Clusters enthalten sind. Im Schritt 304 werden Nachrichten über den internen Kanal zwischen dem Hypervisor und einer der Gast-VMs gesendet, um eine Anwendung zu verwalten, die auf der Gast-VM ausgeführt wird. Der Schritt 306 beschreibt ein Überwachen von Nachrichten, die über den internen Kanal gesendet werden, um einen Fehler der Anwendung zu erkennen, die in der Gast-VM ausgeführt wird.
-
In Reaktion auf das Erkennen eines Fehlers wird eine Korrekturmaßnahme ergriffen, die Senden von Befehlen über den internen Kanal vom Hypervisor zu der Gast-VM beinhaltet, wobei die Befehle die Anwendung, die in der Gast-VM ausgeführt, anhalten und anschließend neu starten. Wenn gemäß dem Entscheidungsschritt 310 die Korrekturmaßnahme vom Schritt 308 erfolgreich ist, so dass der erkannte Fehler beseitigt wird, endet das Verfahren von 3. Andernfalls geht das Verfahren zu Schritt 312.
-
Im Schritt 312 wird eine von mehreren weiteren Maßnahmen ausgewählt. Jede von diesen enthält anfangs Anhalten der Anwendung, die auf der Gast-VM ausgeführt wird, was zweckmäßig dadurch erfolgt, dass ein Stopp-Befehl von dem Hypervisor über den internen Kanal zu der Gast-VM gesendet wird. Zu weiteren Maßnahmen gehören dann Ausführen der Anwendung in einer anderen Gast-VM desselben Knotens; Ausführen der Anwendung und der Gast-VM in einem anderen Knoten des Clusters; bzw. Ausführen der Anwendung auf einer anderen Gast-VM eines anderen Knotens. Nachdem eine dieser Maßnahmen ergriffen wurde, endet das Verfahren von 3.
-
4 ist ein Blockschaltplan, der ein Datenverarbeitungssystem gemäß einer veranschaulichenden Ausführungsform zeigt. Bei dem Datenverarbeitungssystem 400 handelt es sich beispielsweise um einen Computer, der verwendet werden kann, um eine oder mehrere Komponenten von Ausführungsformen der Erfindung umzusetzen, und in dem sich durch einen Computer nutzbarer Programmcode oder Befehle, die die betreffenden Prozesse umsetzen, für die veranschaulichenden Ausführungsformen befinden. Bei diesem veranschaulichenden Beispiel enthält das Datenverarbeitungssystem 400 eine Datenübertragungsstruktur 402, die einen Austausch von Daten zwischen einer Prozessoreinheit 404, einem Speicher 406, einer dauerhaften Speichereinheit 408, einer Datenübertragungseinheit 410, einer Eingabe/Ausgabe-(E/A-)Einheit 412 und einer Anzeige 414 bereitstellt.
-
Die Prozessoreinheit 404 dient zum Ausführen von Befehlen der Software, die möglicherweise in den Speicher 406 geladen wurde. Bei der Prozessoreinheit 404 kann es sich in Abhängigkeit von der bestimmten Umsetzung um eine Gruppe aus einem oder mehreren Prozessoren oder um einen Mehrprozessor-Kern handeln. Die Prozessoreinheit 404 kann des Weiteren unter Verwendung eines oder mehrerer heterogener Prozessorsysteme umgesetzt sein, bei denen ein Haupt-Prozessor mit sekundären Prozessoren auf einem einzigen Chip vorhanden ist. Als weiteres veranschaulichendes Beispiel kann es sich bei der Prozessoreinheit 404 um ein symmetrisches Mehrprozessorsystem handeln, das mehrere Prozessoren desselben Typs enthält.
-
Bei dem Speicher 406 und der dauerhaften Speichereinheit 408 handelt es sich um Beispiele der Speichereinheiten 416. Eine Speichereinheit ist jeder Teil der Hardware, der in der Lage ist, Informationen wie z. B. Daten, Programmcode in funktionsfähiger Form und/oder andere geeignete Informationen entweder vorübergehend und/oder dauerhaft zu speichern, ohne darauf beschränkt zu sein. Bei dem Speicher 406 kann es sich bei diesen Beispielen möglicherweise um einen Direktzugriffsspeicher oder jede andere geeignete flüchtige oder nichtflüchtige Speichereinheit handeln. Die dauerhafte Speichereinheit 408 kann in Abhängigkeit von der bestimmten Umsetzung zahlreiche Formen annehmen. Die dauerhafte Speichereinheit 408 kann z. B. eine oder mehrere Komponenten oder Einheiten enthalten. Bei der dauerhaften Speichereinheit 408 kann es sich beispielsweise um ein Festplattenlaufwerk, einen Flash-Speicher, eine wiederbeschreibbare optische Platte, ein wiederbeschreibbares Magnetband oder eine bestimmte Kombination der Vorhergehenden handeln. Bei den Medien, die von der dauerhaften Speichereinheit 408 verwendet werden, kann es sich um Wechselmedien handeln. Für die dauerhafte Speichereinheit 408 kann beispielsweise ein Wechsel-Festplattenlaufwerk verwendet werden.
-
Die Datenübertragungseinheit 410 sorgt bei diesen Beispielen für den Austausch von Daten mit anderen Datenverarbeitungssystemen oder -einheiten. Bei diesen Beispielen handelt es sich bei der Datenübertragungseinheit 410 um eine Netzwerk-Schnittstellenkarte. Die Datenübertragungseinheit 410 kann Datenübertragungen durch die Verwendung von physischen und/oder drahtlosen Datenübertragungsverbindungen bereitstellen.
-
Die Eingabe/Ausgabe-Einheit 412 ermöglicht ein Eingeben und Ausgeben von Daten in Bezug auf andere Einheiten, die möglicherweise mit dem Datenverarbeitungssystem 400 verbunden sind. Die Eingabe/Ausgabe-Einheit 412 kann z. B. eine Verbindung zur Benutzereingabe über eine Tastatur, eine Maus und/oder ein andere geeignete Eingabeeinheit bereitstellen. Die Eingabe/Ausgabe-Einheit 412 kann des Weiteren Ausgaben zu einem Drucker senden. Die Anzeige 414 stellt einen Mechanismus bereit, um einem Benutzer Informationen anzuzeigen.
-
Befehle für das Betriebssystem, Anwendungen und/oder Programme können sich in Speichereinheiten 416 befinden, die über die Datenübertragungsstruktur 402 mit der Prozessoreinheit 404 Daten austauschen können. Bei diesen veranschaulichenden Beispielen befinden sich die Befehle in funktionsfähiger Form in der dauerhaften Speichereinheit 408. Diese Befehle können in den Speicher 406 zum Ausführen durch die Prozessoreinheit 404 geladen werden. Die Prozesse der verschiedenen Ausführungsformen können durch die Prozessoreinheit 404 unter Verwendung von mittels eines Computers umgesetzten Befehlen ausgeführt werden, die sich in einem Speicher wie z. B. dem Speicher 406 befinden.
-
Diese Befehle werden als Programmcode, durch einen Computer nutzbarer Programmcode oder computerlesbarer Programmcode bezeichnet, der durch einen Prozessor in der Prozessoreinheit 404 gelesen und ausgeführt werden kann. Der Programmcode kann in den verschiedenen Ausführungsformen in verschiedenen physischen oder computerlesbaren Speichermedien wie z. B. dem Speicher 406 oder der Speichereinheit 408 verkörpert sein.
-
Programmcode 418 befindet sich in einer funktionsfähigen Form auf computerlesbaren Medien 420, bei denen es sich wahlweise um Wechselmedien handelt, und kann zum Ausführen durch die Prozessoreinheit 404 in das Datenverarbeitungssystem 400 geladen oder zu diesem übertragen werden. Programmcode 418 und computerlesbare Medien 420 bilden ein Computerprogrammprodukt 422. Bei einem Beispiel kann es sich bei computerlesbaren Medien 420 um computerlesbare Speichermedien 424 oder computerlesbare Signalmedien 426 handeln. Zu computerlesbaren Speichermedien 424 können z. B. eine optische oder magnetische Platte gehören, die in ein Laufwerk oder eine andere Einheit eingesetzt oder darin angeordnet werden kann, das bzw. die Teil einer dauerhaften Speichereinheit 408 ist, zum Übertragen zu einer Speichereinheit wie z. B. ein Festplattenlaufwerk, das Teil der dauerhaften Speichereinheit 408 ist. Computerlesbare Speichermedien 424 können außerdem die Form einer dauerhaften Speichereinheit annehmen wie z. B. ein Festplattenlaufwerk, ein USB-Laufwerk oder ein Flash-Speicher, die mit dem Datenverarbeitungssystem 400 verbunden ist. In einigen Fällen können computerlesbare Speichermedien 424 möglicherweise nicht aus dem Datenverarbeitungssystem 400 entnommen werden.
-
Alternativ kann Programmcode 418 unter Verwendung von computerlesbaren Signalmedien 426 zum Datenverarbeitungssystem 400 übertragen werden. Bei computerlesbaren Signalmedien 426 kann es sich beispielsweise um ein sich ausbreitendes Datensignal handeln, das Programmcode 418 enthält. Bei computerlesbaren Signalmedien 426 kann es sich z. B. um ein elektromagnetisches Signal, ein optisches Signal und/oder jeden anderen geeigneten Signaltyp handeln. Diese Signale können über Datenübertragungsverbindungen wie z. B. drahtlose Datenübertragungsverbindungen, ein Lichtwellenleiterkabel, ein Koaxialkabel, eine Leitung und/oder jeden anderen geeigneten Typ der Datenübertragungsverbindung übertragen werden. Mit anderen Worten, die Datenübertragungsverbindung und/oder die Verbindung bei den veranschaulichenden Beispielen können physisch oder drahtlos sein. Die computerlesbaren Medien können außerdem die Form von nichtmateriellen Medien annehmen wie z. B. Datenübertragungsverbindungen oder Drahtlos-Übertragungen, die Programmcode enthalten.
-
Bei einigen veranschaulichenden Ausführungsformen kann Programmcode 418 über ein Netzwerk zur dauerhaften Speichereinheit 408 von einer anderen Einheit oder einem anderen Datenverarbeitungssystem mittels computerlesbaren Signalmedien 426 für eine Verwendung im Datenverarbeitungssystem 400 heruntergeladen werden. Programmcode, der in computerlesbaren Speichermedien in einem Server-Datenverarbeitungssystem gespeichert ist, kann beispielsweise über ein Netzwerk von dem Server zum Datenverarbeitungssystem 400 heruntergeladen werden. Bei dem Datenverarbeitungssystem, das Programmcode 418 bereitstellt, kann es sich um einen Server-Computer, einen Client-Computer oder eine andere Einheit handeln, die in der Lage ist, Programmcode 418 zu speichern oder zu übertragen.
-
Die verschiedenen Komponenten, die für das Datenverarbeitungssystem 400 dargestellt wurden, sollen keine physischen und architektonischen Einschränkungen an der Art und Weise darstellen, wie die verschiedenen Ausführungsformen umgesetzt werden können. Die verschiedenen veranschaulichenden Ausführungsformen können in einem Datenverarbeitungssystem umgesetzt werden, das Komponenten zusätzlich zu und/oder anstelle von jenen Komponenten enthält, die für das Datenverarbeitungssystem 400 dargestellt wurden. Weitere Komponenten, die in 4 gezeigt sind, können von den gezeigten veranschaulichenden Beispielen abweichen. Die verschiedenen Ausführungsformen können unter Verwendung von jeder Hardware-Einheit oder jedem Hardware-System umgesetzt werden, die in der Lage sind, Programmcode auszuführen. Das Datenverarbeitungssystem 400 kann beispielsweise organische Komponenten enthalten, die mit anorganischen Komponenten integriert sind, und/oder kann ausschließlich organische Komponenten mit Ausnahme eines menschlichen Wesens aufweisen. Eine Speichereinheit kann z. B. aus organischen Halbleitern bestehen.
-
Weiterhin beispielhaft kann es sich bei einer Speichereinheit im Datenverarbeitungssystem 400 um jede Hardware-Vorrichtung handeln, die Daten speichern kann. Der Speicher 406, die dauerhafte Speichereinheit 408 und die computerlesbaren Medien 420 sind Beispiele für Speichereinheiten in einer materiellen Form.
-
Bei einem weiteren Beispiel kann ein Bussystem zum Umsetzen der Datenübertragungsstruktur 402 verwendet werden und kann einen oder mehrere Busse aufweisen wie z. B. einen Systembus oder einen Eingabe/Ausgabe-Bus. Das Bussystem kann natürlich unter Verwendung eines beliebigen geeigneten Architekturtyps umgesetzt werden, der eine Übertragung von Daten zwischen unterschiedlichen Komponenten oder Einheiten ermöglicht, die mit dem Systembus verbunden sind. Außerdem kann eine Datenübertragungseinheit eine oder mehrere Einheiten enthalten, die zum Übertragen und Empfangen von Daten verwendet werden wie z. B. ein Modem oder ein Netzwerkadapter. Des Weiteren kann es sich bei einem Speicher z. B. um den Speicher 406 oder einen Cache-Speicher handeln, der in einem Schnittstellen- und Speichersteuereinheiten-Hub vorkommt, der in der Datenübertragungsstruktur 402 möglicherweise vorhanden ist.
-
Die Beschreibungen der verschiedenen Ausführungsformen der vorliegenden Erfindung wurden für Zwecke der Erläuterung dargestellt, es ist jedoch nicht vorgesehen, dass sie erschöpfend sind oder auf die beschriebenen Ausführungsformen beschränken. Viele Modifikationen und Variationen werden für einen Fachmann ersichtlich sein, ohne vom Umfang und Erfindungsgedanken der beschriebenen Ausführungsform abzuweichen. Die hier verwendete Terminologie wurde ausgewählt, um die Grundgedanken der Ausführungsform, die praktische Anwendung oder technische Verbesserungen gegenüber vorhandenen Technologien am besten zu erläutern oder um andere Fachleute zu befähigen, die hier beschriebenen Ausführungsformen zu verstehen.
-
Der Ablaufplan und die Blockschaltbilder in den Figuren veranschaulichen die Architektur, Funktionalität und Operation von möglichen Umsetzungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedener Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in dem Ablaufplan oder in Blockschaltbildern ein Modul, Segment oder Abschnitt von Code repräsentieren, der einen oder mehrere ausführbare Befehle zum Umsetzen der spezifizierten logischen Funktion(en) aufweist. Es sollte außerdem angemerkt werden, dass bei einigen alternativen Umsetzungen die in dem Block angegebenen Funktionen möglicherweise nicht in der in den Figuren angegebenen Reihenfolge auftreten. Zum Beispiel können zwei Blöcke, die nacheinander gezeigt sind, tatsächlich im Wesentlichen gleichzeitig ausgeführt werden oder die Blöcke können gelegentlich in Abhängigkeit von der beteiligten Funktionalität in der umgekehrten Reihenfolge ausgeführt werden. Es wird außerdem angemerkt, dass jeder Block in den Blockschaltbildern und/oder Ablaufplan-Darstellungen und Kombinationen von Blöcken in den Blockschaltbildern und/oder der Ablaufplan-Darstellung durch Systeme, die auf spezieller Hardware beruhen, die die spezifizierten Funktionen oder Wirkungen ausführen, oder Kombinationen aus spezieller Hardware und Computerbefehlen umgesetzt werden können.