WebSphere-alkalmazások migrálása JBoss EAP-ba Azure-alkalmazás szolgáltatásban

Ez az útmutató azt ismerteti, hogy mire érdemes figyelnie, ha egy meglévő WebSphere-alkalmazást szeretne migrálni, hogy a JBoss EAP használatával fusson Azure-alkalmazás szolgáltatáson.

A migrálás előtt

A sikeres migrálás biztosításához a kezdés előtt végezze el az alábbi szakaszokban leírt értékelési és leltározási lépéseket.

A leltárkiszolgáló kapacitása

Dokumentálja az aktuális üzemi kiszolgáló(ok) hardverét (memóriáját, processzorát, lemezét), valamint az átlagos és csúcsidőszaki kérelmek számát és az erőforrás-kihasználtságot. Ezekre az információkra szüksége lesz a választott migrálási útvonaltól függetlenül. Hasznos lehet például az App Service-csomag kiválasztásának útmutatója.

Az elérhető App Service-csomagszintek listája megjeleníti a memóriát, a processzormagokat, a tárterületet és a díjszabási információkat. Vegye figyelembe, hogy az App Service JBoss EAP-ja csak a Prémium V3 és az Izolált V2 App Service-csomag szintjeien érhető el.

Az összes titkos kód leltározása

Ellenőrizze az éles kiszolgálón vagy a kiszolgálókon található összes tulajdonság- és konfigurációs fájlt, hogy titkos kulcsokat és jelszavakat tartalmaz-e. Mindenképpen ellenőrizze az ibm-web-bnd.xml elemet a WAR-fájlokban. Az alkalmazásban jelszavakat vagy hitelesítő adatokat tartalmazó konfigurációs fájlok is szerepelhetnek. Ezek a fájlok a Spring Boot-alkalmazások esetében az application.properties vagy az application.yml fájlokat is tartalmazhatják.

Az összes tanúsítvány leltározása

Dokumentáljon minden, nyilvános SSL-végponthoz használt tanúsítványt. A következő parancs futtatásával megtekintheti az éles kiszolgáló(ko)n található összes tanúsítványt:

keytool -list -v -keystore <path to keystore>

Annak ellenőrzése, hogy a támogatott Java-verzió megfelelően működik-e

A JBoss EAP a Azure-alkalmazás Szolgáltatásban támogatja a Java 8-at és a 11-et. Ezért ellenőrizze, hogy az alkalmazása megfelelően működhet-e az adott támogatott verzió használatával. Ez az ellenőrzés különösen fontos, ha az aktuális kiszolgáló támogatott JDK-t használ (például az Oracle JDK-t vagy az IBM OpenJ9 rendszert).

A jelenlegi Java-verzió beszerzéséhez jelentkezzen be az éles kiszolgálóra, és futtassa a következő parancsot:

java -version

JNDI-erőforrások leltározása

Leltározzon minden JNDI-erőforrást. Egyes erőforrások, például a JMS-üzenetközvetítők áttelepítést vagy újrakonfigurálást igényelhetnek.

Az alkalmazáson belül

Vizsgálja meg a WEB-INF/ibm-web-bnd.xml fájlt és/vagy a WEB-INF/web.xml fájlt.

Adatbázis-használat meghatározása

Ha az alkalmazása adatbázisokat használ, Önnek rögzítenie kell az alábbi adatokat:

  • Az adatforrás neve.
  • A kapcsolatkészlet konfigurációja.
  • A JDBC-illesztő JAR-fájljának helye.

Határozza meg, használják-e a fájlrendszert, és ha igen, hogyan

Az alkalmazáskiszolgáló fájlrendszerének bármely használatához újrakonfigurálásra vagy bizonyos ritka esetekben architekturális módosításokra van szükség. A fájlrendszert a WebSphere megosztott moduljai vagy az alkalmazás kódja használhatja. Az alábbi forgatókönyvek némelyike vagy mindegyike igaz lehet Önre.

