Vorheriges Thema: Virtuelle RessourcenNächstes Thema: Appliance-Struktur


Virtuelle Appliances

Sehen Sie sich das Video an

Virtuelle Appliances sind das Grundkonzept im Anwendungsmodell.

Eine virtuelle Appliance ist ein instantiierbares Objekt, das aus einer Begrenzung und einem Inneren besteht. Die Begrenzung umfasst alle erforderlichen Komponenten zum Konfigurieren der Appliance, Binden an Daten in externen Speicher-Volumes und Verbinden mit anderen Appliances. Das Innere besteht aus einem virtuellen Computer und einem Start-Volume, das das Betriebssystem, die Konfigurationsdateien und die Anwendungs-Software enthält, die in der Appliance ausgeführt werden.

Anatomie einer typischen virtuellen Appliance

Die Abbildung oben zeigt weitere Details des Aufbaus einer typischen virtuellen Appliance. Die Begrenzung der Appliance besteht aus den folgenden Elementen:

Das Innere der Appliance besteht aus einem virtuellen Computer und einem Start-Volume. Das Start-Volume wird mit einer geeigneten Version von Linux und allen anderen Software-Paketen und Skripten konfiguriert, die für den Betrieb der Appliance benötigt werden. Der virtuelle Computer wird konfiguriert, um vom Start-Volume aus zu starten, und hat mehrere virtuelle Netzwerkkarten.

Die eth0 vNIC wird immer als eine Standardschnittstelle eingerichtet. Dadurch haben Sie die Möglichkeit, sich bei der Appliance anzumelden, Software zu installieren und Fehler zu beheben, wie Sie es bei jedem anderen Remote-Server tun würden.

Außerdem erstellt CA AppLogic® eine getrennte vNIC für jedes Terminal (Eingabe oder Ausgabe), das auf der Begrenzung der Appliance definiert ist. Es ist zwar möglich, den gesamten Datenverkehr in die und aus der Appliance durch eine einzelne vNIC zu leiten. Durch eine eigene vNIC pro Terminal wird es CA AppLogic® aber erleichtert, den Netzwerkverkehr zu formen und zu überwachen, Verbindungsprotokolle zu erzwingen und die Sicherheit zu verbessern.

Die Begrenzung enthält eine Reihe von appliance-spezifischen Eigenschaften oder Parametern, die Sie verwenden können, um die Appliance zu konfigurieren. Wenn Sie die Appliance starten, erstellt CA AppLogic® automatisch eine Umgebungsvariable für jede Eigenschaft und initialisiert sie mit dem Wert, den Sie dieser Eigenschaft zugewiesen haben. Außerdem verbreitet CA AppLogic® die Eigenschaftswerte in eine oder mehrere der Konfigurationsdateien auf dem Start-Volume. Dadurch können Eigenschaften leicht als primärer Mechanismus zum Konfigurieren von Appliances verwendet werden.

Die Begrenzung kann auch einen oder mehrere Volume-Platzhalter enthalten. Ein Platzhalter ist ein vordefinierter Steckplatz für ein Speicher-Volume. Sie füllen den Steckplatz, indem Sie die Appliance mit dem Namen eines Volumes konfigurieren, das bereitgestellt werden soll. Dadurch erhalten Sie das virtuelle Äquivalent zu einem Wechseldatenträger. Viele Appliances verwenden diesen Mechanismus, um auf Inhalt wie HTML-Seiten, benutzerdefinierten Code oder Datenbanken zuzugreifen.

CA AppLogic® weist auch jeder Appliance ein Hardware-Ressourcenbudget zu. Dazu gehören drei Bereiche zum Definieren der minimalen und größtmöglichen CPU-Verwendung, Speicherverwendung und Bandbreitenverwendung für die Appliance.

Schließlich ordnet CA AppLogic® jeder Appliance eine Reihe von Ausführungsattributen zu, die beeinflussen, wie das System die Appliance plant und ausführt. Wahrscheinlich werden Sie zwei dieser Attribute häufig verwenden - den Starteihenfolgenwert und die Migrierbarkeitsmarkierung. Über die Starteihenfolge können Sie die Reihenfolge, in der die Appliances der gleichen Anwendung starten, angeben und ändern. Dabei werden jegliche Abhängigkeiten unter ihnen berücksichtigt. Die Migrierbarkeitsmarkierung ist standardmäßig "true" und zeigt CA AppLogic® an, dass diese Appliance problemlos nach Ermessen des Planers von einem Server zum anderen migriert werden kann. Wenn Sie diese Markierung auf "false" festlegen, können Sie die Appliance auf einem bestimmten Server beibehalten.

Klassen und Instanzen

