JBoss EAP-alkalmazások migrálása az Azure App Service-ben található JBoss EAP-be

Ez az útmutató azt ismerteti, hogy mire érdemes figyelnie, ha egy meglévő JBoss EAP-alkalmazást szeretne migrálni egy Azure-alkalmazás szolgáltatáspéldány JBoss EAP-ján való futtatáshoz.

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 a csomópontkészletben lévő virtuális gépek méretének, a tároló által használandó memória mennyiségének és a tároló által igényelt processzormegosztások számának kiválasztásában.

A csomópontkészletek átméretezhetők az AKS-ben. További információ: Csomópontkészletek átméretezése az Azure Kubernetes Service-ben (AKS).

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

Ellenőrizze az éles kiszolgáló(k) minden tulajdonságát és konfigurációs fájlját titkos kódokhoz és jelszavakhoz. Mindenképpen ellenőrizze a jboss-web.xml elemet a WAR-fájlokban. Az alkalmazásban jelszavakat vagy hitelesítő adatokat tartalmazó konfigurációs fájlok is szerepelhetnek.

Vegye fontolóra a titkos kulcsok Azure Key Vaultban való tárolását. További információ: Azure Key Vault – alapvető fogalmak.

Key Vault-titkos kulcsokat használhat az App Service-példányban Key Vault-hivatkozásokkal. A Key Vault-hivatkozások lehetővé teszik a titkos kulcsok használatát az alkalmazásban, miközben azok biztonságban és titkosítva maradnak. További információ: Key Vault-hivatkozások használata az App Service-hez és az Azure Functionshez.

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

Az Azure-beli virtuális gépeken futó JBoss EAP használatához a Java támogatott verziója szükséges. A JDK használható verziójával kapcsolatos útmutatásért tekintse meg a Támogatott konfigurációk című témakört a Red Hat dokumentációjában.

Megjegyzés:

Ez az ellenőrzés különösen fontos, ha az aktuális kiszolgáló egy nem támogatott JDK-n fut (például az Oracle JDK-n vagy az IBM OpenJ9 rendszeren).

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

java -version

Külső források leltározása

A külső erőforrások (például adatforrások, JMS-üzenetközvetítők és hasonlók) a Java Naming and Directory Interface-en (JNDI) keresztül injektálhatók. Az ilyen erőforrások némelyikéhez migrálásra vagy újrakonfigurálásra lehet szükség.

Az alkalmazáson belül

Vizsgálja meg a WEB-INF/jboss-web.xml és/vagy WEB-INF/web.xml fájlokat. Keressen <Resource> elemeket a <Context> elemen belül.

Adatforrások

Az adatforrások olyan JNDI-erőforrások, amelyek type attribútuma javax.sql.DataSource értékre van állítva. Minden adatforráshoz jegyezze fel az alábbi adatokat:

  • Mi az adatforrás neve?
  • Milyen a kapcsolatkészlet konfigurációja?
  • Hol található a JDBC-illesztőprogram JAR-fájlja?

További információkért tekintse meg a JBoss EAP-dokumentáció a JBoss EAP adatforrásokat ismertető szakaszát.

Minden egyéb külső forrás

Ebben az útmutatóban nem tudunk dokumentálni minden lehetséges külső függőséget. Az Ön csapatának felelőssége, hogy ellenőrizze azt, hogy az alkalmazás minden külső függősége megvalósítható a migrálás után.

Annak meghatározása, hogy az alkalmazás munkamenet-replikációt használ-e

Ha az alkalmazás munkamenet-replikációt használ, el kell távolítania ezt a függőséget az alkalmazásból. Az App Service nem teszi lehetővé, hogy a példányok közvetlenül kommunikáljanak egymással.

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 használhatják JBoss EAP-modulok vagy az alkalmazás kódja. Az alábbi szakaszokban leírt forgatókönyvek némelyikével vagy mindegyikével találkozhat.

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 használhatja az App Service-csomaghoz társított helyi fájltárolót. További információ: Az operációs rendszer funkciói a Azure-alkalmazás szolgáltatásban és a Azure-alkalmazás szolgáltatás fájlrendszerének ismertetése.

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.

Leltározza az éles kiszolgálón(ok) futó ütemezett feladatokat az alkalmazáskódon belül vagy kívül.

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 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őrizze, hogy használhatja-e a JCA-összekötőt a JBoss EAP-n. Ha használhatja a JCA-összekötőt a JBoss EAP-n, akkor ahhoz, hogy elérhető legyen, hozzá kell adnia a JARs-eket a kiszolgáló 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.

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

Ha az alkalmazás használja a JAAS-t, rögzítenie kell a JAAS konfigurációjá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 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ása EAR-fájlként van csomagolva, mindenképpen ellenőrizze az application.xml fájlt, és rögzítse a konfigurációt.

Megjegyzés:

Ha az App Service-erőforrások jobb kihasználása érdekében egymástól függetlenül szeretné méretezni az egyes webalkalmazásokat, akkor külön webalkalmazásokra kell bontania az EAR-t.

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.

Helyszíni tesztelés végrehajtása

A tárolólemezképek létrehozása előtt migrálja az alkalmazást az App Service-ben használni kívánt JDK- és JBoss EAP-verziókba. Tesztelje alaposan az alkalmazást kompatibilitásának és teljesítményének biztosítása érdekében.

JBoss EAP az App Service szolgáltatással kapcsolatos megjegyzésekhez

Ha JBoss EAP-t használ az App Service-ben, mindenképpen vegye figyelembe az alábbi megjegyzéseket.

  • JBoss EAP felügyeleti konzol: A JBoss webkonzol nem érhető el az App Service-ben. Ehelyett az Azure Portal biztosítja az alkalmazás felügyeleti API-jait, és az Azure CLI, az Azure Maven beépülő modul vagy más Azure fejlesztői eszközök használatával kell üzembe helyeznie.

  • Tranzakciók: Az alkalmazáspéldányok állapot nélküli módon futnak, így a Transactions API jelenleg nem támogatott. További információ: A JBoss EAP tranzakcióinak kezelése a Red Hat dokumentációjában.

  • Felügyelt tartomány mód: Többkiszolgálós éles környezetben a JBoss EAP felügyelt tartománymódja központosított felügyelt képességeket kínál. Az App Service-en futó JBoss EAP esetében azonban az App Service platform felel a kiszolgálópéldányok konfigurációjáért és felügyeletéért. Az App Service nem igényli a JBoss EAP felügyelt tartománymódját. A tartomány mód jó választás a virtuális gépeken alapuló többkiszolgálós üzemelő példányokhoz. További információ: A felügyelt tartományokról a Red Hat dokumentációjában.

  • Kiszolgálók közötti fürtözés: 2022. március 15-étől a JBoss EAP fürtözött üzembe helyezése nyilvános előzetes verzióban támogatott. Ez a támogatás azt jelenti, hogy már nem kell eltávolítania a következő funkciókat az alkalmazásokból, mielőtt üzembe helyezhetné őket az App Service-ben:

    • Állapotalapú munkamenet bab.
    • Elosztott tranzakciók.
    • Hasonló funkciók, amelyek példányok közötti kommunikációt vagy magas rendelkezésre állást igényelnek.

    További információ: A Java-alkalmazás konfigurálása Azure-alkalmazás szolgáltatáshoz című JBoss EAP-ben elérhető kiadási közlemény és fürtszolgáltatás.

Á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ás kódját és konfigurációját, hogy javaslatokat nyújtson a felhőbe való helyszíni migráláshoz. 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.

Azure-alkalmazás szolgáltatás kiépítése JBoss EAP-futtatókörnyezethez

Az alábbi parancsokkal hozzon létre egy erőforráscsoportot és egy Azure-alkalmazás szolgáltatáscsomagot. Az App Service-csomag létrehozása után létrejön egy Linux-webalkalmazás-csomag a JBoss EAP-futtatókörnyezet használatával. JBoss EAP-webhelyeket csak PremiumV3 és IsolatedV2 App Service-csomagszinteken hozhat létre.

Győződjön meg arról, hogy a megadott környezeti változók megfelelő értékekkel rendelkeznek.

Megjegyzés:

A PremiumV3 és az IsolatedV2 egyaránt jogosult a fenntartott példányok díjszabására, ami csökkentheti a költségeket. Az App Service-csomag szintjeiről és a fenntartott példányok díjszabásáról további információt az App Service díjszabásában talál.

az group create --resource-group $resourceGroup --location eastus
az acr create --resource-group $resourceGroup --name $acrName --sku Standard
az appservice plan create \
    --resource-group $resourceGroup \
    --name $jbossAppService \
    --is-linux \
    --sku P1V2
az webapp create \
    --resource-group $resourceGroup \
    --name $jbossWebApp \
    --plan $jbossAppServicePlan \
    --runtime "JBOSSEAP|7-java8"
    #  Or use "JBOSSEAP|7-java11" if you're using Java 11

Az alkalmazás létrehozása

Hozza létre az alkalmazást a következő Maven-paranccsal.

mvn clean install -DskipTests

Az alkalmazás üzembe helyezése

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ó: Rövid útmutató: Java-alkalmazás létrehozása Azure-alkalmazás szolgáltatásban.

A JBoss EAP-alkalmazások üzembe helyezésének automatizálásához az Azure Pipelines-feladat webalkalmazáshoz vagy a GitHub Action-hez használható az Azure WebAppban való üzembe helyezéshez.

Adatforrások beállítása

