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. 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 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. Om de verschillen tussen JBoss EAP en JBoss EAP voor OpenShift te begrijpen, zie Vergelijking: 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 gebouwde 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 op Azure Red Hat OpenShift.
    • Bouw een applicatie-image met de eap-s2i-build-sjabloon. 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 voor meer informatie de referentiedocumentatie voor EAP Operator op Red Hat.

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 bij 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.
  • Om te weten hoeveel CPU-shares de container nodig heeft.

Het is mogelijk om het formaat van knooppuntgroepen in Azure Red Hat OpenShift te wijzigen. Zie Een cluster vergroten of verkleinen--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. 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 Secret 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 voor meer informatie TLS-configuratie in OpenShift Container Platform(replace) in de Red Hat-documentatie.

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 bijbehorende JNDI-naam hebben waarmee JPA exemplaren van correct aan een specifieke database kan binden. Zie Datasource Management in de Red Hat-documentatie voor meer informatie over JNDI-resources en -databases. Andere aan JNDI gerelateerde resources, zoals ActiveMQ Artemis-berichtbrokers, moeten mogelijk worden gemigreerd of opnieuw geconfigureerd. Zie Messaging configureren in de Red Hat-documentatie voor meer informatie over de configuratie van ActiveMQ Artemis.

Bepalen of sessiereplicatie wordt gebruikt

Als uw applicatie afhankelijk is van sessiereplicatie, met of zonder Infinispan, heeft 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 ha- of full-ha-profielen 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 High Availability 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 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?

Raadpleeg 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 De JBoss EAP voor OpenShift-image configureren voor uw Java-applicatie in de Red Hat-documentatie voor meer informatie.

Bepaal of een on-premisesverbinding nodig is

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 on-premises netwerk verbinden met Azure voor meer informatie. Als alternatief moet u uw toepassing herstructureren zodat deze gebruikmaakt van openbaar beschikbare API's die door uw on-premises resources beschikbaar worden gesteld.

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 beheren met behulp van dezelfde technieken zoals 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 elk gebruik van of in bestandssysteempaden vervangen door of als uw toepassing op Windows wordt uitgevoerd.

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.

Houd rekening met vereisten voor taakverdeling

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

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 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 deze later zelf wilt implementeren. Zie voor meer informatie Hoofdstuk 2. Bouw en voer een Java-applicatie uit op de JBoss EAP for OpenShift-image in de Red Hat-documentatie.

Postmigratie

Zodra u de migratiedoelstellingen hebt bereikt die u in de stap pre-migratie hebt gedefinieerd, voert u end-to-endacceptatietests 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. Voor informatie over het realiseren van uw schaaloplossing, zie Automatisch schalen toepassen op een OpenShift Container Platform-cluster in de OpenShift-documentatie.

  • Mogelijk wilt u meer configuratie uitvoeren op de Application Gateway. Zie Application Gateway-configuratieoverzicht voor meer informatie.

  • Uw netwerktopologie verbeteren met geavanceerde taakverdelingsservices. Zie Services voor taakverdeling 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 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 de documentatie voor Azure DevOps 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 handleiding Aan de slag met het integreren van Microsoft Entra ID met toepassingen voor meer informatie.