CA AppLogic® betrachtet virtuelle Appliances als erstklassige Komponentenobjekte. Wenn Sie einen neuen Appliance-Typ erstellen, erstellen Sie tatsächlich eine Appliance-Klasse und weisen CA AppLogic® an, wie solche Appliances (benannte Instanzen der Klasse) auf Anfrage hergestellt werden sollen. Weil Appliance-Klassen Vorlagen für die Erstellung von Instanzen sind, können sie nicht ausgeführt werden. Eine tatsächlich ausgeführte Anwendung enthält nur Instanzen, die so konfiguriert und verbunden sind, dass sie miteinander zusammenarbeiten.

Der Prozess, mit dem CA AppLogic® Klassen instanziiert

In der Abbildung oben wird gezeigt, wie CA AppLogic® Klassen instanziiert. Jede Klasse hat einen zugeordneten Klassen-Deskriptor, der definiert:

Die vollständige Definition einer Klasse besteht in ihrem Klassen-Deskriptor und dem gesamten Satz der Klassen-Volumes, die im Deskriptor identifiziert sind, einschließlich ihres Inhalts - Betriebssystem, Anwendungs-Software und Skripte, die zusammen das Verhalten der Appliance definieren.

Reguläre Appliance-Klassen können eine beliebige Anzahl von Instanzen erzeugen. Singletons sind Klassen, die auf jeweils eine einzelne Instanz beschränkt sind. Singletons sind nützlich, wenn Sie eine Klasse bearbeiten oder Fehler beheben möchten. Weil nur Instanzen auf dem System ausgeführt werden können, benötigen Sie immer eine Instanz, um die Klasse zu testen und Fehler zu beheben. Singletons vereinfachen diesen Prozess. Sie ermöglichen Ihnen, die Instanz zu testen und Fehler zu beheben, und dann eine neue Klasse automatisch von der funktionierenden Instanz zu generieren.

Die Klassendefinition ist nicht hinreichend, um eine brauchbare laufende Instanz zu erstellen. Hierfür benötigt CA AppLogic® auch die Instanzeneinstellungen - ein Satz von Parametern, die definieren, wie die Instanz verbunden, konfiguriert und ausgeführt werden soll. Die Instanzeneinstellungen bestehen aus bestimmten Werten für Hardware-Ressourcen, Ausführungsattributen, Terminal-Verbindungen, Appliance-Eigenschaften und Namen externer Volumes.

Um eine Instanz zu erstellen, interpretiert CA AppLogic® den Klassen-Deskriptor und erstellt einen virtuellen Computer mit einem virtuellen Netzwerkadapter für jedes Terminal und einem virtuellen Blockgerät für jedes Volume. Es erstellt dann eine Instanz einer virtuellen Netzwerkschnittstelle für jeden der Adapter und bindet sie an den entsprechenden Adapter.

Als Nächstens erstellt das System eine virtuelle Volume-Instanz für jedes Volume, das im Deskriptor angegeben ist, indem das entsprechende Klassen-Volume repliziert und an das entsprechende Blockgerät gebunden wird.

Die neu erstellte Instanz wird mithilfe der Eigenschaftswerte konfiguriert, üblicherweise indem die Konfigurationsdateien geändert werden, die in der Klassendefinition identifiziert sind und sich auf einem oder mehreren der instanziierten Volumes befinden. Weil jedes Instanz-Volume eine Kopie des jeweiligen Klassen-Volumes ist, sind diese Änderungen privat für die Instanz.

CA AppLogic® startet dann die VM, wodurch die verschiedenen Dienste gestartet werden, die in der Appliance konfiguriert sind. Es verwendet die Hardware-Ressourcen und Ausführungsattribute, um das Starten, die Platzierung, die Planung und die Migration der neu erstellten Instanz zu steuern.

CA AppLogic® trennt die Konfigurations- und Verbindungsdaten, die für jede Appliance-Instanz spezifisch sind, von den gemeinsamen Informationen für alle Appliances einer bestimmten Klasse, einschließlich Betriebssystemcodes, Anwendungs-Engine-Codes und den Konfigurationsparametern, die für deren Zusammenarbeit erforderlich sind.

Eigenschaften

Im Gegensatz zu Ausführungsattributen, die auf jede beliebige Appliance angewandt werden können, können Sie in spezifische Konfigurationsparameter für jede Appliance-Klasse definieren. CA AppLogic® stellt einen Eigenschaftsmechanismus zum Definieren und Bearbeiten einer Reihe solcher Konfigurationsparameter über eine universelle Eigenschaftsschnittstelle bereit.

