WebSphere-toepassingen migreren naar JBoss EAP op Azure-app Service
In deze handleiding wordt beschreven waar u rekening mee moet houden wanneer u een bestaande WebSphere-toepassing wilt migreren die moet worden uitgevoerd op Azure-app Service met behulp van JBoss EAP.
Premigratie
Voltooi voordat u begint de evaluatie- en inventarisstappen die in de volgende secties worden beschreven om een geslaagde migratie te garanderen.
Servercapaciteit inventariseren
Documenteer de hardware (geheugen, CPU, schijf) van de huidige productieserver(s) en het gemiddelde en piekaantal aanvragen en het resourcegebruik. U hebt deze informatie nodig, welk migratiepad u ook kiest. Het is bijvoorbeeld handig om u te helpen bij het selecteren van het App Service-plan.
In de lijst met beschikbare App Service-planlagen ziet u de geheugen-, CPU-kernen, opslag en prijsinformatie. JBoss EAP in App Service is alleen beschikbaar in de lagen Premium V3 en Isolated V2 App Service Plan.
Alle geheimen inventariseren
Controleer alle eigenschappen en configuratiebestanden op de productieserver of -servers op geheimen en wachtwoorden. Controleer in elk geval ibm-web-bnd.xml in uw WAR's. Mogelijk bevinden zich ook in uw toepassing configuratiebestanden met wachtwoorden of referenties. Deze bestanden kunnen bestaan uit spring boot-toepassingen, application.properties of application.yml bestanden.
Alle certificaten inventariseren
Documenteer alle certificaten die worden gebruikt voor openbare SSL-eindpunten. U kunt alle certificaten op de productieserver(s) weergeven door de volgende opdracht uit te voeren:
keytool -list -v -keystore <path to keystore>
Controleren of de ondersteunde Java-versie goed werkt
JBoss EAP op Azure-app Service ondersteunt Java 8 en 11. Dat betekent dat u moet controleren of uw toepassing correct kan worden uitgevoerd met behulp van die ondersteunde versie. Deze validatie is vooral belangrijk als uw huidige server gebruikmaakt van een niet-ondersteunde JDK (zoals Oracle JDK of IBM OpenJ9).
Meld u aan bij uw productieserver en voer de volgende opdracht uit om uw huidige Java-versie te verkrijgen:
java -version
JNDI-resources inventariseren
Inventariseer alle JNDI-resources. Voor sommige resources, zoals JMS-berichtbrokers, is mogelijk migratie of herconfiguratie vereist.
Binnen uw toepassing
Inspecteer het WEB-INF-/ibm-web-bnd.xml-bestand en/of het WEB-INF-/web.xml-bestand .
Bepalen of databases worden gebruikt
Als uw toepassing gebruikmaakt van databases, moet u de volgende informatie vastleggen:
- De naam van de gegevensbron.
- De configuratie van de verbindingsgroep.
- De locatie van het JAR-bestand van het JDBC-stuurprogramma.
Nagaan of en hoe het bestandssysteem wordt gebruikt
Voor het gebruik van het bestandssysteem op de toepassingsserver is herconfiguratie vereist of zijn in zeldzame gevallen architectuurwijzigingen vereist. Het bestandssysteem kan worden gebruikt door gedeelde WebSphere-modules of door uw toepassingscode. U kunt enkele of elk van de volgende scenario's identificeren.
Statische alleen-lezeninhoud
Als uw toepassing momenteel met statische inhoud werkt, hebt u hiervoor een alternatieve locatie nodig. U kunt statische inhoud verplaatsen naar Azure Blob Storage en Azure CDN toevoegen voor razendsnelle downloads wereldwijd. Zie statische websitehosting in Azure Storage en quickstart: Een Azure-opslagaccount integreren met Azure CDN voor meer informatie.
Dynamisch gepubliceerde statische inhoud
Als uw toepassing statische inhoud toestaat die wordt geüpload/geproduceerd door uw toepassing, maar onveranderbaar is nadat deze is gemaakt, kunt u Azure Blob Storage en Azure CDN gebruiken zoals hierboven beschreven, met een Azure-functie om uploads en CDN-vernieuwing te verwerken. U vindt een voorbeeldimplementatie voor gebruik in Statische inhoud uploaden en via CDN vooraf laden met Azure Functions.
Dynamische of interne inhoud
Voor bestanden die vaak worden geschreven en gelezen door uw toepassing (zoals tijdelijke gegevensbestanden) of statische bestanden die alleen zichtbaar zijn voor uw toepassing, kunt u Azure Storage koppelen aan uw App Service-bestandssysteem. Zie Azure Storage koppelen als een lokale share in App Service voor meer informatie.
Bepalen of uw toepassing gebruikmaakt van geplande taken
Geplande taken, zoals Quartz Scheduler-taken of Unix Cron-taken, mogen niet worden gebruikt met Azure-app Service. Azure-app Service voorkomt niet dat u een toepassing met geplande taken intern implementeert. Als uw toepassing echter wordt uitgeschaald, kan dezelfde geplande taak meer dan één keer per geplande periode worden uitgevoerd. Deze situatie kan tot onbedoelde gevolgen leiden.
Als u geplande taken in Azure wilt uitvoeren, kunt u Overwegen Om Azure Functions te gebruiken met een timertrigger. Zie Timertrigger voor Azure Functions voor meer informatie. U hoeft de taakcode zelf niet naar een functie te migreren. Via de functie kan eenvoudig een URL in uw toepassing worden aangeroepen om de taak te activeren.
Notitie
Om kwaadwillend gebruik te voorkomen, moet u er waarschijnlijk voor zorgen dat er referenties vereist zijn voor het eindpunt dat de taak aanroept. In dit geval moeten de referenties worden opgegeven door de triggerfunctie.
Bepalen of er een verbinding met on-premises services is vereist
Als voor uw toepassing toegang nodig is tot een van uw on-premises services, moet u een van de connectiviteitsservices van Azure inrichten. Zie Connect an on-premises network to Azure (Een on-premises netwerk verbinden met Azure) voor meer informatie. U moet uw toepassing ook herstructureren voor het gebruik van openbaar beschikbare API's in uw on-premises resources.
Bepalen of Java Message Service-wachtrijen (JMS) of -onderwerpen in gebruik zijn
Als uw toepassing JMS-wachtrijen of -onderwerpen gebruikt, moet u deze migreren naar een extern gehoste JMS-server. Azure Service Bus en het Advanced Message Queueing Protocol (AMQP) kunnen een uitstekende migratiestrategie zijn wanneer er gebruik wordt gemaakt van JMS. Zie Java Message Service 1.1 gebruiken met Azure Service Bus Standard en AMQP 1.0 voor meer informatie.
Als er met JMS permanente archieven zijn geconfigureerd, moet u de configuratie hiervan vastleggen en na de migratie toepassen.
Nagaan of uw toepassing code bevat die specifiek is voor WebSphere-API's
Als uw toepassing gebruikmaakt van WebSphere-specifieke API's, moet u uw toepassing herstructureren om deze NIET te gebruiken. De Red Hat Migration Toolkit for Apps kan helpen bij het verwijderen en herstructureren van deze afhankelijkheden.
Bepalen of uw toepassing gebruikmaakt van entiteitsbeans of CMP-beans van het type EJB 2.x
Als uw toepassing gebruikmaakt van entiteitsbeans of CMP-beans van het type EJB 2.x, moet u de toepassing herstructureren om deze afhankelijkheden te verwijderen.
Bepalen of de javaEE-toepassingsclientfunctie wordt gebruikt
Als u clienttoepassingen hebt die verbinding maken met uw (server)-toepassing met behulp van de functie JavaEE-toepassingsclient, moet u zowel uw clienttoepassingen als uw (server)toepassing herstructureren voor het gebruik van HTTP-API's.
Bepalen of uw toepassing code bevat die specifiek is voor het besturingssysteem
Als uw toepassing code bevat met afhankelijkheden van het host-besturingssysteem, moet u deze herstructureren om deze afhankelijkheden te verwijderen. U moet bijvoorbeeld het gebruik van /
of \
in bestandssysteempaden vervangen door File.Separator
of Paths.get
als uw toepassing wordt uitgevoerd in Windows.
Bepalen of EJB-timers worden gebruikt
Als uw toepassing EJB-timers gebruikt, moet u controleren of de EJB-timercode onafhankelijk kan worden geactiveerd door elke JBoss EAP-instantie. Deze validatie is nodig omdat wanneer uw App Service horizontaal wordt geschaald, elke EJB-timer wordt geactiveerd op een eigen JBoss EAP-exemplaar.
Nagaan of andere JCA-connectors worden gebruikt
Als uw toepassing gebruikmaakt van JCA-connectors, moet u controleren of de JCA-connector kan worden gebruikt op JBoss EAP. Als de JCA-implementatie is gekoppeld aan WebSphere, moet u de afhankelijkheid van de JCA-connector voor uw toepassing herstructureren. Als de JCA-connector kan worden gebruikt, moet u de JAR's toevoegen aan het serverklassepad. U moet ook de benodigde configuratiebestanden op de juiste locatie in de JBoss EAP-servermappen plaatsen zodat deze beschikbaar zijn.
Bepalen of JAAS wordt gebruikt
Als uw toepassing JAAS gebruikt, moet u vastleggen hoe JAAS is geconfigureerd. Als deze een database gebruikt, kunt u deze converteren naar een JAAS-domein op JBoss EAP. Als het een aangepaste implementatie is, moet u controleren of deze kan worden gebruikt in JBoss EAP.
Bepalen of uw toepassing gebruikmaakt van een resourceadapter
Als uw toepassing een resourceadapter (RA) nodig heeft, moet deze compatibel zijn met JBoss EAP. Bepaal of de RA prima werkt op een zelfstandig exemplaar van JBoss EAP door deze te implementeren op de server en deze correct te configureren. Als de RA goed werkt, moet u de JAR's toevoegen aan het serverklassepad van het App Service-exemplaar en de benodigde configuratiebestanden op de juiste locatie in de JBoss EAP-servermappen plaatsen zodat deze beschikbaar zijn.
Bepalen of uw toepassing bestaat uit meerdere WAR's
Als uw toepassing bestaat uit meerdere WAR's, moet u deze allemaal behandelen als afzonderlijke toepassingen en deze handleiding voor al deze WAR's doorlopen.
Bepalen of uw toepassing is verpakt als een EAR
Als uw toepassing is verpakt als een EAR-bestand, controleert u de application.xml en ibm-application-bnd.xml bestanden en legt u hun configuraties vast.
Alle externe processen en daemons identificeren die worden uitgevoerd op de productieservers
U moet alle processen die buiten de toepassingsserver worden uitgevoerd, zoals controledaemons, verwijderen of naar een andere locatie migreren.
Migratie
Red Hat Migration Toolkit for Apps
De Red Hat Migration Toolkit for Applications is een gratis extensie voor Visual Studio Code. Deze extensie analyseert uw toepassingscode en configuratie om aanbevelingen te doen voor het migreren van uw Jakarta EE-toepassingen naar JBoss EAP vanaf andere app-servers, zoals het verwijderen van afhankelijkheden van eigen API's. De extensie biedt ook aanbevelingen als u van on-premises naar de cloud migreert. Zie het overzicht van Migration Toolkit for Applications voor meer informatie.
De inhoud van deze handleiding helpt u bij het oplossen van de andere onderdelen van het migratietraject, zoals het kiezen van het juiste type App Service-plan, het externaliseren van uw sessiestatus en het gebruik van Azure om uw EAP-exemplaren te beheren in plaats van de JBoss Management-interface.
Een App Service-plan inrichten
Selecteer in de lijst met beschikbare serviceplannen het plan waarvan de specificaties voldoen aan of overschrijden van de specificaties van de huidige productiehardware.
Notitie
Als u van plan bent om faserings-/canaryimplementaties uit te voeren of om implementatiesites te gebruiken, moet het App Service-plan over die extra capaciteit beschikken. Het wordt aanbevolen om Premium-abonnementen of hoger te gebruiken voor Java-toepassingen.
Web-apps maken en implementeren
U moet een web-app maken in uw App Service-plan voor elk WAR-bestand dat is geïmplementeerd op uw JBoss EAP-server.
Notitie
Hoewel het mogelijk is om meerdere WAR-bestanden te implementeren in één web-app, is dit zeer onwenselijk. Wanneer u meerdere WAR-bestanden in één web-app implementeert, wordt voorkomen dat elke app wordt geschaald op basis van de eigen gebruiksvereisten. Het veroorzaakt ook meer complexiteit voor volgende implementatiepijplijnen. Als er meerdere apps op één URL beschikbaar moeten zijn, kunt u het beste een routeringsoplossing, zoals Azure Application Gateway, gebruiken.
Maven-apps
Als uw toepassing is ontwikkeld op basis van een Maven POM-bestand, gebruikt u de web-app-invoegtoepassing voor Maven om de web-app te maken en uw toepassing te implementeren. Zie de sectie Maven-invoegtoepassing configureren van Quickstart: Een Java-app maken in Azure-app Service voor meer informatie.
Andere toepassingen dan Maven-toepassingen
Als u de Maven-invoegtoepassing niet kunt gebruiken, moet u de web-app op andere manieren inrichten, zoals:
Nadat u de web-app hebt gemaakt, gebruikt u een van de beschikbare implementatiemechanismen om uw toepassing te implementeren. Zie Bestanden implementeren in App Service voor meer informatie.
JVM-runtimeopties migreren
Als voor uw app specifieke runtimeopties vereist zijn, gebruikt u de beste methode om deze op te geven. Zie het gedeelte Java-runtimeopties instellen van Een Tomcat-, JBoss- of Java SE-app implementeren en configureren in Azure-app Service voor meer informatie.
Geheimen vullen
Gebruik app-instellingen om geheimen op te slaan die specifiek zijn voor uw app. Als u hetzelfde geheim of dezelfde geheimen tussen meerdere toepassingen wilt gebruiken of als u gedetailleerde toegangsbeleidsregels en controlemogelijkheden nodig hebt, gebruikt u in plaats daarvan Azure Key Vault-verwijzingen. Zie Key Vault-verwijzingen gebruiken als app-instellingen in Azure-app Service en Azure Functions voor meer informatie.
Aangepast domein en SSL configureren
Als uw toepassing wordt weergegeven in een aangepast domein, moet u uw webtoepassing hieraan toewijzen. Zie Zelfstudie: Een bestaande aangepaste DNS-naam toewijzen aan Azure-app Service voor meer informatie.
Vervolgens moet u het TLS/SSL-certificaat voor dat domein binden aan uw App Service-web-app. Zie Een aangepaste DNS-naam beveiligen met een TLS/SSL-binding in Azure-app Service voor meer informatie.
Gegevensbronnen, bibliotheken en JNDI-resources migreren
Als u gegevensbronnen wilt migreren, volgt u de stappen in de gegevensbronnen configureren voor een Tomcat-, JBoss- of Java SE-app in Azure-app Service.
Migreer eventuele aanvullende klassepadafhankelijkheden op serverniveau. Zie Gegevensbronnen configureren voor een Tomcat-, JBoss- of Java SE-app in Azure-app Service voor meer informatie.
Migreer eventuele aanvullende JDNI-resources op serverniveau. Zie Gegevensbronnen configureren voor een Tomcat-, JBoss- of Java SE-app in Azure-app Service voor meer informatie.
Notitie
Als u de aanbevolen architectuur van één WAR per toepassing volgt, kunt u overwegen om klassepadbibliotheken en JNDI-resources op serverniveau naar uw toepassing te migreren. Dit vereenvoudigt het beheer van onderdelen en wijzigingsbeheer aanzienlijk. Als u meer dan één WAR per toepassing wilt implementeren, moet u een van onze aanvullende handleidingen bekijken die aan het begin van deze handleiding worden vermeld.
Geplande taken migreren
U moet uw geplande taken minimaal verplaatsen naar een Virtuele Azure-machine, zodat ze geen deel meer uitmaken van uw toepassing. U kunt er ook voor kiezen om ze te moderniseren in gebeurtenisgestuurde Java met behulp van Azure-services zoals Azure Functions, SQL Database en Event Hubs.
Opnieuw starten en functioneel testen
Ten slotte moet u de web-app opnieuw starten om alle configuratiewijzigingen toe te passen. Wanneer de web-app opnieuw is gestart, controleert u of deze juist wordt uitgevoerd.
Postmigratie
Nu u uw toepassing hebt gemigreerd naar Azure-app Service, moet u controleren of deze werkt zoals verwacht. Wanneer u dat gedaan hebt, hebben we enkele aanbevelingen voor u aan de hand waarvan u de toepassing geschikter kunt maken voor de cloud.
Aanbevelingen
Als u ervoor hebt gekozen om de /home directory voor bestandsopslag te gebruiken, kunt u overwegen deze te vervangen door Azure Storage. Zie Azure Storage koppelen als een lokale share in een aangepaste container in App Service voor meer informatie.
Als u configuratie hebt in de /home directory die verbindingsreeks s, SSL-sleutels en andere geheime informatie bevat, kunt u eventueel een combinatie van Azure Key Vault en parameterinjectie gebruiken met toepassingsinstellingen. Zie Key Vault-verwijzingen gebruiken voor App Service en Azure Functions en Een App Service-app configureren voor meer informatie.
Overweeg implementatiesites te gebruiken voor betrouwbare implementaties zonder downtime. Zie Faseringsomgevingen in Azure App Service instellen voor meer informatie.
Ontwerp en implementeer een DevOps-strategie. Als u sneller wilt ontwikkelen zonder dat dit ten koste gaat van de betrouwbaarheid, kunt u het beste implementaties en testen automatiseren met Azure Pipelines. Zie Bouwen en implementeren in Java-web-app voor meer informatie. Als u implementatiesites gebruikt, kunt u de implementatie automatiseren naar een site en de volgende sitewisseling. Zie het voorbeeld: Implementeren in een sitesectie van Deploy to App Service met behulp van Azure Pipelines voor meer informatie.
Ontwerp en implementeer een strategie voor bedrijfscontinuïteit en herstel na noodgevallen. Voor bedrijfskritische toepassingen kunt u het beste een implementatiearchitectuur voor meerdere regio's gebruiken. Zie De webtoepassing Met hoge beschikbaarheid voor meerdere regio's voor meer informatie.