Az adatforrás JBoss EAP-val való regisztrálása három alapvető lépésből áll: a JDBC-illesztőprogram feltöltése, a JDBC-illesztőprogram modulként való hozzáadása és a modul regisztrálása. További információ: Adatforrás-kezelés a JBoss EAP dokumentációjában. Az App Service állapot nélküli üzemeltetési szolgáltatás, ezért az adatforrásmodul hozzáadására és regisztrálására szolgáló konfigurációs parancsokat a tároló indításakor szkripttel kell használni és alkalmazni.

Az adatforrások beállításához kövesse az alábbi lépéseket.

  1. Szerezze be az adatbázis JDBC-illesztőprogramját.

  2. Hozzon létre egy XML-moduldefiníciós fájlt a JDBC-illesztőhöz. Az alábbi példa a PostgreSQL moduldefiníciója. Mindenképpen cserélje le az resource-root path értéket a használt JDBC-illesztőprogram elérési útjára.

    <?xml version="1.0" ?>
    <module xmlns="urn:jboss:module:1.1" name="org.postgres">
        <resources>
        <!-- ***** IMPORTANT: REPLACE THIS PLACEHOLDER *******-->
        <resource-root path="/home/site/deployments/tools/postgresql-42.2.12.jar" />
        </resources>
        <dependencies>
            <module name="javax.api"/>
            <module name="javax.transaction.api"/>
        </dependencies>
    </module>
    
  3. Helyezze a JBoss CLI-parancsokat egy jboss-cli-commands.cli nevű fájlba. A JBoss-parancsoknak hozzá kell adniuk a modult, és regisztrálniuk kell adatforrásként. Az alábbi példában a PostgreSQL JBoss CLI-parancsai láthatók.

    module add --name=org.postgres --resources=/home/site/deployments/tools/postgresql-42.2.12.jar --module-xml=/home/site/deployments/tools/postgres-module.xml
    
    /subsystem=datasources/jdbc-driver=postgres:add(driver-name="postgres",driver-module-name="org.postgres",driver-class-name=org.postgresql.Driver,driver-xa-datasource-class-name=org.postgresql.xa.PGXADataSource)
    
    data-source add --name=postgresDS --driver-name=postgres --jndi-name=java:jboss/datasources/postgresDS --connection-url=${POSTGRES_CONNECTION_URL,env.POSTGRES_CONNECTION_URL:jdbc:postgresql://db:5432/postgres} --user-name=${POSTGRES_SERVER_ADMIN_FULL_NAME,env.POSTGRES_SERVER_ADMIN_FULL_NAME:postgres} --password=${POSTGRES_SERVER_ADMIN_PASSWORD,env.POSTGRES_SERVER_ADMIN_PASSWORD:example} --use-ccm=true --max-pool-size=5 --blocking-timeout-wait-millis=5000 --enabled=true --driver-class=org.postgresql.Driver --exception-sorter-class-name=org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter --jta=true --use-java-context=true --valid-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker
    
  4. Hozzon létre egy startup_script.sh nevű indítási szkriptet, amely meghívja a JBoss CLI-parancsokat. Az alábbi példa bemutatja, hogyan hívhatja meg a jboss-cli-commands.cli fájlt. Később konfigurálja az App Service-t a szkript futtatására a példány indításakor.

    $JBOSS_HOME/bin/jboss-cli.sh --connect --file=/home/site/deployments/tools/jboss-cli-commands.cli
    
  5. Egy tetszőleges FTP-ügyfél használatával töltse fel a JDBC-illesztőprogramot, a jboss-cli-commands.cli-t, a startup_script.sh-t és a moduldefiníciót a /site/deployments/tools/címre.

  6. Konfigurálja a webhelyet a startup_script.sh futtatására a tároló indításakor. Az Azure Portalon keresse meg a Configuration > General Gépház > Indítás parancsot. Állítsa az indítási parancsmezőt a /home/site/deployments/tools/startup_script.sh értékre, majd válassza a Mentés lehetőséget.

  7. Indítsa újra a webalkalmazást, ami a konfigurációs szkript futtatását eredményezi.

  8. Frissítse az alkalmazás JTA-adatforrás-konfigurációját. Nyissa meg az alkalmazás src/main/resources/META-INF/persistence.xml fájlját, és keresse meg az <jta-data-source> elemet. Cserélje le a tartalmát az alábbi módon:

    <jta-data-source>java:jboss/datasources/postgresDS</jta-data-source>
    

Az alkalmazás létrehozása

Hozza létre az alkalmazást a következő Maven-paranccsal.

mvn clean install -DskipTests

Az alkalmazás üzembe helyezése

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ó: Rövid útmutató: Java-alkalmazás létrehozása Azure-alkalmazás szolgáltatásban.

A JBoss EAP-alkalmazások üzembe helyezésének automatizálásához az Azure Pipelines-feladat webalkalmazáshoz vagy a GitHub Action-hez használható az Azure WebAppban való üzembe helyezéshez.

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 a következő javaslatokkal teheti natívabbá a felhőben az alkalmazását.

Javaslatok