Migrera JBoss EAP-program till Azure Red Hat OpenShift

Den här guiden beskriver vad du bör känna till när du vill migrera ett befintligt JBoss EAP-program som ska köras på Azure Red Hat OpenShift.

Före migrering

För att säkerställa en lyckad migrering slutför du de utvärderings- och inventeringssteg som beskrivs i följande avsnitt innan du börjar.

Se till att målet är rätt mål för migreringsarbetet

Det första steget i en lyckad migrering av ett JBoss EAP-program till Azure är att välja det lämpligaste migreringsmålet. JBoss EAP fungerar bra på virtuella Azure-datorer (VM) eller Azure Red Hat OpenShift.

Målet för den virtuella datorn är det enklaste valet, eftersom det mest liknar en lokal distribution. Den administrativa upplevelsen och distributionen för virtuella datorer motsvarar det du har lokalt. Om du väljer virtuella datorer kan du skjuta upp moderniseringen.

Red Hat OpenShift sammanför testade och betrodda tjänster för att minska friktionen med att utveckla, modernisera, distribuera, köra och hantera program. Azure Red Hat OpenShift bygger på Kubernetes. Azure Red Hat OpenShift ger en konsekvent upplevelse i offentliga moln, lokalt, hybridmoln eller gränsarkitektur.

Om minimering av ändringar är den viktigaste faktorn för migreringen bör du överväga en VM-baserad migrering. I det här fallet kan du läsa Migrera JBoss EAP-program till JBoss EAP på virtuella Azure-datorer. Om du kan tolerera att konvertera ditt program till att köras i Red Hat OpenShift för att minska körningskostnaden bör du överväga en Azure Red Hat OpenShift-baserad migrering. I det här fallet fortsätter du med Migrera JBoss EAP-program till JBoss EAP på Azure Red Hat OpenShift. Information om skillnaderna mellan JBoss EAP och JBoss EAP för OpenShift finns i Jämförelse: JBoss EAP och JBoss EAP för OpenShift.

Avgöra om det fördefinierade Azure Marketplace-erbjudandet är en bra utgångspunkt

Bestäm först att Azure Red Hat OpenShift är rätt distributionsmål. Bestäm sedan om det fördefinierade Azure Marketplace-erbjudandet är en bra utgångspunkt. Tänk på följande om det fördefinierade Azure Marketplace-erbjudandet:

  • Red Hat och Microsoft skapade det här erbjudandet för att snabbt kunna etablera JBoss EAP på Azure Red Hat OpenShift.
  • På hög nivå automatiserar erbjudandet följande steg åt dig.
    • Installera EAP-operatorn på Azure Red Hat OpenShift.
    • Skapa en programbild med eap-s2i-build-mall. Mer information om S2I (Source-to-image) finns i Använda OpenJDK 11 source-to-image för OpenShift.
    • Distribuera Java-programmet med EAP-operatorn. Mer information finns i referensdokumentationen för EAP-operatör på Red Hat.

Om du inte använder det fördefinierade Azure Marketplace-erbjudandet måste du lära dig hur du använder EAP-operatören direkt. Att hantera operatorn ligger utanför omfånget för den här artikeln. Den fullständiga dokumentationen för EAP-operatören finns på Red Hat.

Resten av det här avsnittet innehåller några saker att tänka på när du bestämmer dig för att använda det fördefinierade Azure Marketplace-erbjudandet eller att använda operatören direkt.

Avgöra om JBoss EAP-versionen är kompatibel

Din befintliga JBoss EAP-version måste vara en av de versioner som stöds av operatorn. Mer information finns i Versionkompatibilitet och support i Red Hat-dokumentationen.

Lagerserverkapacitet

Dokumentera maskinvaran (minne, CPU, disk) för de aktuella produktionsservrarna och det genomsnittliga och högsta antalet begäranden och resursanvändningen. Du behöver den här informationen oavsett vilken migreringsväg du väljer. Följande aspekter, och mer, drar nytta av att ha en detaljerad inventering av serverkapaciteten.

  • För att hjälpa dig att välja storlek på de virtuella datorerna i nodpoolen.
  • För att förstå mängden minne som ska användas av containern.
  • För att veta hur många CPU-resurser containern behöver.

Det går att ändra storlek på nodpooler i Azure Red Hat OpenShift. Mer information finns i Ändra storlek på ett kluster – Microsoft Azure i Red Hat-dokumentationen.

