Hinweis:
- Dieses Tutorial erfordert Zugriff auf Oracle Cloud. Informationen zum Registrieren eines kostenlosen Accounts finden Sie unter Erste Schritte mit Oracle Cloud Infrastructure Free Tier.
- Er verwendet Beispielwerte für Oracle Cloud Infrastructure-Zugangsdaten, Mandanten und Compartments. Ersetzen Sie diese Werte beim Durchführen Ihrer Übung durch spezifische Werte für Ihre Cloud-Umgebung.
Java-Anwendungen auf Ampere A1 auf Oracle Cloud Infrastructure bereitstellen
Erfahren Sie, wie Sie Java-Anwendungen als Container auf der Ampere-A1-Compute-Plattform in Oracle Cloud Infrastructure (OCI) erstellen und bereitstellen. Sie stellen eine Todo-Anwendung mit einer Datenbank als Container bereit, die auf der Ampere A1 Compute-Plattform ausgeführt werden. Darüber hinaus verwenden Sie die neuen Containertools, wie Podman, die in Oracle Linux 8.0 verfügbar sind.
Einführung
Ziele
In diesem Tutorial führen Sie die folgenden Aktionen aus:
- Erstellen Sie eine Ampere A1 Compute-Instanz.
- Erstellen Sie eine Java EE-Anwendung, die Todo-Hinweise verwaltet.
- Stellen Sie die Anwendung für Tomcat 9 bereit.
- Stellen Sie eine Verbindung zwischen der Anwendung und einer Datenbank her, und verwalten Sie das Deployment als Pod.
- Anwendung ausführen und testen
- Bereinigen Sie die Deployments.
Voraussetzungen
- Ein Cloud-Account für Oracle Free Tier (Testversion), kostenpflichtig oder LiveLabs.
- Vertrautheit mit der OCI-Konsole
- Networking - Überblick
- Vertrautheit mit Compartments
- Grundlegende konzeptionelle Kenntnisse in Containern und Podman
- Führen Sie SSH-Schlüssel praktisch aus. Wenn Sie über keine Schlüssel verfügen, generieren Sie SSH-Schlüssel.
Umgebung einrichten
Initiieren Sie zunächst die Oracle-Cloud-Umgebung, mit der Sie Ihre Java EE-Anwendung erstellen und bereitstellen können. Diese Umgebung wird in einem Cloud-Compartment enthalten sein, und die Kommunikation im Compartment erfolgt über ein virtuelles Cloud-Netzwerk (VCN). Compartment und VCN isolieren und sichern die Gesamtumgebung. Sie stellen eine Ampere A1 Compute-Instanz bereit, um eine Java EE-Anwendung mit den Tomcat 9.0- und MySQL-Servercontainern zu hosten.
Basisinfrastruktursetup
-
Öffnen Sie das Navigationsmenü. Gehen Sie unter "Governance und Administration" zu Identität, und klicken Sie auf Compartments. In diesem Bildschirm wird eine Liste der Compartments angezeigt, und klicken Sie auf Compartment erstellen.
-
Geben Sie Folgendes ein:
- Name: Geben Sie "AppDev" ein.
- Beschreibung: Geben Sie eine Beschreibung ein (erforderlich). Beispiel: "AppDev compartment für das Tutorial für die ersten Schritte". Geben Sie dabei keine vertraulichen Informationen ein.
- Übergeordnetes Compartment: Wählen Sie das Compartment aus, in dem dieses Compartment gespeichert werden soll. Wird standardmäßig auf das Root-Compartment (oder den Mandanten) gesetzt.
- Klicken Sie auf Compartment erstellen.
- Das Compartment wird in der Liste angezeigt.
Ampere A1 Compute-Instanz erstellen
-
Um eine Ampere-A1-Compute-Instanz zu erstellen, verwenden Sie das Navigationsmenü in der oberen linken Ecke der Konsole, und gehen Sie zu Compute > Instanzen.
-
Öffnen Sie den Ablauf zum Erstellen der Instanz.
- Stellen Sie sicher, dass Sie sich im Compartment AppDev befinden.
- Klicken Sie auf Instanz erstellen.
-
Auf der Seite "Instanz erstellen" erstellen Sie die neue Instanz zusammen mit den neuen Netzwerkressourcen, wie virtuelle Cloud-Netzwerke (VCN), Internetgateway (IG) und mehr.
- Benennen Sie die Instanz JavaApp.
- Bildauswahl aktualisieren, um Oracle Linux 8 oder höher zu verwenden
- Klicken Sie auf die Schaltfläche Ausprägung ändern, um die verfügbaren Compute-Ausprägungen anzuzeigen.
-
Konfigurieren Sie das Image für die Instanz.
- Klicken Sie auf die Schaltfläche Image ändern, um verfügbare BS-Images anzuzeigen.
- Wählen Sie Oracle Linux 8 oder höher.
-
Konfigurieren Sie die Ressourcen für Ihre Instanz.
- Wählen Sie den auf Ampere Arm basierenden Prozessor in der Wahl für Shape Series.
- Wählen Sie die Ausprägung
VM.Standard.A1.Flex
aus der Liste der Ausprägungen mit Ampere Arm-basierten Prozessoren aus. Ampere A1-Ausprägungen sind flexibel, und Sie können die Anzahl der Cores und den Arbeitsspeicher ändern. Wählen Sie 1 Core- und 6 GB Arbeitsspeicher für die VM.
-
Wählen Sie Ihre Netzwerkoptionen aus. Erstellen Sie ein neues VCN und Subnetz für das nächste Cloud-Deployment. Stellen Sie sicher, dass Sie eine öffentliche IP-Adresse für Ihre Instanz zuweisen.
-
Generieren Sie das SSH-Schlüsselpaar, und laden Sie es herunter. Dieser Schritt ist optional, wird aber für spätere Wartungs- und Upgrades unbedingt empfohlen. Sie können Ihren Public Key auch verwenden, wenn Sie bereits ein Schlüsselpaar verwenden möchten. Wenn Sie wissen möchten, wie SSH-Schlüssel generiert werden sollen, befolgen Sie die Anweisungen im Tutorial "SSH-Schlüssel generieren".
-
Klicken Sie auf Erstellen, um die Netzwerkressourcen zu erstellen und die Compute-Instanz zu starten.
Beschreibung der Illustrationsstartinstanz
Anwendungsports für Benutzer bereitstellen
Damit Anwendungen über das Internet zugänglich sind, müssen Sie die Ports öffnen, die unsere Anwendung verwenden wird. In diesem Abschnitt konfigurieren Sie Sicherheitslisten in Ihrem Cloud-Netzwerk und Firewallregeln in Ihrer Compute-Instanz, damit Ihre Anwendungen Traffic senden und empfangen können.
Virtuelles Cloud-Netzwerk (VCN) konfigurieren
Eine Sicherheitsliste dient als virtuelle Firewall für eine Instanz. Mithilfe von Ingress- und Egress-Regeln wird angegeben, welche Traffictypen gesendet und empfangen werden sollen. Sicherheitslisten, wie auf Subnetzebene konfiguriert, wodurch die Sicherheitsregeln auf alle Netzwerkelemente in diesem Subnetz angewendet werden. Im Netzwerk ist eine Standardsicherheitsliste enthalten, die ein anfängliches Regelset enthält. Mit der Standardsicherheitsliste können Sie eine SSH-Verbindung zur Instanz herstellen, und Ihre Instanz kann ausgehende Netzwerkaufrufe an jedes Ziel ausführen.
-
Navigieren Sie auf der Seite mit den Instanzdetails für die Instanz, die Sie erstellt haben. Compute > Instanzen > Klicken Sie auf die von Ihnen erstellte Instanz
-
Navigieren Sie zu dem Subnetz, dem Ihre Instanz zugeordnet ist, indem Sie auf das Subnetz
Beschreibung der Abbildung, Subnetz auswählen klicken
-
Klicken Sie auf der Seite "Subnetz" auf die Standardsicherheitsliste, um Details anzuzeigen und zu konfigurieren.
-
Klicken Sie auf "Ingress-Regel hinzufügen", um eine neue Regel hinzuzufügen, die eingehenden Traffic zulässt, der mit den Regeln übereinstimmt.
-
Ingress-Regel hinzufügen, um eingehenden Traffic auf Port 8080 zuzulassen
- Setzen Sie das Quell-CIDR auf
0.0.0.0/0
. Dies ermöglicht eingehenden Traffic von allen Quellen. - Setzen Sie den Zielportbereich auf
8080
. Dadurch wird das Ziel nur auf Port8080
gesetzt. Die Regel lässt jetzt zu, dass Traffic von allen Quellen Port8080
verwendet. Das brauchen wir, damit unsere Anwendung von überall aus erreicht werden kann. - Geben Sie eine Beschreibung an.
- Setzen Sie das Quell-CIDR auf
Firewall auf der Instanz konfigurieren
Firewallregeln steuern den Verkehr auf Paketebene in oder aus einer Instanz. Sie konfigurieren Firewallregeln direkt in der Instanz selbst und stellen eine zusätzliche Sicherheitsebene bereit.
- Navigieren Sie zur Seite mit den Instanzdetails für die Instanz, die Sie erstellt haben. Compute > Instanzen > Klicken Sie auf die von Ihnen erstellte Instanz.
- Kopieren Sie die öffentliche IP-Adresse Ihrer Instanz.
- Melden Sie sich mit SSH bei der Instanz an. Verwenden Sie den von Ihnen generierten oder beim Erstellen der Instanz angegebenen Schlüssel. Der Standardbenutzername für Instanzen, die das Oracle Linux-Betriebssystem verwenden, lautet
opc
. -
Führen Sie die Firewallkonfigurationsbefehle aus. Dadurch wird die Firewall in der Instanz selbst geändert, um Port
8080
verfügbar zu machen und eingehenden Traffic zu akzeptieren.sudo firewall-cmd --zone=public --permanent --add-port=8080/tcp sudo firewall-cmd --reload
Java EE-Anwendungen auf Ampere A1 Compute Platform ausführen
Um diese Anwendung auszuführen, bereiten Sie zunächst eine Ampere-A1-Compute-Instanz mit einigen erforderlichen Packages vor, wie Containertools und git
. Klonen Sie dann das Repository, und erstellen Sie die Anwendung mit dem enthaltenen Maven pom.xml
. Starten Sie schließlich die MySQL- und Tomcat-Dockingcontainer mit den Container-Tools.
Container-Tools installieren
Oracle Linux 8 verwendet Podman zur Ausführung und Verwaltung von Containern. Podman ist eine Daemonless-Container-Engine für die Entwicklung, Verwaltung und Ausführung von Open Container Initiative-Containern und Containerimages auf Ihrem Linux-System. Podman stellt eine Docker-kompatible Befehlszeilenanwendung bereit, die als Ersatz für docker verwendet werden kann. Durch die Installation des Packages podman-docker
wird der Befehl docker
bereitgestellt, der podman
transparent aufruft.
-
Melden Sie sich mit SSH bei der Instanz an. Verwenden Sie den von Ihnen generierten oder beim Erstellen der Instanz angegebenen Schlüssel. Der Standardbenutzername für Instanzen, die das Oracle Linux-Betriebssystem verwenden, lautet
opc
. -
Installieren Sie das
container-tools
-Modul, das alle Tools bereitstellt, die für die Arbeit mit Containern erforderlich sind.sudo dnf module install container-tools:ol8
sudo dnf install podman-docker git
Quellcode kopieren
Melden Sie sich zunächst mit SSH bei der Compute-Instanz an, und klonen Sie das Repository.
git clone https://github.com/oracle-quickstart/oci-arch-tomcat-mds.git
cd oci-arch-tomcat-mds/java
Webanwendung erstellen
Java-Webanwendungen werden als Webanwendungsarchive oder WAR-Dateien verpackt. WAR-Dateien sind ZIP-Dateien mit Metadaten, die die Anwendung in einem Servlet-Container wie Tomcat beschreiben. In diesem Beispiel wird Apache Maven verwendet, um die WAR-Datei für die Anwendung zu erstellen. Um die Anwendung zu erstellen, führen Sie den folgenden Befehl aus. Führen Sie den Befehl aus dem Verzeichnis aus, in dem die Quelldateien geklont wurden.
podman run -it --rm --name todo-build \
-v "$(pwd)":/usr/src:z \
-w /usr/src \
maven:3 mvn clean install
Dieser Befehl erstellt ein target
-Verzeichnis und die darin enthaltene WAR-Datei. Beachten Sie, dass wir Maven nicht installieren, sondern stattdessen die Build-Tools innerhalb des Containers ausführen.
Führen Sie die Anwendung auf der Ampere A1 Compute Platform aus
Die Anwendung verwendet den Tomcat-Servlet-Container und die MySQL-Datenbank. Sowohl Tomcat als auch die MySQL-Datenbank unterstützen die ARM64v8-Architektur, die von der Ampere A1-Compute-Plattform verwendet wird.
-
Pod mit Podman erstellen.
podman pod create --name todo-app -p 8080:8080 --infra-image k8s.gcr.io/pause:3.1
-
Starten Sie den Datenbankcontainer im Pod.
podman run --pod todo-app -d \ -e MYSQL_ROOT_PASSWORD=pass \ -e MYSQL_DATABASE=demo \ -e MYSQL_USER=todo-user \ -e MYSQL_PASSWORD=todo-pass \ --name todo-mysql \ -v "${PWD}"/src/main/sql:/docker-entrypoint-initdb.d:z \ mysql/mysql-server:8.0
Für die MySQL-Datenbank werden die Datenbankinitialisierungsskripte für den Container bereitgestellt, der beim Hochfahren die erforderlichen Datenbankbenutzer und -tabellen erstellt. Dazu mounten Sie das Verzeichnis
/src/main/sql
vom Host als/docker-entrypoint-initdb.d
im Container. Das offizielle MySQL-Image, das Sie hier verwenden, ist so konfiguriert, dass.sql
-Dateien beim Start in diesem Verzeichnis ausgeführt werden. Weitere Optionen, einschließlich Export und Backup von Daten, finden Sie in der Dokumentation. -
Stellen Sie die Anwendung bereit, die Sie als WAR-Datei mit einem Tomcat-Server erstellt haben.
podman run --pod todo-app -d\ --name todo-tomcat \ -v "${PWD}"/target/todo.war:/usr/local/tomcat/webapps/todo.war:z \ tomcat:9 podman logs -f todo-tomcat
Die Datenbankverbindungsinformationen und die Anwendung werden dem Apache Tomcat-Container über den
src/main/resources/todo.properties
bereitgestellt. Die JDBC-URL verwendetlocalhost
als MySQL-Serverhost. Dies liegt daran, dass Container innerhalb desselben Pods mitlocalhost
miteinander kommunizieren können. Die Anwendungs-WAR-Datei wird als Mount für den Container bereitgestellt.Tomcat stellt die Anwendung beim Hochfahren bereit, und die Portzuordnung zu dem Host macht die Anwendung über die öffentliche IP-Adresse für die Compute-Instanz verfügbar.
-
Geben Sie die öffentliche IP-Adresse der Compute-Instanz in einem Browser mit Port
8080
ein. Sie sollten die Anwendung sehen können.http://<ip_address>:8080/todo/
Fehlerbehebung
Podman-Container können genauso wie Docker-Container geprüft werden (Sie können auch den Alias podman
als docker
angeben). Im Folgenden werden einige gängige Befehle zum Prüfen der Container aufgeführt:
podman ps -pa
: Zeigt aktive und beendete Container sowie die Pods an, zu denen sie gehören.podman logs -f todo-mysql
: Zeigt die Ausgabe des angegebenen Containers an (in diesem Beispieltodo-mysql
). Drücken SieCtrl+c
, um den Vorgang zu beenden.
Verwandte Links
Danksagungen
- Autor - Jeevan Joseph
- Beitragender - Orlando Gentil
Weitere Lernressourcen
Sehen Sie sich andere Übungen zu docs.oracle.com/learn an, oder greifen Sie auf weitere Inhalte für kostenloses Lernen im Oracle Learning YouTube-Kanal zu. Außerdem besuchen Sie education.oracle.com/learning-explorer, um Oracle Learning Explorer zu werden.
Produktdokumentation finden Sie im Oracle Help Center.
Deploy Java applications on Ampere A1 on Oracle Cloud Infrastructure
F51393-01
December 2021
Copyright © 2021, Oracle and/or its affiliates.