JBoss EAP-toepassingen migreren naar Azure Red Hat OpenShift
In deze handleiding wordt beschreven waar u rekening mee moet houden wanneer u een bestaande JBoss EAP-toepassing wilt migreren om te worden uitgevoerd op Azure Red Hat OpenShift.
Premigratie
Voltooi voordat u begint de evaluatie- en inventarisstappen die in de volgende secties worden beschreven om een geslaagde migratie te garanderen.
Zorg ervoor dat het doel het juiste doel is voor uw migratie-inspanning
De eerste stap in een geslaagde migratie van een JBoss EAP-toepassing naar Azure is het selecteren van het meest geschikte migratiedoel. JBoss EAP werkt goed op virtuele Azure-machines (VM's) of Azure Red Hat OpenShift.
Het VM-doel is de eenvoudigste keuze, omdat dit het meest lijkt op een on-premises implementatie. De beheer- en implementatie-ervaring voor virtuele machines is vergelijkbaar met wat u on-premises hebt. Als u VM's selecteert, kunt u modernisering uitstellen.
Red Hat OpenShift combineert geteste en vertrouwde services om de wrijving van het ontwikkelen, moderniseren, implementeren, uitvoeren en beheren van toepassingen te verminderen. Azure Red Hat OpenShift is gebouwd op Kubernetes. Azure Red Hat OpenShift biedt een consistente ervaring in de openbare cloud, on-premises, hybride cloud of edge-architectuur.
Als het minimaliseren van wijzigingen de belangrijkste factor is voor uw migratie, kunt u een migratie op basis van een VM overwegen. Zie in dit geval JBoss EAP-toepassingen migreren naar JBoss EAP op Azure-VM's. Als u het converteren van uw toepassing kunt tolereren om te worden uitgevoerd in Red Hat OpenShift om de runtimekosten te verlagen, kunt u een migratie op basis van Azure Red Hat OpenShift overwegen. Ga in dit geval verder met JBoss EAP-toepassingen migreren naar JBoss EAP in Azure Red Hat OpenShift. Zie Vergelijking: JBoss EAP en JBoss EAP voor OpenShift voor meer informatie over de verschillen tussen JBoss EAP en JBoss EAP voor OpenShift.
Bepalen of de vooraf gemaakte Azure Marketplace aanbieding een goed uitgangspunt is
Beslis eerst of Azure Red Hat OpenShift het juiste implementatiedoel is. Beslis vervolgens of de vooraf gemaakte Azure Marketplace aanbieding een goed uitgangspunt is. Houd rekening met de volgende punten over de vooraf samengestelde Azure Marketplace aanbieding:
- Red Hat en Microsoft hebben deze aanbieding gemaakt om JBoss EAP snel in te richten op Azure Red Hat OpenShift.
- Op hoog niveau automatiseert de aanbieding de volgende stappen voor u.
- Installeer de EAP-operator in Azure Red Hat OpenShift.
- Bouw een toepassingsinstallatiekopieën met behulp van de sjabloon eap-s2i-build. Zie OpenJDK 11 source-to-image gebruiken voor OpenShift voor meer informatie over Source-to-image (S2I).
- Implementeer de Java-toepassing met behulp van de EAP-operator. Zie de referentiedocumentatie voor EAP Operator op Red Hat voor meer informatie.
Als u de vooraf gemaakte Azure Marketplace-aanbieding niet gebruikt, moet u leren hoe u de EAP-operator rechtstreeks kunt gebruiken. Het beheersen van de operator valt buiten het bereik van dit artikel. De volledige documentatie voor de EAP-operator is beschikbaar op Red Hat.
De rest van deze sectie bevat enkele overwegingen voor het kiezen van de vooraf samengestelde Azure Marketplace aanbieding of het rechtstreeks gebruiken van de operator.
Bepalen of de JBoss EAP-versie compatibel is
Uw bestaande JBoss EAP-versie moet een van de versies zijn die door de operator worden ondersteund. Zie Versiecompatibiliteit en -ondersteuning in de Red Hat-documentatie voor meer informatie.
Servercapaciteit inventariseren
Documenteer de hardware (geheugen, CPU, schijf) van de huidige productieserver(s) en het gemiddelde aantal en piekaanvragen en het resourcegebruik. U hebt deze informatie nodig, ongeacht het migratiepad dat u kiest. De volgende aspecten, en meer, profiteren van een gedetailleerde inventarisatie van de servercapaciteit.
- Als hulp bij het selecteren van de grootte van de VM's in uw knooppuntgroep.
- Om inzicht te hebben in de hoeveelheid geheugen die door de container moet worden gebruikt.
- Als u wilt weten hoeveel CPU-shares de container nodig heeft.
Het is mogelijk om de grootte van knooppuntgroepen te wijzigen in Azure Red Hat OpenShift. Zie Het formaat van een cluster wijzigen- Microsoft Azure in de Red Hat-documentatie voor meer informatie.
Alle geheimen inventariseren
Voor de ontwikkeling van 'configuratie als een service'-technologieën zoals Azure Key Vault, was er geen goed gedefinieerd concept voor 'geheimen'. In plaats daarvan had u een set uiteenlopende configuratie-instellingen die functioneerden als wat we nu 'geheimen' noemen. Met app-servers zoals JBoss EAP bevinden deze geheimen zich in veel verschillende configuratiebestanden en configuratiearchieven. Controleer alle eigenschaps- en configuratiebestanden op de productieserver(s) op geheimen en wachtwoorden. Controleer configuratiebestanden zoals custom-config.xml of jboss-web.xml in uw toepassingen. Mogelijk bevinden zich ook in uw toepassing configuratiebestanden met wachtwoorden of referenties. Zie Basisconcepten van Azure Key Vault voor meer informatie.
Zodra u een solide inventaris van geheimen hebt, raadpleegt u de EAP Operator-documentatie met betrekking tot geheimen. Zie Een geheim maken in de Red Hat-documentatie voor meer informatie.
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>
Zodra u een solide inventaris van certificaten hebt, kunt u deze configureren in Azure Red Hat OpenShift. Zie TLS-configuratie in OpenShift Container Platform(replace) in de Red Hat-documentatie voor meer informatie.
Controleren of de ondersteunde Java-versie goed werkt
Voor alle migratiepaden voor JBoss EAP naar Azure Red Hat OpenShift is een specifieke Java-versie vereist, die per pad verschilt. U moet controleren of uw toepassing correct kan worden uitgevoerd met behulp van die ondersteunde versie.
Notitie
Deze validatie is vooral belangrijk als uw huidige server wordt uitgevoerd in 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. Gegevensbronnen zoals databases kunnen bijvoorbeeld een gekoppelde JNDI-naam hebben waarmee JPA op de juiste wijze exemplaren van EntityManager
aan een bepaalde database kan binden. Zie Datasource Management in de Red Hat-documentatie voor meer informatie over JNDI-resources en -databases. Andere JNDI-gerelateerde resources, zoals ActiveMQ Artemis-berichtbrokers, vereisen mogelijk migratie of herconfiguratie. Zie Messaging configureren in de Red Hat-documentatie voor meer informatie over de configuratie van ActiveMQ Artemis.
Bepalen of sessiereplicatie wordt gebruikt
Als uw toepassing afhankelijk is van sessiereplicatie, met of zonder Infinispan, hebt u drie opties:
- Infinispan werkt goed in virtuele Azure-machines, maar als u een profiel gebruikt dat mogelijkheden voor hoge beschikbaarheid biedt, moet u rekening houden met de JGroups-configuratie . Bepaal of uw systeem werkt als een beheerd domein of zelfstandige server.
- In een beheerd domein hebben de ha - of volledige ha-profielen betrekking op JGroups.
- Als u zich op een zelfstandige server bevindt, hebben de standalone-ha.xml - of standalone-full-ha.xml-configuratiebestanden te maken met JGroups.
- Microsoft Azure biedt geen ondersteuning voor JGroups-detectieprotocollen die zijn gebaseerd op UDP-multicast. Zie Hoge beschikbaarheid van JBoss EAP gebruiken in Microsoft Azure in de Red Hat-documentatie voor meer informatie.
- Herstructureer uw toepassing om een database te gebruiken voor sessiebeheer.
- Herstructureer uw toepassing om de sessie te externaliseren naar Azure Redis Service. Zie Azure Cache voor Redis voor meer informatie.
Voor al deze opties is het een goed idee om onder de knie te krijgen hoe JBoss EAP http-sessiestatusreplicatie doet. Zie Over HTTP-sessiereplicatie in de Red Hat-documentatie voor meer informatie.
Gegevensbronnen documenteren
Als uw toepassing gebruikmaakt van databases, moet u de volgende informatie vastleggen:
- Wat is de naam van de gegevensbron?
- Wat is de configuratie van de verbindingsgroep?
- Waar vind ik het JAR-bestand van het JDBC-stuurprogramma?
Zie Datasource Management in de Red Hat-documentatie voor meer informatie over JDBC-stuurprogramma's in JBoss EAP.
Bepalen of JBoss EAP is aangepast
Bepaal welke van de volgende aanpassingen zijn uitgevoerd en leg vast wat er is gebeurd.
- Zijn de opstartscripts gewijzigd? Dergelijke scripts omvatten host, eap_env, zelfstandig en domein.
- Zijn er specifieke parameters aan de JVM doorgegeven?
- Zijn er JAR's toegevoegd aan het classpath van de server?
Deze aanpassingen moeten worden vastgelegd in de containerinstallatiekopieën die worden uitgevoerd in Azure Red Hat OpenShift. Zie Configuring the JBoss EAP for OpenShift Image for Your Java Application (De JBoss EAP voor OpenShift-installatiekopieën voor uw Java-toepassing configureren) in de Red Hat-documentatie voor meer informatie.
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 Een oplossing kiezen voor het verbinden van een on-premises netwerk 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 JMS-wachtrijen of -onderwerpen (Java Message Service) in gebruik zijn
Als uw toepassing gebruikmaakt van JMS-wachtrijen of onderwerpen, kunt 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 JMS gebruiken met Azure Service Bus 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.
Zie Messaging configureren in de Red Hat-documentatie voor meer informatie.
Bepalen of u uw eigen aangepaste, gedeelde Java EE-bibliotheken gebruikt
Als u de functie Gedeelde Java EE-bibliotheek gebruikt, hebt u twee opties:
- Herstructureer uw toepassingscode om alle afhankelijkheden van uw bibliotheken te verwijderen en de functionaliteit in plaats daarvan rechtstreeks in uw toepassing op te nemen.
- Voeg de bibliotheken toe aan het klassepad van de server.
U kunt deze bibliotheken verwerken met dezelfde technieken als beschreven in de sectie Bepalen of JBoss EAP is aangepast .
Bepalen of uw toepassing code bevat die specifiek is voor het besturingssysteem
Als uw app code bevat met afhankelijkheden van het hostbesturingssysteem, moet u de app herstructureren om die afhankelijkheden te verwijderen. Zo moet u mogelijk de /
of \
vervangen in bestandssysteempaden met File.Separator
of Paths.get
.
Azure Red Hat OpenShift wordt uitgevoerd op OpenShift 4 met Red Hat Enterprise Linux CoreOS (RHCOS) als besturingssysteem voor alle besturingsvlak- en werkknooppunten. Elke besturingssysteemspecifieke code moet compatibel zijn met RHCOS.
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, moet u de configuraties vastleggen.
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.
Account voor taakverdelingsvereisten
De beste manier om rekening te houden met taakverdeling is door de App Gateway-integratie te gebruiken. Zie Wat is Azure Application Gateway? voor meer informatie.
Migratie
Bij de stappen in deze sectie wordt ervan uitgegaan dat uw analyse ertoe heeft geleid dat u besluit de vooraf gemaakte Azure Marketplace aanbieding te gebruiken.
De aanbieding inrichten
Zie JBoss EAP op Azure Red Hat OpenShift om de aanbieding te openen in de Azure Portal. Selecteer Maken en volg de instructies in de aanbieding.
Uw toepassingen migreren
De aanbieding ondersteunt het S2I-proces (Source-to-Image) voor het bouwen en uitvoeren van een Java-toepassing op de JBoss EAP voor OpenShift-installatiekopieën. Red Hat heeft een voorbeeld dat laat zien hoe u dit handmatig kunt doen als u later zelf wilt implementeren. Zie Hoofdstuk 2 voor meer informatie . Bouw en voer een Java-toepassing uit op de JBoss EAP voor OpenShift-installatiekopieën in de Red Hat-documentatie.
Postmigratie
Nadat u de migratiedoelstellingen hebt bereikt die u hebt gedefinieerd in de stap Voorafgaand aan de migratie, voert u een aantal end-to-end-acceptatietests uit om te controleren of alles werkt zoals verwacht. Zie de volgende artikelen voor informatie over enkele mogelijke verbeteringen na de migratie:
Schaalaanpassing implementeren. Dynamisch schalen is een belangrijke waardepropositie om de complexiteit van het gebruik van Azure Red Hat OpenShift te rechtvaardigen. Zie Automatische schaalaanpassing toepassen op een OpenShift Container Platform-cluster in de OpenShift-documentatie voor informatie over het bereiken van uw schaaloplossing.
Mogelijk wilt u meer configuratie uitvoeren op de Application Gateway. Zie Overzicht van Application Gateway-configuratie voor meer informatie.
Uw netwerktopologie verbeteren met geavanceerde taakverdelingsservices. Zie Taakverdelingsservices gebruiken in Azure voor meer informatie.
Krijg voor Java geoptimaliseerde bewaking van toepassingsprestaties met Azure Monitor en Application Insights. Zie Zero instrumentation application monitoring for Kubernetes - Azure Monitor Application Insights (Zero instrumentation application monitoring for Kubernetes - Azure Monitor Application Insights) voor meer informatie.
Implementeer uw toepassingen in uw gemigreerde Azure Red Hat OpenShift-cluster met Azure DevOps. Zie Aan de slag met Azure DevOps-documentatie voor meer informatie.
Gebruik Azure Managed Identities om geheimen te beheren en op rollen gebaseerde toegang tot Azure-resources toe te wijzen. Zie Wat zijn beheerde identiteiten voor Azure-resources? voor meer informatie.
Java EE-verificatie en -autorisatie integreren met Azure Active Directory. Zie De introductiehandleiding voor het integreren van Azure Active Directory met toepassingen voor meer informatie.