Inventera alla hemligheter

Innan tekniker för konfiguration som en tjänst, till exempel Azure Key Vault, fanns det inget väldefinierat koncept för hemligheter. I stället hade du skilda uppsättningar konfigurationsinställningar som fungerade som det vi nu kallar hemligheter. Med appservrar som JBoss EAP finns dessa hemligheter i många olika konfigurationsfiler och konfigurationslager. Kontrollera alla egenskaper och konfigurationsfiler på produktionsservrarna efter hemligheter och lösenord. Kontrollera konfigurationsfiler som custom-config.xml eller jboss-web.xml i dina program. Konfigurationsfiler som innehåller lösenord eller autentiseringsuppgifter kan också finnas i ditt program. Mer information finns i Grundläggande koncept för Azure Key Vault.

När du har en gedigen inventering av hemligheter kan du läsa EAP-operatörsdokumentationen om hemligheter. Mer information finns i Skapa en hemlighet i Red Hat-dokumentationen.

Inventera alla certifikat

Dokumentera alla certifikat som används för offentliga SSL-slutpunkter. Du kan visa alla certifikat på produktionsservrarna genom att köra följande kommando:

keytool -list -v -keystore <path to keystore>

När du har en gedigen inventering av certifikat kan du konfigurera dem i Azure Red Hat OpenShift. Mer information finns i TLS-konfiguration i OpenShift Container Platform(replace) i Red Hat-dokumentationen.

Validera att Java-versionen som stöds fungerar som den ska

Alla migreringsvägar för JBoss EAP till Azure Red Hat OpenShift kräver en specifik Java-version, som varierar för varje sökväg. Du måste verifiera att programmet kan köras korrekt med den version som stöds.

Kommentar

Den här verifieringen är särskilt viktig om den aktuella servern körs på en JDK som inte stöds (till exempel Oracle JDK eller IBM OpenJ9).

Du får den aktuella Java-versionen genom att logga in på din produktionsserver och köra följande kommando:

java -version

Inventera JNDI-resurser

Inventera alla JNDI-resurser. Till exempel kan datakällor som databaser, ha ett associerat JNDI-namn som gör det möjligt för JPA att korrekt binda instanser av EntityManager till en viss databas. Mer information om JNDI-resurser och databaser finns i Datasource Management i Red Hat-dokumentationen. Andra JNDI-relaterade resurser, till exempel ActiveMQ Artemis-meddelandeköer, kan kräva migrering eller omkonfiguration. Mer information om ActiveMQ Artemis-konfiguration finns i Konfigurera meddelanden i Red Hat-dokumentationen.

Fastställ om sessionsreplikering används

Om programmet förlitar sig på sessionsreplikering, med eller utan Infinispan, har du tre alternativ:

  • Infinispan fungerar bra på virtuella Azure-datorer, men om du använder en profil som tillhandahåller funktioner med hög tillgänglighet bör du vara medveten om JGroups-konfigurationen . Avgör om systemet fungerar som en hanterad domän eller fristående server.
    • Om i en hanterad domän hanterar ha - eller full-ha-profilerna JGroups.
    • Om konfigurationsfilerna fristående-ha.xml eller standalone-full-ha.xml på en fristående server hanterar JGroups.
    • Microsoft Azure stöder inte JGroups-identifieringsprotokoll som baseras på UDP multicast. Mer information finns i Använda hög tillgänglighet för JBoss EAP i Microsoft Azure i Red Hat-dokumentationen.
  • Omstrukturera ditt program att använda en databas för sessionshantering.
  • Omstrukturera ditt program att externalisera sessionen till Azure Redis-tjänsten. Mer information finns i Azure Cache for Redis.

För alla dessa alternativ är det en bra idé att behärska hur JBoss EAP utför HTTP-sessionstillståndsreplikering. Mer information finns i Om HTTP-sessionsreplikering i Red Hat-dokumentationen.

Dokumentets datakällor

Om ditt program använder några databaser måste du samla in följande information:

  • What is the datakällans namn?
  • Vad är konfigurationen för anslutningspoolen?
  • Var hittar jag JAR-filen för JDBC-drivrutinen?

Mer information om JDBC-drivrutiner i JBoss EAP finns i Datasource Management i Red Hat-dokumentationen.

Avgöra om JBoss EAP har anpassats

