Migrieren Sie von Oracle WebLogic zu Apache Tomcat (ToMEE) auf Amazon ECS - AWS Prescriptive Guidance

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Migrieren Sie von Oracle WebLogic zu Apache Tomcat (ToMEE) auf Amazon ECS

Erstellt von Anya Epishcheva () und Harshad Gohil () AWS AWS

R-Typ: Replatform

Quelle: Containers

Ziel: Apache Tomcat (ToMEE) auf Amazon ECS

Erstellt von: AWS

Umgebung: PoC oder Pilot

Technologien: Container und Mikroservices; Migration

Arbeitslast: Oracle

AWSdienstleistungen: Amazon ECS

Übersicht

In diesem Muster werden die Schritte für die Migration eines lokalen Oracle SPARC Solaris-Systems, auf dem Oracle ausgeführt wird, WebLogic zu einer Docker-Container-basierten Installation beschrieben, auf der Apache TomEE (Apache Tomcat mit zusätzlicher Container-Unterstützung) mit Amazon Elastic Container Service (Amazon) ausgeführt wird. ECS

Informationen zur Migration von Datenbanken, die mit den Anwendungen verknüpft sind, die Sie von Oracle zu Tomcat migrieren, finden Sie in den Datenbankmigrationsmustern WebLogic in diesem Katalog. 

Bewährte Methoden

Die Schritte für die Migration von Java- und Java Enterprise Edition (Java EE) -Webanwendungen variieren je nach der Anzahl der containerspezifischen Ressourcen, die von der Anwendung verwendet werden. Spring-basierte Anwendungen sind in der Regel einfacher zu migrieren, da sie nur eine geringe Anzahl von Abhängigkeiten vom Bereitstellungscontainer aufweisen. Im Gegensatz dazu erfordern Java EE-Anwendungen, die Enterprise JavaBeans (EJBs) und verwaltete Container-Ressourcen wie Thread-Pools, Java Authentication and Authorization Service (JAAS) und Container-Managed Persistence (CMP) verwenden, mehr Aufwand. 

Anwendungen, die für Oracle Application Server entwickelt wurden, verwenden häufig die Oracle Identity Management Suite. Kunden, die auf Open-Source-Anwendungsserver migrieren, entscheiden sich häufig dafür, Identitäts- und Zugriffsmanagement mithilfe eines SAML basierten Verbunds neu zu implementieren. Andere verwenden Oracle HTTP Server Webgate für Fälle, in denen eine Migration von der Oracle Identity Management Suite keine Option ist. 

Java- und Java EE-Webanwendungen eignen sich hervorragend für die Bereitstellung auf Docker-basierten AWS Diensten wie AWS Fargate und Amazon. ECS Kunden entscheiden sich häufig für ein Docker-Image, auf dem die neueste Version des Zielanwendungsservers (z. B. TomEE) und das Java Development Kit () vorinstalliert sind. JDK Sie installieren ihre Anwendungen auf dem Basis-Decker-Image, veröffentlichen es in ihrer Amazon Elastic Container Registry (AmazonECR) -Registrierung und verwenden es für die skalierbare Bereitstellung ihrer Anwendungen auf AWS Fargate oder Amazon. ECS 

Im Idealfall ist die Anwendungsbereitstellung elastisch, d. h. die Anzahl der Anwendungsinstanzen skaliert je nach Traffic oder Arbeitslast nach oben oder unten. Das bedeutet, dass Anwendungsinstanzen online gehen oder beendet werden müssen, um die Kapazität an den Bedarf anzupassen. 

Wenn Sie eine Java-Anwendung zu verschiebenAWS, sollten Sie erwägen, sie zustandslos zu machen. Dies ist ein zentrales Architekturprinzip des AWS Well-Architected Framework, das eine horizontale Skalierung mithilfe von Containerisierung ermöglicht. Beispielsweise speichern die meisten Java-basierten Webanwendungen Benutzersitzungsinformationen lokal. Um die Beendigung der Anwendungsinstanz aufgrund der automatischen Skalierung in Amazon Elastic Compute Cloud (AmazonEC2) oder aus anderen Gründen zu überstehen, sollten Benutzersitzungsinformationen global gespeichert werden, sodass Benutzer von Webanwendungen weiterhin nahtlos und transparent arbeiten können, ohne sich erneut mit einer Webanwendung verbinden oder erneut anmelden zu müssen. Für diesen Ansatz gibt es mehrere Architekturoptionen, darunter Amazon ElastiCache for Redis oder das Speichern des Sitzungsstatus in einer globalen Datenbank. Anwendungsserver wie TomEE verfügen über Plug-ins, die die Speicherung und Verwaltung von Sitzungen über Redis, Datenbanken und andere globale Datenspeicher ermöglichen.

Verwenden Sie ein gemeinsames, zentralisiertes Protokollierungs- und Debugging-Tool, das sich leicht in Amazon CloudWatch und AWS X-Ray integrieren lässt. Die Migration bietet die Möglichkeit, die Funktionen des Anwendungslebenszyklus zu verbessern. Möglicherweise möchten Sie den Erstellungsprozess automatisieren, sodass Änderungen mithilfe einer CI/CD-Pipeline (Continuous Integration and Continuous Delivery) problemlos vorgenommen werden können. Dies kann Änderungen an der Anwendung erfordern, sodass sie ohne Ausfallzeiten bereitgestellt werden kann. 

Voraussetzungen und Einschränkungen

Voraussetzungen

  • Ein aktives AWS Konto 

  • Java-Quellcode und JDK

  • Mit Oracle erstellte Quellanwendung WebLogic

  • Definierte Lösung für Identitäts- und Zugriffsmanagement (SAMLoder Oracle Webgate)

  • Definierte Lösung für die Verwaltung von Anwendungssitzungen (Umzug like-for-like oder mit Amazon oder Zustandslosigkeit der Anwendung ElastiCache, falls erforderlich)

  • Erläuterung, ob das Team J2EE-spezifische Bibliotheken umgestalten muss, um die Portabilität auf Apache ToMEE zu gewährleisten (siehe Status der Implementierung von Java EE 7 auf der Apache-Website)

  • Gehärtetes ToMEE-Image auf der Grundlage Ihrer Sicherheitsanforderungen

  • Container-Image mit vorinstalliertem Ziel-TomEE 

  • Vereinbarte und bei Bedarf durchgeführte Anwendungskorrektur (z. B. Protokollierung, Debug-Erstellung, Authentifizierung)

Versionen der Produkte

  • Oracle WebLogic OC4J, 9i, 10g 

  • Tomcat 7 (mit Java 1.6 oder höher)

Architektur

 Quelltechnologie-Stack

  • Mit Oracle erstellte Webanwendung WebLogic

  • Webanwendung, die Oracle Webgate oder SAML Authentifizierung verwendet

  • Webanwendungen, die mit Oracle Database Version 10g und höher verbunden sind

Zieltechnologie-Stack

Zielarchitektur

AWS Cloud architecture diagram showing VPC, application subnets, and shared services integration.

Tools

Um mit TomEE arbeiten zu können, muss eine Java-Anwendung in eine WAR-Datei neu erstellt werden. In einigen Fällen können Änderungen an der Anwendung erforderlich sein, um die Anwendung auf ToMEE ausführen zu können. Sie sollten überprüfen, ob die erforderlichen Konfigurationsoptionen und Umgebungseigenschaften korrekt definiert sind.  

Außerdem sollten die Lookups für Java Naming und Directory Interface (JNDI) und die Namespaces für JavaServer Pages (JSP) korrekt definiert sein. Erwägen Sie, die von der Anwendung verwendeten Dateinamen zu überprüfen, um Namenskonflikte mit integrierten T-Bibliotheken zu vermeiden. Beispielsweise ist persistence.xml ein Dateiname, der vom Apache JPA Open-Framework (das im Lieferumfang von Open EJB in ToMEE enthalten ist) für Konfigurationszwecke verwendet wird. Die Datei persistence.xml in PUI enthält Bean-Deklarationen für das Spring Framework.  

