Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez az útmutató azt ismerteti, hogy mire érdemes figyelnie, amikor egy meglévő Spring Boot-alkalmazást szeretne migrálni az Azure App Service-be.
Migráció 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.
Váltás egy támogatott platformra
Az App Service a Java SE bizonyos verzióit kínálja. A kompatibilitás biztosítása érdekében migrálja az alkalmazást az aktuális környezet egyik támogatott verziójába, mielőtt továbblép a többi lépésre. Ügyeljen arra, hogy teljes körűen tesztelje a konfigurációt. Használja a Linux-disztribúció legújabb stabil kiadását az ilyen tesztekben.
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
A Azure-alkalmazás szolgáltatásban a Java 8 bináris fájljait az Eclipse Temurin biztosítja. A Java 11- és 17-es verziójához, valamint a Java összes jövőbeli LTS-kiadásához az App Service biztosítja az OpenJDK Microsoft-buildet. Ezek a bináris fájlok ingyenesen letölthetők a következő webhelyeken:
Külső források leltározása
Azonosítsa a külső erőforrásokat, például az adatforrásokat, a JMS-üzenetközvetítőket és egyéb szolgáltatások URL-címeit. A Spring Boot-alkalmazásokban az ilyen erőforrások konfigurációja általában az src/main/directory mappában, egy általában application.properties vagy application.yml nevű fájlban található. Emellett ellenőrizze az éles telepítés környezeti változóit az összes releváns konfigurációs beállítás szempontjából.
Adatbázisok
Spring Boot-alkalmazások esetén a kapcsolati sztring általában akkor jelennek meg a konfigurációs fájlokban, ha az külső adatbázistól függ. Íme egy példa az egyik application.properties fájlból:
spring.datasource.url=jdbc:mysql://localhost:3306/mysql_db
spring.datasource.username=dbuser
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
Íme egy példa az egyik application.yaml fájlból:
spring:
data:
mongodb:
uri: mongodb://mongouser:deepsecret@mongoserver.contoso.com:27017
A lehetségesebb konfigurációs forgatókönyvekért tekintse meg a Spring Data dokumentációját:
JMS-üzenetközvetítők
Azonosítsa a használt közvetítőket vagy közvetítőket a megfelelő függőségek buildjegyzékében (általában egy pom.xml vagy build.gradle fájlban).
Az ActiveMQ-t használó Spring Boot-alkalmazások például általában a pom.xml fájlban tartalmazzák ezt a függőséget:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
A kereskedelmi közvetítőket használó Spring Boot-alkalmazások általában közvetlenül a közvetítők JMS-illesztőprogram-kódtáraitól függenek. Íme egy példa egy build.gradle fájlból:
dependencies {
...
compile("com.ibm.mq:com.ibm.mq.allclient:9.4.0.5")
...
}
Miután azonosította a használt közvetítőt vagy közvetítőket, keresse meg a megfelelő beállításokat. A Spring Boot-alkalmazásokban általában megtalálhatóak az application.properties fájlban, és application.yml fájlokat az alkalmazás könyvtárában.
Megjegyzés:
A Microsoft az elérhető legbiztonságosabb hitelesítési folyamat használatát javasolja. Az ebben az eljárásban ismertetett hitelesítési folyamat, például adatbázisok, gyorsítótárak, üzenetkezelés vagy AI-szolgáltatások esetében, nagyon nagy megbízhatóságot igényel az alkalmazásban, és más folyamatokban nem jelenik meg kockázattal. Csak akkor használja ezt a folyamatot, ha a biztonságosabb lehetőségek, mint például a jelszó nélküli vagy kulcs nélküli kapcsolatok felügyelt identitással, nem állnak rendelkezésre. A helyi gépi műveletekhez előnyben részesítse a jelszó nélküli vagy kulcs nélküli kapcsolatok felhasználói identitásait.
Íme egy ActiveMQ-példa egy application.properties fájlból:
spring.activemq.brokerurl=broker:(tcp://localhost:61616,network:static:tcp://remotehost:61616)?persistent=false&useJmx=true
spring.activemq.user=admin
spring.activemq.password=<password>
Az ActiveMQ konfigurálásával kapcsolatos további információkért tekintse meg a Spring Boot üzenetkezelési dokumentációját.
Íme egy IBM MQ-példa egy application.yaml fájlból:
ibm:
mq:
queueManager: qm1
channel: dev.ORDERS
connName: localhost(14)
user: admin
password: <password>
Az IBM MQ konfigurációjáról további információt az IBM MQ Spring-összetevők dokumentációjában talál.
Külső gyorsítótárak azonosítása
Azonosítsa a használatban lévő külső gyorsítótárakat. A Redist gyakran használják a Spring Data Redisen keresztül. Konfigurációs információkért tekintse meg a Spring Data Redis dokumentációját.
Állapítsa meg, hogy a munkamenet-adatok gyorsítótárazva lesznek-e a Spring Session-en keresztül a megfelelő konfiguráció keresésével (Java vagy XML nyelven).
Identitásszolgáltatók
Azonosítsa az alkalmazás által használt identitásszolgáltató(ka)t. Az identitásszolgáltatók konfigurálásáról az alábbiakban tájékozódhat:
- Az OAuth2 konfigurációját a Spring Security referenciájában talál.
- Az Auth0 Spring Security konfigurációját az Auth0 Spring Security dokumentációjában találja.
- A PingFederate Spring Security konfigurálásához tekintse meg az Auth0 PingFederate utasításait.
Minden egyéb külső forrás
Ebben az útmutatóban nem tudunk dokumentálni minden lehetséges külső függőséget. A csapat feladata annak ellenőrzése, hogy az alkalmazás minden külső függősége kielégíthető-e az App Service migrálása után.
A leltár titkos kódjai
Jelszavak és biztonságos sztringek
Ellenőrizzen minden tulajdonságot, konfigurációs fájlt és környezeti változót az éles üzemben, hogy nem tartalmaz-e titkos sztringeket és jelszavakat. Egy Spring Boot-alkalmazásban ezek a sztringek valószínűleg az application.properties vagy a application.yml között találhatók.
Leltártanúsítványok
Dokumentálja a nyilvános SSL-végpontokhoz vagy a háttéradatbázisokkal és más rendszerekkel való kommunikációhoz használt összes tanúsítványt. A következő parancs futtatásával megtekintheti az éles szervereken található összes tanúsítványt:
keytool -list -v -keystore <path to keystore>
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. 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ál ki, másik helyre van szüksége. Érdemes lehet statikus tartalmat áthelyezni az Azure Blob Storage-ba, és globálisan hozzáadni az Azure Front Doort a gyors letöltésekhez. További információ: Statikus webhely üzemeltetése az Azure Storage és Azure Storage-fiók integrálása az Azure Front Door.
Különleges esetek
Bizonyos éles forgatókönyvek további módosítást igényelhetnek, vagy további korlátozásokat szabhatnak ki. Bár az ilyen forgatókönyvek ritkán fordulnak elő, fontos meggyőződni arról, hogy nem alkalmazhatók az alkalmazásra, vagy helyesen oldják fel őket.
Annak meghatározása, hogy az alkalmazás ütemezett feladatokra támaszkodik-e
Ütemezett feladatok (például Quartz Scheduler- vagy Cron-feladatok) nem használhatók az App Service-szel. Az App Service 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 ütemezett feladatokat az alkalmazás folyamatán belül vagy kívül.
Annak meghatározása, hogy az alkalmazás tartalmaz-e az operációs rendszerre vonatkozó kódot
Ha az alkalmazás tartalmaz olyan kódot, amely függőségeket tartalmaz a gazdagép operációs rendszerén, akkor újra kell azt újrabontással eltávolítania a függőségek eltávolításához. Előfordulhat például, hogy a fájlrendszer elérési útjainak /\File.Separator bármilyen használatát le kell cserélnie, vagy Paths.get ha az alkalmazás Windows rendszeren fut.
Az éles kiszolgálón(ok) futó összes külső folyamat/démon azonosítása
Az alkalmazáskiszolgálón kívül futó folyamatokat, például a monitorozási démonokat, máshová kell migrálni vagy megszüntetni.
Nem HTTP-kérések vagy több port kezelésének azonosítása
Az App Service csak egyetlen HTTP-végpontot támogat egyetlen porton. Ha az alkalmazás több porton figyel, vagy a HTTP protokolltól eltérő protokollal fogadja a kéréseket, ne használja az Azure App Service-t.
Migráció
A konfiguráció paraméterezése
Győződjön meg arról, hogy minden külső erőforráskoordináta (például adatbázis-kapcsolati sztringek) és más testreszabható beállítások olvashatók a környezeti változókból. Spring Boot-alkalmazás áttelepítése esetén az összes konfigurációs beállításnak már külsőleg méretezhetőnek kell lennie. További információért lásd a Spring Boot dokumentációjának Externalized Configuration részét.
Íme egy példa, amely egy SERVICEBUS_CONNECTION_STRING környezeti változóra hivatkozik egy application.properties fájlból:
spring.jms.servicebus.connection-string=${SERVICEBUS_CONNECTION_STRING}
spring.jms.servicebus.topic-client-id=contoso1
spring.jms.servicebus.idle-timeout=10000
App Service-csomag kiépítése
Az elérhető szolgáltatáscsomagok listájában válassza ki azt a csomagot, amelynek specifikációi megfelelnek vagy meghaladják 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
Létre kell hoznia egy webalkalmazást az App Service-csomagban (futtatókörnyezeti veremként a "Java SE" elemet választva) minden futtatni kívánt végrehajtható JAR-fájlhoz.
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ó: Rövid útmutató: 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 az elérhető üzembe helyezési mechanizmusok egyikével helyezze üzembe az alkalmazást. Ha lehetséges, az alkalmazást fel kell tölteni a /home/site/wwwroot/app.jar címre. Ha nem szeretné átnevezni a JAR-t app.jar, feltölthet egy rendszerhéjszkriptet a jar futtatásához. Ezután illessze be a szkript teljes elérési útját az Indítási fájl szövegmezőbe a portál Konfiguráció szakaszában. Az indítási szkript nem abból a könyvtárból fut, ahová az el lett helyezve. Ezért mindig abszolút elérési utakat használjon az indítási szkriptben található fájlokra való hivatkozáskor (például: java -jar /home/myapp/myapp.jar).
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.
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 kötést kell létrehoznia az tartomány SSL-tanúsítványa és az App Service-webalkalmazás között. További információ: Egyéni DNS-név védelme SSL-kötéssel az Azure App Service-ben.
Háttértanúsítványok importálása
A háttérrendszerekkel (például az adatbázisokkal) való kommunikáció minden tanúsítványát elérhetővé kell tenni az App Service-ben. További információ: SSL-tanúsítvány hozzáadása az App Service-hez.
Külső erőforrás koordinátáinak és egyéb beállításainak migrálása
Kövesse az alábbi lépéseket a kapcsolati sztringek és egyéb beállítások áttelepítéséhez.
Megjegyzés:
A Konfiguráció paraméterezése szakaszban változókkal paraméterezett Spring Boot-alkalmazásbeállítások esetében ezeket a környezeti változókat meg kell határozni az alkalmazáskonfigurációban. A környezeti változókkal nem explicit módon paraméterezett Spring Boot-alkalmazásbeállításokat továbbra is felül lehet bírálni az alkalmazáskonfiguráción keresztül. Például:
spring.jms.servicebus.connection-string=${CUSTOMCONNSTR_SERVICE_BUS}
spring.jms.servicebus.topic-client-id=contoso1
spring.jms.servicebus.idle-timeout=1800000
Ütemezett feladatok migrálása
Az Azure-ban ütemezett feladatok végrehajtásához célszerű egy Azure Functions-beli időzítő eseményindítót használni. 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. Ha a feladatok végrehajtását dinamikusan kell meghívni és/vagy központilag nyomon követni, célszerű a Spring Batchet használni.
Másik lehetőségként létrehozhat egy Logic Apps-alkalmazást, amely egy Recurrence eseményindítót tartalmaz, hogy meghívhassa az URL-címet anélkül, hogy az alkalmazáson kívül kódot kellene írnia. További információ: Áttekintés – Mi az Azure Logic Apps? és Ismétlődő feladatok és munkafolyamatok létrehozása, ütemezése és futtatása az Azure Logic Apps Recurrence eseményindítójával.
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.
Az identitásszolgáltató migrálása és engedélyezése
Ha az alkalmazás hitelesítést vagy engedélyezést igényel, az alábbi útmutató segítségével győződjön meg arról, hogy az identitásszolgáltatóhoz való hozzáférésre van konfigurálva:
- Ha az identitásszolgáltató Microsoft Entra-azonosító, nincs szükség módosításra.
- Ha az identitásszolgáltató egy helyi Active Directory erdő, fontolja meg egy hibrid identitáskezelési megoldás implementálását a Microsoft Entra ID-val. További információkért tekintse meg a hibrid identitás dokumentációját.
- Ha az identitásszolgáltató egy másik helyszíni megoldás, például a PingFederate, a Microsoft Entra Connect témakör egyéni telepítésével konfigurálhatja az összevonást a Microsoft Entra-azonosítóval. Másik lehetőségként fontolja meg, hogy a Spring Security használatával használja az identitásszolgáltatót az OAuth2/OpenID Connecten vagy az SAML-n keresztül.
Ú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 az alkalmazást migrálta az Azure App Service-be, ellenőriznie kell, hogy az a várt módon működik-e. Miután végzett, van néhány javaslatunk, amelyek segítségével az alkalmazás felhőalapúbbá tehető.
Ajánlások
Ha a /home könyvtárat használja a fájlok tárolására, célszerű lehet lecserélni az Azure Storage-ra.
Ha a /home könyvtárban olyan konfigurációval rendelkezik, amely kapcsolati sztringeket, SSL-kulcsokat és egyéb titkos információkat tartalmaz, fontolja meg az Azure Key Vault és/vagy a paraméterinjektálás használatát az alkalmazásbeállításokkal , ahol lehetséges.
Üzembe helyezési pontokat is használhat, amelyek megbízható üzemelést nyújtanak, és megszüntetik az állásidőt.
Tervezzen meg és valósítson meg egy DevOps-stratégiát. Ha a fejlesztési sebesség növelése közben meg szeretné tartani a megbízhatóságot, automatizálja az üzembe helyezést és a tesztelést az Azure Pipelines szolgáltatással. Az üzembehelyezési pontok használatakor automatizálhatja az üzembe helyezést egy pontra , majd a pontcserére.
Tervezzen meg és implementáljon egy üzletmenet-folytonossági és vészhelyreállítási stratégiát. A kritikus fontosságú alkalmazásokhoz használjon többrégiós üzembe helyezési architektúrát.