Um den Eigenschaftsmechanismus von zu nutzen, definieren Sie die Eigenschaften durch das Angeben ihrer Namen, Datentypen und Standardwerte als Teil der Klassendefinition. Sie können auch eine oder mehrere der Konfigurationsdateien auf den Volumes der Appliance als Ziele der Eigenschaftswerte auswählen.

In einer Appliance-Instanz können Sie auf einen Eigenschaftswert auf eine von zwei Weisen zugreifen:

Für jede Eigenschaft auf der Begrenzung der Appliance definiert CA AppLogic® eine nach der Eigenschaft benannte Umgebungsvariable. Zur Startzeit wird der Wert der Variable zu dem der Eigenschaft zugewiesenen Wert initialisiert. Dadurch können die Daemons, Hilfsprogramme und Skripte, die innerhalb der Appliance ausgeführt werden, leicht auf die Eigenschaften zugreifen.

Hinweis: Eine auf einer Appliance definierte Eigenschaft kann verwendet werden, um Werte von einem oder mehreren Parametern festzulegen, die sich in textbasierten Konfigurationsdateien befinden. Um eine Eigenschaft der Appliance einem Parameter in einer Konfigurationsdatei zuzuordnen, müssen Sie den Wert in der Datei mit einem besonderen gekennzeichneten Kommentar markieren und den Namen der Eigenschaft identifizieren, die zugeordnet werden soll. Wenn die Eigenschaft festgelegt wird, ersetzt CA AppLogic® den in der Datei gefundenen Wert mit dem Wert, der der Eigenschaft zugewiesen ist.

Terminals

CA AppLogic®-Terminals sind Verbindungspunkte für logische Interaktionen zwischen Appliances. Die Terminal-Abstraktion ist so ausgelegt, dass vorhandene Software-Pakete in virtuellen Appliances über Terminals kommunizieren können, ohne Änderungen zu benötigen.

Ein Terminal kann eine Eingabe oder eine Ausgabe sein. Eingaben sind Terminals, die Netzwerkverbindungen annehmen. Ausgaben sind Terminals für ausgehende Netzwerkverbindungen. In Bezug auf Anfragen- und Datenströme sind beide Typen von Terminals bidirektional. Ein Terminal besteht aus einem Netzwerknamen, einem virtuellen Netzwerkadapter und einer virtuellen Netzwerkschnittstelle.

Wenn eine Ausgabe einer Appliance mit einer Eingabe einer anderen Appliance verbunden wird, erstellt CA AppLogic® eine virtuelle Leitung zwischen ihren jeweiligen virtuellen Netzwerkschnittstellen und weist virtuelle IP-Adressen zu beiden Enden der Verbindung zu.

Hinweis: Virtuelle IP-Adressen sind nur wegen der in der VM ausführenden Software vorhanden. Sie sind keine tatsächlichen umleitbaren Netzadressen. Der eigentliche Datenverkehr für die Verbindung erfolgt über die virtuelle Leitung.

Der Software, die in einer virtuellen Appliance ausgeführt wird, werden Terminals als benannte Netzwerkhosts angezeigt. Eine Eingabe definiert einen Hostnamen, auf dem ein Server wie Apache eingehende Verbindungsanfragen abhören kann. Wenn keine Verbindung hergestellt wird, ist eine Ausgabe im virtuellen Computer als ein "nicht erreichbarer Host" sichtbar. Bei Verbindung mit einer Eingabe einer anderen Appliance fungiert die gleiche Ausgabe als ein zulässiger Netzwerkhost, zu dem Verbindungen festgelegt werden. Wenn Sie sich bei der Appliance anmelden und eine verbundene Ausgabe pingen, werden Sie sehen, dass der Name der Ausgabe zur IP-Adresse der Eingabe der anderen Appliance aufgelöst wird, mit der die Ausgabe verbunden ist.

Hinweis: Terminals beseitigen Referenzen zu anderen Appliances und Servern.

Der in einer Appliance ausgeführte Code wird ein "Netzwerk" sehen, das nur aus wenigen Hosts besteht, einen für jedes auf der Begrenzung der Appliance definierte Terminal. Dadurch können unterschiedliche Instanzen mit der gleichen Appliance in unterschiedlichen Strukturen verbunden werden, ohne die Konfiguration der Appliance zu ändern.

Wenn Sie z. B. eine Appliance erstellen, die Zugriff auf einen Datenbankserver benötigt, können Sie eine Ausgabe für den Zugriff auf diese Datenbank definieren und sie DBASE nennen. Beim Konfigurieren des JDBC-Treibers in Ihrer Appliance legen Sie einfach den Namen der Ausgabe "DBASE" als den Hostname des Zieldatenbankservers fest. Zur Laufzeit kann jede Instanz Ihrer Appliance mit einem anderen Datenbankserver verbunden werden, ohne dass Sie den Zielhostnamen für den JDBC-Treiber ändern müssen - der gleiche Hostname "DBASE" löst automatisch zur richtigen IP-Adresse des Datenbankservers auf, mit dem die betreffende Instanz verbunden ist.