ToMee Version 7.0.3 und höher (Tomcat 8.5.7 und höher) gibt eine HTTP 400-Antwort (schlechte Anfrage) für Rohdaten (uncodiert) mit Sonderzeichen zurück. URLs Die Serverantwort wird dem Endbenutzer als leere Seite angezeigt. Frühere Versionen von ToMee und Tomcat erlaubten die Verwendung bestimmter uncodierter Sonderzeichen inURLs; dies gilt jedoch als unsicher, wie auf der Website -2016-6816 angegeben. CVE Um das URL Kodierungsproblem zu lösen, JavaScript müssen die direkt URLs an den Browser übergebenen Zeichen mit der Methode encode () URI kodiert werden, anstatt als Rohzeichenfolgen verwendet zu werden.

Nachdem Sie die .war-Datei in ToMee bereitgestellt haben, überprüfen Sie das Startprotokoll für Linux Cat auf fehlende gemeinsam genutzte Bibliotheken und Oracle-spezifische Erweiterungen, um fehlende Komponenten aus Tomcat-Bibliotheken hinzuzufügen. 

Allgemeines Verfahren

  • Konfigurieren Sie die Anwendung auf TomEE.

  • Identifizieren und rekonfigurieren Sie anwendungsserverspezifische Konfigurationsdateien und Ressourcen vom Quell- bis zum Zielformat.

  • Identifizieren und JNDI rekonfigurieren Sie Ressourcen.

  • Passen Sie den EJB Namespace und die Lookups an das vom Zielanwendungsserver benötigte Format an (falls zutreffend).

  • Konfigurieren Sie JAAS anwendungscontainerspezifische Sicherheitsrollen und Prinzipalzuordnungen neu (falls zutreffend).

  • Package Sie die Anwendung und die gemeinsam genutzten Bibliotheken in eine WAR-Datei.

  • Stellen Sie die .war-Datei in TomEE mithilfe des bereitgestellten Docker-Containers bereit.

  • Überwachen Sie das Startprotokoll, um alle fehlenden Erweiterungen für gemeinsam genutzte Bibliotheken und Bereitstellungsdeskriptoren zu identifizieren. Wenn welche gefunden wurden, kehren Sie zur ersten Aufgabe zurück.

  • Testen Sie die installierte Anwendung anhand der wiederhergestellten RDS Amazon-Datenbank.

  • Starten Sie die komplette Architektur mit einem Load Balancer und einem ECS Amazon-Cluster, indem Sie den Anweisungen unter Deploy Docker Containers folgen.

  • Aktualisieren Sie dasURLs, um auf den Load Balancer zu verweisen.

  • Aktualisieren Sie die Datenbank für das Konfigurationsmanagement (CMDB).

Epen

AufgabeBeschreibungErforderliche Fähigkeiten
Führen Sie eine Anwendungserkennung durch (aktueller Status und Leistungsbasis).BA, Leiter der Migration
Validieren Sie die Versionen und Engines der Quell- und Zieldatenbank.DBA
Validieren Sie das Design der Quell- und Zielanwendung (Identitäts- und Sitzungsmanagement).DBA, Migrationsingenieur, App-Besitzer
Identifizieren Sie die Hardware- und Speicheranforderungen für die Zielserverinstanz.DBA, SysAdmin
Wählen Sie den richtigen Instanztyp auf der Grundlage von Kapazität, Speicherfunktionen und Netzwerkfunktionen aus.DBA, SysAdmin
Identifizieren Sie die Sicherheitsanforderungen für den Netzwerkzugriff für die Quell- und Zieldatenbanken.DBA, SysAdmin
Identifizieren Sie die Strategie und die Tools für die Anwendungsmigration.DBA, Leiter der Migration
Vervollständigen Sie das Migrationsdesign und den Migrationsleitfaden für die Anwendung.Leitung aufbauen, Leitung Migration
Vervollständigen Sie das Runbook zur Anwendungsmigration.Leiter Aufbau, Leiter der Umstellung, Leiter des Tests, Leiter der Migration
AufgabeBeschreibungErforderliche Fähigkeiten
Erstellen Sie eine virtuelle private Cloud (VPC).SysAdmin
Erstellen Sie Sicherheitsgruppen.SysAdmin
Konfigurieren und starten Sie die Amazon RDS DB-Instance.DBA, SysAdmin
Konfigurieren Sie die ECS Amazon-Bereitstellung.SysAdmin
Package Sie Ihre Anwendung als Docker-Image.SysAdmin
Senden Sie das Image in die ECR Amazon-Registrierung (oder überspringen Sie diesen Schritt und übertragen Sie es in den ECS Amazon-Cluster).SysAdmin
Konfigurieren Sie die Aufgabendefinition für die Anwendung und die ECS Amazon-Serviceoptionen.SysAdmin
Konfigurieren Sie Ihren Cluster, überprüfen Sie die Sicherheitseinstellungen und legen Sie AWS Identity and Access Management Zugriffsverwaltungsrollen (IAM) fest.SysAdmin
Starten Sie Ihr Setup und führen Sie die Tests gemäß Ihrem Runbook für die Anwendungsmigration aus.SysAdmin
AufgabeBeschreibungErforderliche Fähigkeiten
Holen Sie die Erlaubnis Ihres Sicherheitsteams ein, Produktionsdaten nach zu verschiebenAWS.DBA, Migrationsingenieur, App-Besitzer
Erstellen Sie Endpunkte und erhalten Sie Zugriff auf diese, um Datenbank-Backupdateien abzurufen.DBA
Verwenden Sie die native Datenbank-Engine oder Tools von Drittanbietern, um Datenbankobjekte und Daten zu migrieren.DBA
Führen Sie die erforderlichen Tests im Runbook für die Anwendungsmigration aus, um die erfolgreiche Datenmigration zu bestätigen.DBA, Migrationsingenieur, Besitzer der App
AufgabeBeschreibungErforderliche Fähigkeiten
Erstellen Sie einen Änderungsantrag (CR) für die Migration.Leitung der Umstellung
Besorgen Sie sich die CR-Genehmigung für die Migration.Übernahme (Leitung)
Folgen Sie der Strategie zur Anwendungsmigration aus dem Runbook zur Anwendungsmigration.DBA, Migrationsingenieur, App-Besitzer
Aktualisieren Sie die Anwendung (falls erforderlich).DBA, Migrationsingenieur, Besitzer der App
Führen Sie funktionale, nicht funktionale, Datenvalidierungs- SLA und Leistungstests durch.Testleiter, App-Besitzer, App-Nutzer
AufgabeBeschreibungErforderliche Fähigkeiten
Lassen Sie sich vom Antrag oder Geschäftsinhaber unterschreiben.Übernahme (Leitung)
Führen Sie eine Übung mit einem Tabellenthema durch, in der Sie alle Schritte des Cutover-Runbooks durchgehen.DBA, Migrationsingenieur, Besitzer der App
Wechseln Sie zu den Anwendungsclients auf die neue Infrastruktur.DBA, Migrationsingenieur, App-Besitzer
AufgabeBeschreibungErforderliche Fähigkeiten
Temporäre AWS Ressourcen abschalten.DBA, Migrationsingenieur, SysAdmin
Überprüfen und validieren Sie die Projektdokumente.Leiter der Migration
Erfassen Sie Kennzahlen zum Zeitpunkt der Migration, zum prozentualen Anteil manueller Änderungen im Vergleich zu Tools, zu Kosteneinsparungen usw.Leiter der Migration
Schließen Sie das Projekt ab und geben Sie Feedback.Leiter der Migration, Inhaber der App

Referenzen

Tutorials und Videos