Fastställ vilken av följande anpassningar som har gjorts och registrera vad som har gjorts.

  • Har startskripten ändrats? Sådana skript omfattar värd, eap_env, fristående och domän.
  • Finns det några speciella parametrar som skickas till JVM?
  • Har JAR lagts till i server-classpath?

Dessa anpassningar måste registreras i containeravbildningen som körs på Azure Red Hat OpenShift. Mer information finns i Konfigurera JBoss EAP för OpenShift-avbildning för Ditt Java-program i Red Hat-dokumentationen.

Avgör om en anslutning till lokalt behövs

Om ditt program behöver har åtkomst till någon av dina lokala tjänster måste du etablera en av Azures anslutningstjänster. Mer information finns i Välj en lösning för att ansluta ett lokalt nätverk till Azure. Alternativt måste du omstrukturera programmet för att använda allmänt tillgängliga API:er som dina lokala resurser exponerar.

Ta reda på om JMS-köer eller -ämnen (Java Message Service) används

Om ditt program använder JMS-köer eller ämnen kanske du vill migrera dem till en externT värdbaserad JMS-server. Azure Service Bus och Advanced Message Queueing Protocol kan vara en bra migreringsstrategi för de som använder JMS. Mer information finns i Använda JMS med Azure Service Bus och AMQP 1.0.

Om JMS beständiga arkiv har konfigurerats måste du avbilda konfigurationen och tillämpa den efter migreringen.

Mer information finns i Konfigurera meddelanden i Red Hat-dokumentationen.

Fastställ om du använder dina egna anpassade Delade Java EE-bibliotek

Om du använder funktionen med Delade Java EE-bibliotek så har du två alternativ:

  • Återför programkoden för att ta bort alla beroenden i dina bibliotek, och inkludera i stället funktionerna direkt i programmet.
  • Lägg till biblioteken till server-classpath.

Du kan hantera dessa bibliotek med samma tekniker som beskrivs i avsnittet Kontrollera om JBoss EAP har anpassats .

Ta reda på om ditt program innehåller en operativsystemsspecifik kod

Om programmet innehåller en kod med beroenden i värdoperativsystemet måste du omstrukturera det för att ta bort dessa beroenden. Du kan exempelvis bli tvungen att ersätta all användning av / eller \ i filsystemets sökvägar med File.Separator eller Paths.get.

Azure Red Hat OpenShift körs på OpenShift 4 med Red Hat Enterprise Linux CoreOS (RHCOS) som operativsystem för alla kontrollplans- och arbetsnoder. All OS-specifik kod måste vara kompatibel med RHCOS.

Ta reda på om ditt program består av flera WAR

Om ditt program består av flera WAS så ska du behandla vart och ett av dem som separarata program och gå igenom den här guiden för varje.

Ta reda på om ditt program är paketerat som EAR

Om ditt program paketeras som en EAR-fil bör du samla in deras konfigurationer.

Identifiera alla externa processer och daemons som körs på produktionsservrarna

Om du har processer som körs utanför programservern, som övervaknings-daemons så behöver du eliminera dem eller migrera dem någon annanstans.

Konto för belastningsutjämningskrav

Det bästa sättet att ta hänsyn till belastningsutjämning är att använda App Gateway-integreringen. Mer information finns i Vad är Azure Application Gateway?

Migrering

Stegen i det här avsnittet förutsätter att din analys har lett till att du bestämmer dig för att använda det fördefinierade Azure Marketplace-erbjudandet.

Få tillgång till erbjudandet

Information om hur du öppnar erbjudandet i Azure-portalen finns i JBoss EAP på Azure Red Hat OpenShift. Välj Skapa och följ sedan anvisningarna i erbjudandet.

Migrera dina program

Erbjudandet stöder S2I-processen (Source-to-Image) för att skapa och köra ett Java-program på JBoss EAP för OpenShift-avbildningen. Red Hat har ett exempel som visar hur du gör det manuellt om du vill distribuera senare själv. Mer information finns i Kapitel 2. Skapa och kör ett Java-program på JBoss EAP för OpenShift-avbildningen i Red Hat-dokumentationen.

Efter migreringen

När du har nått de migreringsmål som du definierade i steget före migreringen, så utför några godkännandetester från slutpunkt till slutpunkt för att se att allt fungerar som förväntat. Information om några potentiella förbättringar efter migreringen finns i följande artiklar: