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 uit te voeren 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 bij een geslaagde migratie van een JBoss EAP-toepassing naar Azure is het selecteren van het meest geschikte migratiedoel. JBoss EAP wordt goed uitgevoerd op virtuele Azure-machines (VM's) of Azure Red Hat OpenShift.
Het VM-doel is de eenvoudigste keuze, omdat deze het meest lijkt op een on-premises implementatie. De beheer- en implementatie-ervaring voor virtuele machines is vergelijkbaar met wat u on-premises hebt. Door VM's te selecteren, kunt u modernisering uitstellen.
Red Hat OpenShift brengt geteste en vertrouwde services samen 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 de wijziging de belangrijkste factor is voor uw migratie-inspanning, kunt u een migratie op basis van een VM overwegen. In dit geval raadpleegt u 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 overwegen om een migratie op basis van Azure Red Hat OpenShift te maken. In dit geval gaat u 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
Bepaal eerst dat Azure Red Hat OpenShift het juiste implementatiedoel is. Bepaal vervolgens of de vooraf gemaakte Azure Marketplace-aanbieding al dan niet een goed uitgangspunt is. Houd rekening met de volgende punten over de vooraf gemaakte Azure Marketplace-aanbieding:
- Red Hat en Microsoft hebben deze aanbieding gemaakt om JBoss EAP snel in te richten in 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 een eap-s2i-buildsjabloon. 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 bij 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 gemaakte 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 en piekaantal aanvragen 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 servercapaciteit.
- Om u te helpen 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 het formaat van knooppuntgroepen in Azure Red Hat OpenShift te wijzigen. Zie Het formaat van een cluster wijzigen 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. Zorg ervoor dat u configuratiebestanden controleert, 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 inventarisatie van geheimen hebt, raadpleegt u de documentatie van de EAP-operator 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 inventarisatie 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
Alle migratiepaden voor JBoss EAP naar Azure Red Hat OpenShift vereisen een specifieke Java-versie, die per pad varieert. 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, kunnen migratie of herconfiguratie vereisen. Zie De configuratie van 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.
- Als deze zich in een beheerd domein bevinden, hebben de profielen voor hoge of volledige beschikbaarheid te maken met JGroups.
- Als de standalone-ha.xml of standalone-full-ha.xml configuratiebestanden zich op een zelfstandige server bevinden, hebben ze te maken met JGroups.
- Microsoft Azure biedt geen ondersteuning voor JGroups-detectieprotocollen die zijn gebaseerd op UDP multicast. Zie JBoss EAP Hoge beschikbaarheid 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 te leren hoe JBoss EAP HTTP Session State Replication doet. Zie Voor meer informatie over HTTP-sessiereplicatie in de Red Hat-documentatie.
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 die wordt uitgevoerd in Azure Red Hat OpenShift. Zie JBoss EAP configureren voor OpenShift Image for Your Java Application 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 Connect an on-premises network to Azure (Een on-premises netwerk verbinden 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 Java Message Service-wachtrijen (JMS) of -onderwerpen in gebruik zijn
Als uw toepassing JMS-wachtrijen of onderwerpen gebruikt, 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 Java Message Service 1.1 gebruiken met Azure Service Bus Standard 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 Berichten 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 afhandelen met behulp van 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 toepassing code bevat met afhankelijkheden van het host-besturingssysteem, moet u deze herstructureren om deze afhankelijkheden te verwijderen. U moet bijvoorbeeld het gebruik van /
of \
in bestandssysteempaden vervangen door File.Separator
of Paths.get
als uw toepassing wordt uitgevoerd in Windows.
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 hun 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-toepassing Gateway voor meer informatie?
Migratie
In de stappen in deze sectie wordt ervan uitgegaan dat uw analyse ertoe heeft geleid dat u besluit om de vooraf gemaakte Azure Marketplace-aanbieding te gebruiken.
De aanbieding inrichten
Zie JBoss EAP in Azure Red Hat OpenShift om de aanbieding te openen in 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 deze later zelf wilt implementeren. Zie hoofdstuk 2 voor meer informatie. Bouw en voer een Java-toepassing uit op de JBoss EAP voor OpenShift-installatiekopie 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 Automatisch schalen toepassen op een OpenShift Container Platform-cluster in de OpenShift-documentatie voor meer 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 bewaking van de prestaties van toepassingen die zijn geoptimaliseerd voor Java met Azure Monitor en Application Insights. Zie Zero Instrumentation Application Monitoring voor 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.
Azure Managed Identities gebruiken 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.
Integreer Java EE-verificatie en -autorisatie met Microsoft Entra ID. Zie De integratie van Microsoft Entra ID met aan de slag-handleiding voor toepassingen voor meer informatie.