Csak olvasható statikus tartalom

Ha az alkalmazás jelenleg statikus tartalmat szolgáltat, szüksége lesz egy másik helyre hozzá. A statikus tartalmat célszerű az Azure Blob Storage-ba helyezni és az Azure CDN hozzáadásával biztosítani a villámgyors globális letöltést. További információ: Statikus webhely üzemeltetése az Azure Storage-ban és rövid útmutató: Azure Storage-fiók integrálása az Azure CDN-nel. A statikus tartalmat közvetlenül is üzembe helyezheti egy alkalmazáson az Azure Spring Apps Enterprise-csomagban. További információ: Webes statikus fájlok üzembe helyezése.

Dinamikusan közzétett statikus tartalom

Ha az alkalmazás engedélyezi az alkalmazás által feltöltött/előállított statikus tartalmakat, azonban a létrehozás után nem módosítható, az Azure Blob Storage és az Azure CDN fent ismertetett módon történő, egy Azure-függvénnyel közös használatával kezelheti a feltöltéseket és a CDN-frissítést. A Statikus tartalom feltöltése és CDN-előtöltése az Azure Functions szolgáltatással című témakörben megadtunk egy szabadon használható mintaimplementációt. A statikus tartalmat közvetlenül is üzembe helyezheti egy alkalmazáson az Azure Spring Apps Enterprise-csomagban. További információ: Webes statikus fájlok üzembe helyezése.

Dinamikus vagy belső tartalom

Az alkalmazás által gyakran írt és olvasott fájlok (például ideiglenes adatfájlok) vagy a csak az alkalmazás számára látható statikus fájlok esetében csatlakoztathatja az Azure Storage-t az App Service fájlrendszerébe. További információ: Azure Storage-tartalom kiszolgálása a Linuxos App Service-ben.

Annak meghatározása, hogy az alkalmazás ütemezett feladatokra támaszkodik-e

Az ütemezett feladatokat, például a Quartz Scheduler-feladatokat vagy a Unix cron-feladatokat nem szabad használni Azure-alkalmazás szolgáltatással. Azure-alkalmazás szolgáltatás nem akadályozza meg az ütemezett feladatokat tartalmazó alkalmazások belső üzembe helyezését. Ha azonban az alkalmazást horizontálisan felskálázza, ez az ütemezett feladat ütemezett időszakonként többször is lefuthat. Ez nem várt következményekkel járhat.

Ha ütemezett feladatokat szeretne végrehajtani az Azure-ban, fontolja meg az Azure Functions időzítő eseményindítóval való használatát. További információkért tekintse meg az Azure Functions időzítő eseményindítóját. Nem kell a feladat kódját egy függvénybe migrálnia. A függvény egyszerűen meghívhat egy URL-címet az alkalmazásban a feladat aktiválásához.

Megjegyzés:

A kártékony használat megelőzése érdekében valószínűleg meg kell győződnie arról, hogy a feladat meghívási végpontja megköveteli a hitelesítő adatokat. Ebben az esetben az eseményindító függvénynek meg kell adnia a hitelesítő adatokat.

Annak megállapítása, hogy szükséges-e helyszíni kapcsolat

Ha az alkalmazásnak hozzá kell férnie helyszíni szolgáltatásokhoz, ki kel építenie egy Azure-beli kapcsolati szolgáltatást. További információ: Megoldás választása a helyszíni hálózat Azure-hoz való csatlakoztatásához. Másik megoldásként újrabonthatja az alkalmazást, hogy az nyilvánosan elérhető, a helyszíni erőforrások által közzétett API-kat használjon.

Állapítsa meg, hogy használ-e Java Message Service- (JMS-) üzenetsorokat és -témákat

Ha az alkalmazása JMS-üzenetsorokat vagy -témákat használ, azokat egy külsőleg üzemeltetett JMS-kiszolgálóra kell migrálnia. Az Azure Service Bus és az Advanced Message Queueing Protocol (AMQP) remek migrálási stratégia lehet a JMS-t használóknak. További információkért lásd: A JMS használata az Azure Service Busszal és az AMQP 1.0-val.

