Migrera WebSphere-program till JBoss EAP på Azure App Service
Den här guiden beskriver vad du bör känna till när du vill migrera ett befintligt WebSphere-program som ska köras i Azure App Service med JBoss EAP.
Före migrering
För att säkerställa en lyckad migrering slutför du de utvärderings- och inventeringssteg som beskrivs i följande avsnitt innan du börjar.
Lagerserverkapacitet
Dokumentera maskinvaran (minne, CPU, disk) för de aktuella produktionsservrarna och det genomsnittliga och högsta antalet begäranden och resursanvändningen. Du behöver denna information oavsett vilken migrerings väg du väljer. Det är till exempel användbart att hjälpa till att vägleda valet av App Service-planen.
Listan över tillgängliga App Service-plannivåer visar information om minne, CPU-kärnor, lagring och priser. Observera att JBoss EAP på App Service endast är tillgängligt på nivåerna Premium V3 och Isolerad V2 App Service-plan.
Inventera alla hemligheter
Kontrollera alla egenskaper och konfigurationsfiler på produktionsservern eller -servrarna efter hemligheter och lösenord. Kontrollera ibm-web-bnd.xml i dina WAR-filer. Konfigurationsfiler som innehåller lösenord eller autentiseringsuppgifter kan också finnas i ditt program. Dessa filer kan innehålla, för Spring Boot-program, application.properties eller application.yml filer.
Inventera alla certifikat
Dokumentera alla certifikat som används för offentliga SSL-slutpunkter. Du kan visa alla certifikat på produktionsservrarna genom att köra följande kommando:
keytool -list -v -keystore <path to keystore>
Validera att Java-versionen som stöds fungerar som den ska
JBoss EAP på Azure App Service stöder Java 8 och 11. Därför måste du kontrollera att ditt program kan köras korrekt med den version som stöds. Den här verifieringen är särskilt viktig om servern använder ett JDK som stöds (till exempel Oracle JDK eller IBM OpenJ9).
Du får den aktuella Java-versionen genom att logga in på din produktionsserver och köra följande kommando:
java -version
Inventera JNDI-resurser
Inventera alla JNDI-resurser. Vissa resurser, till exempel JMS-meddelandeköer, kan kräva migrering eller omkonfiguration.
I ditt program
Granska FILEN WEB-INF/ibm-web-bnd.xml och/eller FILEN WEB-INF/web.xml.
Avgöra om databaser används
Om ditt program använder några databaser måste du samla in följande information:
- Namnet på datakällan.
- Konfigurationen av anslutningspoolen.
- Platsen för JAR-filen för JDBC-drivrutinen.
Kontrollera om och hur filsystemet används
All användning av programserverns filsystem kräver omkonfiguration eller, i sällsynta fall, arkitektoniska ändringar. Filsystemet kan användas av delade WebSphere-moduler eller av programkoden. Du kanske känner igen några eller alla av följande scenarier.
Skrivskyddat statiskt innehåll
Om ditt program för tillfället hanterar statiskt innehåll behöver du en alternativ plats för det. Du kanske kan tänka dig att flytta det statiska innehållet till Azure Blob Storage och lägga till Azure CDN för blixtsnabba nedladdningar globalt. Mer information finns i Värd för statiska webbplatser i Azure Storage och snabbstart: Integrera ett Azure Storage-konto med Azure CDN.
Dynamiskt publicerat statiskt innehåll
Om ditt program tillåter att statiskt innehåll laddas upp/skapas av ditt program, men inte kan ändras efter att det har skapats, så kan du använda Azure Blob Storage och Azure CDN enligt beskrivningen ovan, med en Azure-funktion för hantering av överföringar och CDN-uppdateringar. Vi har tillhandahållit en exempelimplementering som du kan använda i Överföra och CDN-för inläsa statiskt innehåll med Azure Functions.
Dynamiskt eller internt innehåll
För filer som ofta skrivs och läses av ditt program (till exempel temporära datafiler) eller statiska filer som endast är synliga för ditt program kan du montera Azure Storage i App Service-filsystemet. Mer information finns i Montera Azure Storage som en lokal resurs i App Service.
Ta reda på om programmet är beroende av schemalagda jobb
Schemalagda jobb, till exempel Quartz Scheduler-uppgifter eller Unix cron-jobb, ska INTE användas med Azure App Service. Azure App Service hindrar dig inte från att distribuera ett program som innehåller schemalagda uppgifter internt. Om ditt program skalas ut kan dock samma schemalagda jobb köras mer än en gång per schemalagd period. Den här situationen kan leda till oönskade konsekvenser.
Om du vill köra schemalagda jobb i Azure kan du överväga att använda Azure Functions med en timerutlösare. Mer information finns i Timer-utlösare för Azure Functions. Du behöver inte migrera själva jobbkoden till en funktion. Funktionen kan helt enkelt anropa en URL i ditt program för att utlösa jobbet.
Kommentar
För att förhindra skadlig användning måste du förmodligen se till att jobbanropets slutpunkt kräver autentiseringsuppgifter. I det här fallet måste utlösarfunktionen ange autentiseringsuppgifterna.
Avgör om en anslutning till lokalt behövs
Om ditt program behöver har åtkomst till någon av dina lokala tjänster måste du etablera en av Azures anslutningstjänster. Mer information finns i Ansluta ett lokalt nätverk till Azure. Alternativt måste du omstrukturera programmet för att använda allmänt tillgängliga API:er som dina lokala resurser exponerar.
Ta reda på om JMS-köer eller -ämnen (Java Message Service) används
Om ditt program använder JMS-köer eller -ämnen måste du migrera dem till en extern JMS-server. Azure Service Bus och AMQP (Advanced Message Queueing Protocol) kan vara en bra migreringsstrategi för de som använder JMS. Mer information finns i Använda Java Message Service 1.1 med Azure Service Bus Standard och AMQP 1.0.
Om JMS beständiga arkiv har konfigurerats måste du avbilda konfigurationen och tillämpa den efter migreringen.
Kontrollera om ditt program använder WebSphere-specifika API:er
Om ditt program använder WebSphere-specifika API:er måste du omstrukturera programmet för att INTE använda dem. Red Hat Migration Toolkit for Apps kan hjälpa dig att ta bort och omstrukturera dessa beroenden.
Ta reda på om ditt program använder entitetsbönor eller DMP-bönor med EJB 2.x-format
Om programmet använder entitetsbönor eller CMP-böner med EJB 2.x-format behöver du omstrukturera programmet och ta bort dessa beroenden.
Avgöra om javaEE-programklientfunktionen används
Om du har klientprogram som ansluter till ditt (server)-program med hjälp av javaEE-programklientfunktionen måste du omstrukturera både dina klientprogram och ditt (server)-program för att använda HTTP-API:er.
Ta reda på om ditt program innehåller en operativsystemsspecifik kod
Om ditt program innehåller någon kod med beroenden på värdoperativsystemet måste du omstrukturera det för att ta bort dessa beroenden. Du kan till exempel behöva ersätta all användning av /
eller \
i filsystemsökvägar med File.Separator
eller Paths.get
om programmet körs i Windows.
Ta reda på om EJB-timers används
Om ditt program använder EJB-timers måste du verifiera att EJB-timerkoden kan utlösas av varje JBoss EAP-instans separat. Den här valideringen krävs eftersom varje EJB-timer utlöses på sin egen JBoss EAP-instans när din App Service skalas vågrätt.
Kontrollera om JCA-anslutningsprogram används
Om ditt program använder JCA-anslutningsappar måste du verifiera att JCA-anslutningsappen kan användas på JBoss EAP. Om JCA-implementeringen är kopplad till WebSphere måste du omstrukturera programmet och ta bort beroendet av JCA-anslutningstjänsten. Om JCA-anslutningsappen kan användas måste du lägga till JAR:erna i serverklassökvägen. Du måste också placera de nödvändiga konfigurationsfilerna på rätt plats i JBoss EAP-serverkatalogerna för att de ska vara tillgängliga.
Ta reda på om JAAS används
Om ditt program använder JAAS måste du samla in hur JAAS har konfigurerats. Om den använder en databas kan du konvertera den till en JAAS-domän på JBoss EAP. Om det är en anpassad implementering måste du verifiera att den kan användas på JBoss EAP.
Ta redan på om programmet använder en resursadapter
Om ditt program behöver ett resurskort (RA) måste det vara kompatibelt med JBoss EAP. Kontrollera om RA fungerar bra på en fristående instans av JBoss EAP genom att distribuera den till servern och konfigurera den korrekt. Om RA fungerar korrekt måste du lägga till JAR:erna i serverklasssökvägen för App Service-instansen och placera de nödvändiga konfigurationsfilerna på rätt plats i JBoss EAP-serverkatalogerna för att den ska vara tillgänglig.
Ta reda på om ditt program består av flera WAR
Om ditt program består av flera WAS så ska du behandla vart och ett av dem som separarata program och gå igenom den här guiden för varje.
Ta reda på om ditt program är paketerat som EAR
Om ditt program är paketerat som en EAR-fil bör du undersöka application.xml och ibm-application-bnd.xml filer och avbilda deras konfigurationer.
Identifiera alla externa processer och daemons som körs på produktionsservrarna
Om du har processer som körs utanför programservern, som övervaknings-daemons så behöver du eliminera dem eller migrera dem någon annanstans.
Migrering
Red Hat Migration Toolkit för appar
Red Hat Migration Toolkit for Applications är ett kostnadsfritt tillägg för Visual Studio Code. Det här tillägget analyserar programkoden och konfigurationen för att ge rekommendationer för migrering av dina Jakarta EE-program till JBoss EAP från andra appservrar, till exempel att ta bort beroenden för proprietära API:er. Tillägget ger också rekommendationer om du migrerar till molnet från en lokal plats. Mer information finns i Översikt över Migreringsverktyg för program.
Innehållet i den här guiden hjälper dig att hantera de andra komponenterna i migreringsresan, till exempel att välja rätt App Service-plantyp, externalisera sessionstillståndet och använda Azure för att hantera dina EAP-instanser i stället för JBoss-hanteringsgränssnittet.
Etablera en App Service-plan
I listan över tillgängliga tjänstplaner väljer du den plan vars specifikationer uppfyller eller överskrider specifikationerna för den aktuella produktionsmaskinvaran.
Kommentar
Om du planerar att köra mellanlagrings-/kontrollvärdesdistributioner eller använda distributionsfack måste App Service-planen innehålla denna ytterligare kapacitet. Vi rekommenderar att du använder en Premium-plan eller högre för Java-program.
Skapa och distribuera webbappar
Du måste skapa en webbapp i din App Service-plan för varje WAR-fil som distribueras till din JBoss EAP-server.
Kommentar
Även om det är möjligt att distribuera flera WAR-filer till en enda webbapp, så är det synnerligen olämpligt. Om du distribuerar flera WAR-filer till en enda webbapp, så förhindrar du varje enskilt program från att skalas enligt dess egna användningskrav. Det ökar också komplexiteten för efterföljande distributionspipelines. Om flera program måste vara tillgängliga på samma URL bör du överväga att använda en routningslösning som Azure Application Gateway.
Maven-program
Om programmet har skapats från en Maven POM-fil, så skapa webbappen och distribuera ditt program genom att använda webbapps-plugin-programmet för Maven. Mer information finns i avsnittet Konfigurera Plugin-programmet Maven i Snabbstart: Skapa en Java-app i Azure App Service.
Andra program än Maven-program
Om du inte kan använda Maven-plugin-programmet måste du etablera webbappen med andra medel, som exempelvis:
När du har skapat webbappen använder du någon av de tillgängliga distributionsmekanismerna för att distribuera ditt program. Mer information finns i Distribuera filer till App Service.
Migrera JVM-körningsalternativen
Om ditt program kräver specifika körningsalternativ, så använd den lämpligaste metoden för att ange dem. Mer information finns i avsnittet Ange Java-körningsalternativ i Distribuera och konfigurera en Tomcat-, JBoss- eller Java SE-app i Azure App Service.
Fyll i hemligheter
Använd Programinställningar när du ska lagra alla hemligheter som är specifika för ditt program. Om du tänker använda samma hemlighet eller hemligheter mellan flera program, eller om du behöver detaljerade åtkomstprinciper och granskningsfunktioner, använder du Azure Key Vault-referenser i stället. Mer information finns i Använda Key Vault-referenser som appinställningar i Azure App Service och Azure Functions.
Aktivera anpassad domän SSL
Om programmet ska vara synligt i en anpassad domän måste du mappa ditt webbprogram till det. Mer information finns i Självstudie: Mappa ett befintligt anpassat DNS-namn till Azure App Service.
Sedan måste du binda TLS/SSL-certifikatet för den domänen till apptjänstens webbapp. Mer information finns i Skydda ett anpassat DNS-namn med en TLS/SSL-bindning i Azure App Service.
Migrera datakällor, bibliotek och JNDI-resurser
Om du vill migrera datakällor följer du stegen i Konfigurera datakällor för en Tomcat-, JBoss- eller Java SE-app i Azure App Service.
Migrera eventuella ytterligare klassökvägsberoenden på servernivå. Mer information finns i Konfigurera datakällor för en Tomcat-, JBoss- eller Java SE-app i Azure App Service.
Migrera eventuella ytterligare JDNI-resurser på delad servernivå. Mer information finns i Konfigurera datakällor för en Tomcat-, JBoss- eller Java SE-app i Azure App Service.
Kommentar
Om du följer den rekommenderade arkitekturen för ett WAR per program kan du överväga att migrera klassökvägsbibliotek på servernivå och JNDI-resurser till ditt program. Om du gör det förenklas komponentstyrning och ändringshantering avsevärt. Om du vill distribuera mer än ett WAR per program bör du granska någon av våra kompletterande guider som nämns i början av den här guiden.
Migrera schemalagda jobb
Du bör åtminstone flytta dina schemalagda jobb till en virtuell Azure-dator så att de inte längre är en del av ditt program. Alternativt kan du välja att modernisera dem till händelsedrivna Java med hjälp av Azure-tjänster som Azure Functions, SQL Database och Event Hubs.
Omstart- och röktest
Slutligen måste du starta om din webbapp, så att alla konfigurationsändringar tillämpas. När omstarten är klar kontrollerar du att programmet fungerar som det ska.
Efter migreringen
Nu när du har migrerat ditt program till Azure App Service bör du kontrollera att det fungerar som förväntat. När du har gjort det har vi några rekommendationer för dig som kan göra ditt program lämpligare för molnet.
Rekommendationer
Om du valde att använda katalogen /home för fillagring bör du överväga att ersätta den med Azure Storage. Mer information finns i Montera Azure Storage som en lokal resurs i en anpassad container i App Service.
Om du har konfiguration i katalogen /home som innehåller anslutningssträng, SSL-nycklar och annan hemlig information kan du överväga att använda en kombination av Azure Key Vault och parameterinmatning med programinställningar där det är möjligt. Mer information finns i Använda Key Vault-referenser för App Service och Azure Functions och Konfigurera en App Service-app.
Överväg att använda distributionsplatser för tillförlitliga distributioner utan driftstopp. Mer information finns i Konfigurera mellanlagringsmiljöer i Azure App Service.
Utforma och implementera en DevOps-strategi. Om du vill bibehålla tillförlitligheten samtidigt som du ökar din utvecklingshastighet bör du överväga att automatisera distributioner och testning med Azure-pipelines. Mer information finns i Skapa och distribuera till Java-webbapp. Om du använder distributionsplatser kan du automatisera distributionen till ett fack och det efterföljande fackbytet. Mer information finns i avsnittet Exempel: Distribuera till ett fack i Distribuera till App Service med Azure Pipelines.
Utforma och implementera en strategi för affärskontinuitet och haveriberedskap. För verksamhetskritiska program bör du överväga en distributionsarkitektur för flera regioner. Mer information finns i Webbprogram för flera regioner med hög tillgänglighet.