Für jedes Terminal können Sie angeben, welche Protokolle darauf zulässig sind. Dadurch wird für das Terminal eine virtuelle Firewall erstellt, die nur die zulässigen Protokolle ein- oder hinauslässt. Als weiterer Pluspunkt trägt CA AppLogic® beim Einrichten der Anwendung dazu bei, dass nur Terminals mit passenden Protokollen miteinander verbunden werden. Wenn also die Software in Ihrer Appliance für die Zusammenarbeit mit MySQL über die DBASE-Ausgabe konfiguriert ist, können Sie das DBASE-Protokoll als MYSQL deklarieren, um zu verhindern, dass es versehentlich mit einem Oracle-Server verbunden wird.

Hinweis: Sie können jedes beliebige Terminal als obligatorisch festlegen und in CA AppLogic® angeben, dass Ihre Appliance ohne die Verbindung mit dieser Art externem Dienst nicht funktionieren kann. CA AppLogic® verweigert den Start einer Anwendung, wenn ein obligatorisches Terminal unverbunden gelassen wird. Sie erhalten eine Meldung darüber, welches Terminal Sie nicht verbunden haben.

Volumes

Jede Appliance benötigt mindestens ein Speicher-Volumen - dasjenige, von dem aus es startet. Diese Volumes werden als Teil der Klassendefinition der Appliance bereitgestellt und instanziiert, sooft eine Instanz der Appliance erstellt wird. Es ist oft nützlich, Ihre Appliances mit Platzhaltern für zusätzliche Volumes zu definieren. Wenn Sie einen Platzhalter definieren, wird er zu einem "Steckplatz", an dem Sie später ein externes Volume anschließen können.

Die Volumes, die Sie an einen Platzhaltersteckplatz "anschließen" können, werden als Anwendungs-Volumes bezeichnet. Sie erstellen ein Anwendungs-Volume ausdrücklich, indem Sie den entsprechenden Befehl ausführen und einen Namen, eine Speichergröße und den Typ des gewünschten Dateisystems angeben. Sie können Anwendungs-Volumes im CA AppLogic®-Controller laden, um Daten auf sie oder von ihnen zu übertragen.

Zum Beispiel ist es nützlich, eine Webserver-Appliance mit zwei Volumes zu definieren - einem Start-Volume und einem Inhalts-Volume. Das Start-Volume enthält die Software und Konfigurationsdateien, die zum Starten von Linux und Ausführen eines Apache-Webservers erforderlich sind. Dieses Volume wird Bestandteil der Klassendefinition und wird für jede Instanz der Appliance instanziiert.

Das Inhalts-Volume ist allerdings ein Platzhalter für ein Anwendungs-Volume, das die HTML-Dateien, statische Images und Skripte für eine bestimmte Website enthält. Wenn Sie eine Instanz der Webserver-Appliance mit einer Referenz zum Inhalts-Volume konfigurieren, wird eine Instanz eines Apache-Webservers erzeugt, der diese bestimmte Website bedient. Die Seiten und anderer Inhalt für diesen Webserver werden auf dem Inhalts-Volume platziert.

Tipp: Sie können ein einzelnes Anwendungs-Volume verwenden, um Inhalt für mehrere Webserver bereitzustellen. Eine Vorgehensweise besteht im Hinzufügen einer Eigenschaft, die das Basisverzeichnis auf dem Volume angibt, von dem die diese Appliance auf den Inhalt zugreifen kann. So können mehrere Webserver leicht mit dem gleichen Inhalts-Volume konfiguriert werden, während jede Instanz so eingerichtet wird, dass Inhalt von einem unterschiedlichen Verzeichnis bedient wird.

Das gleiche Verfahren kann verwendet werden, um einen generischen J2EE-Server mit einem Volume (und enthaltenen Basispfad) zu konfigurieren, der die EJB-Pakete für eine bestimmte Anwendungsfunktion enthält, oder einen generischen Datenbankserver, der mit einem Volume und Pfad konfiguriert ist und eine bestimmte Datenbank enthält.

Durch diese Kombination von Anwendungs-Volume plus Verzeichnispfadeigenschaft wird es möglich, die Benutzeroberfläche, statischen Inhalt, Code und Daten der Anwendung auf einem einzigen Volume zu kombinieren was die Bereitstellung, Änderung und Wartung vereinfacht.