Ha a JMS állandó tárolói konfigurálva vannak, Önnek rögzítenie kell azok konfigurációját, majd alkalmaznia a migrálás után.

Annak meghatározása, hogy az alkalmazás WebSphere-specifikus API-kat használ-e

Ha az alkalmazás WebSphere-specifikus API-kat használ, újra kell átépítenie az alkalmazást, hogy NE használja őket. A Red Hat Migration Toolkit for Apps segíthet ezeknek a függőségeknek a eltávolításában és újrabontásában.

Annak meghatározása, hogy az alkalmazás használ-e entitásbeaneket vagy EJB 2.x típusú CMP-beaneket

Amennyiben az alkalmazása használ entitásbeaneket vagy EJB 2.x típusú CMP-beaneket, újra kell bontania az alkalmazást ezen függőségek eltávolításához.

Annak meghatározása, hogy a Java Enterprise kiadás Alkalmazásügyfél szolgáltatás van-e használatban

Ha rendelkezik olyan ügyfélalkalmazásokkal, amelyek a Java Enterprise kiadás Alkalmazásügyfél funkcióval csatlakoznak a (kiszolgálói) alkalmazáshoz, újra kell átépítenie az ügyfélalkalmazásokat és a (kiszolgálói) alkalmazást is a HTTP API-k használatához.

Annak meghatározása, hogy az alkalmazás tartalmaz-e az operációs rendszerre vonatkozó kódot

Ha az alkalmazás tartalmaz a gazdagép operációs rendszeréhez tartozó függőségekkel rendelkező kódot, azt Önnek újra kell bontania a függőségek eltávolításához. Előfordulhat például, hogy a File.Separator vagy Paths.get fájlrendszerbeli útvonalakkal rendelkező /- vagy \-előfordulásokat cserélnie kell.

Annak megállapítása, hogy az alkalmazás használ-e EJB időzítőket

Ha az alkalmazás EJB időzítőket használ, ellenőriznie kell, hogy az EJB időzítőkódot minden JBoss EAP-példány egymástól függetlenül aktiválhatja-e. Erre az ellenőrzésre azért van szükség, mert amikor az App Service horizontálisan skálázódik, minden EJB-időzítő a saját JBoss EAP-példányán aktiválódik.

Annak megállapítása, hogy az alkalmazás használ-e JCA-összekötőket

Ha az alkalmazás JCA-összekötőket használ, ellenőriznie kell, hogy a JCA-összekötő használható-e a JBoss EAP-n. Ha a JCA-implementáció a WebSphere-hez van kötve, újra kell újrabontást végrehajtania az alkalmazáson, és el kell távolítania a JCA-összekötő függőségét. Ha a JCA-összekötő használható, akkor hozzá kell adnia a JAR-eket a kiszolgálói osztályúthoz. A szükséges konfigurációs fájlokat a megfelelő helyre kell helyeznie a JBoss EAP-kiszolgáló könyvtáraiban ahhoz, hogy elérhetők legyenek.

Annak megállapítása, hogy az alkalmazás használja-e a JAAS-t

Ha az alkalmazás JAAS-t használ, rögzítenie kell a JAAS konfigurálását. Ha adatbázist használ, a JBoss EAP-n JAAS-tartománysá alakíthatja. Ha egyéni implementációról van szó, ellenőriznie kell, hogy használható-e a JBoss EAP-ben.

Annak meghatározása, hogy az alkalmazás használ-e erőforrás-adaptert

Ha az alkalmazásnak erőforrás-adapterre (RA) van szüksége, kompatibilisnek kell lennie a JBoss EAP-val. Annak meghatározásához, hogy az RA megfelelően működik-e a JBoss EAP különálló példányán, üzembe helyezi a kiszolgálón, és megfelelően konfigurálja azt. Ha az RA megfelelően működik, hozzá kell adnia a JARs-eket az App Service-példány kiszolgálói osztályútvonalához, és a szükséges konfigurációs fájlokat a megfelelő helyre kell helyeznie a JBoss EAP-kiszolgáló könyvtáraiban ahhoz, hogy elérhető legyen.

Annak meghatározása, hogy az alkalmazás több WAR-fájlból áll-e

Ha az alkalmazása több WAR-fájlból áll, ezeket különálló alkalmazásként kell kezelnie, és az útmutató lépéseit egyenként elvégeznie mindegyikhez.

Annak megállapítása, hogy az alkalmazás EAR-ként van-e csomagolva

Ha az alkalmazás EAR-fájlként van csomagolva, mindenképpen vizsgálja meg az application.xml és az ibm-application-bnd.xml fájlokat, és rögzítse a konfigurációikat.

Az éles kiszolgálókon futó összes külső folyamat és démon azonosítása

Ha rendelkezik az alkalmazáskiszolgálón kívül futó folyamatokkal, például figyelési démonokkal, ezeket el kell távolítania, vagy máshová kell migrálnia.

Áttelepítés

Red Hat Migration Toolkit for Apps

A Red Hat Migration Toolkit for Applications a Visual Studio Code ingyenes bővítménye. Ez a bővítmény elemzi az alkalmazáskódot és a konfigurációt, hogy javaslatokat nyújtson a Jakarta Enterprise kiadás-alkalmazások JBoss EAP-ba történő áttelepítéséhez más alkalmazáskiszolgálókról, például a védett API-k függőségeinek eltávolításához. A bővítmény javaslatokat is nyújt, ha helyszíni felhőbe migrál. További információ: Migration Toolkit for Applications – áttekintés.

Az útmutató tartalma segít a migrálási folyamat egyéb összetevőinek kezelésében, például a megfelelő App Service-csomag típusának kiválasztásában, a munkamenet állapotának külsővé tétele, valamint az Azure használata az EAP-példányok JBoss Management-felület helyett történő kezeléséhez.

App Service-csomag kiépítése

Az elérhető szolgáltatáscsomagok listájából válassza ki azt a csomagot, amelynek specifikációi megfelelnek vagy túllépik az aktuális éles hardver specifikációit.

Megjegyzés:

Ha előkészítési/Canary-alapú üzemet szeretne futtatni, vagy üzembe helyezési pontokat tervez használni, az App Service-csomagnak tartalmaznia kell az ehhez megfelelő plusz kapacitást. Java-alkalmazásokhoz Premium vagy magasabb szintű csomag használatát javasoljuk.

Hozza létre az app service-csomagot.

Webalkalmazás(ok) létrehozása és üzembe helyezése

A JBoss EAP-kiszolgálón üzembe helyezett összes WAR-fájlhoz létre kell hoznia egy webalkalmazást az App Service-csomagban.

Megjegyzés:

Habár több WAR-fájlt is üzembe helyezhet egyetlen webalkalmazásban, ez nagyon nem javasolt. Több WAR-fájl egyetlen webalkalmazásban való üzembe helyezése megakadályozza, hogy az alkalmazások saját használati igényeiknek megfelelően legyenek méretezhetők. Emellett összetettebbé teszi a későbbi üzembe helyezési folyamatokat is. Ha több alkalmazásnak is elérhetőnek kell lennie egyetlen URL-címen, érdemes lehet olyan útválasztási megoldást használnia, mint például az Azure Application Gateway.

Maven-alkalmazások

Ha az alkalmazása egy Maven POM-fájl alapján készült, használja a Maven webalkalmazási beépülő modulját a webalkalmazás létrehozásához és az alkalmazás üzembe helyezéséhez. További információt a Rövid útmutató Maven beépülő moduljánakkonfigurálása című szakaszában talál: Java-alkalmazás létrehozása Azure-alkalmazás szolgáltatásban.

Nem Maven-alkalmazások

Ha nem tudja használni a Maven beépülő modulját, a webalkalmazást más mechanizmusokkal kell kiépítenie, például:

A webalkalmazás létrehozása után használja az egyik elérhető üzembehelyezési mechanizmust az alkalmazás üzembe helyezéséhez. További információ:Fájlok üzembe helyezése az App Service-ben.

JVM futtatókörnyezeti beállítások migrálása

Ha az alkalmazáshoz konkrét futtatókörnyezeti beállítások szükségesek, a legmegfelelőbb mechanizmussal adja meg azokat. További információ: Java-alkalmazás konfigurálása Azure-alkalmazás szolgáltatáshoz című Java-futtatókörnyezet beállításainak beállítása című szakasz.

Titkos kulcsok feltöltése

Az alkalmazásbeállításokkal tárolhatja az alkalmazáshoz tartozó összes titkos kódot. Ha ugyanazt a titkos kulcsot vagy titkos kódot szeretné használni több alkalmazás között, vagy részletes hozzáférési szabályzatokat és naplózási képességeket igényel, használja helyette az Azure Key Vault-hivatkozásokat. További információ: Java-alkalmazás konfigurálása Azure-alkalmazás szolgáltatáshoz – KeyVault-hivatkozások használata című szakasz.

Egyéni tartomány és SSL konfigurálása

Ha az alkalmazás látható egy egyéni tartományban, le kell képeznie rá a webalkalmazást. További információ: Oktatóanyag: Meglévő egyéni DNS-név leképezése Azure-alkalmazás szolgáltatásra.

Ezután a tartományhoz tartozó TLS/SSL-tanúsítványt az App Service Web App alkalmazáshoz kell kötnie. További információ: Egyéni DNS-név védelme TLS-/SSL-kötéssel a Azure-alkalmazás Szolgáltatásban.

Adatforrások, könyvtárak és JNDI-erőforrások migrálása

Az adatforrások migrálásához kövesse a Java-alkalmazás konfigurálása Azure-alkalmazás Szolgáltatáshoz című szakasz adatforrások konfigurálása szakaszának lépéseit.

A további kiszolgálószintű classpath-függőségek áttelepítése a Java-alkalmazás konfigurálása Azure-alkalmazás Szolgáltatáshoz című JBoss EAP szakasz utasításait követve.

További megosztott kiszolgálószintű JDNI-erőforrások migrálása. További információt a Java-alkalmazás konfigurálása Azure-alkalmazás szolgáltatáshoz című JBoss EAP-szakaszbantalál.

Megjegyzés:

Ha alkalmazásonként egy WAR ajánlott architektúráját követi, fontolja meg a kiszolgálószintű classpath-kódtárak és JNDI-erőforrások áttelepítését az alkalmazásba. Ez jelentősen leegyszerűsíti az összetevők szabályozását és a változáskezelést. Ha alkalmazásonként egynél több WAR-t szeretne üzembe helyezni, tekintse át az útmutató elején említett útikalauzok egyikét.

Ütemezett feladatok migrálása

Legalább át kell helyeznie az ütemezett feladatokat egy Azure-beli virtuális gépre, hogy azok többé ne legyenek az alkalmazás részei. Alternatív megoldásként dönthet úgy is, hogy azokat eseményvezérelt Java-ra modernizálja olyan Azure-szolgáltatások használatával, mint az Azure Functions, az SQL Database és az Event Hubs.

Újraindítás és buildtesztelés

Utolsó lépésként újra kell indítania a webalkalmazást a konfigurációs módosítások alkalmazásához. Az újraindítást követően ellenőrizze, hogy az alkalmazás megfelelően fut-e.

A migrálás után

Most, hogy migrálta az alkalmazást Azure-alkalmazás Szolgáltatásba, ellenőriznie kell, hogy az a várt módon működik-e. Ezután az alábbi ajánlásokkal natívabbá teheti az alkalmazást a felhő számára.

Javaslatok