Eseguire la migrazione di applicazioni JBoss EAP a JBoss EAP in macchine virtuali di Azure

Questa guida descrive gli aspetti da tenere presenti quando si vuole eseguire la migrazione di un'applicazione JBoss EAP esistente per l'esecuzione in JBoss EAP in macchine virtuali di Azure.

Pre-migrazione

Per garantire una corretta migrazione, prima di iniziare completare i passaggi di valutazione e inventario descritti nelle sezioni seguenti.

Definire cosa si intende per "migrazione completata"

Questa guida e le offerte di Azure Marketplace corrispondenti rappresentano un punto di partenza per accelerare la migrazione dei carichi di lavoro JBoss EAP ad Azure. È importante definire l'ambito dell'attività di migrazione. Ad esempio, si sta eseguendo un trasferimento "lift-and-shift" rigoroso dall'infrastruttura esistente alle macchine virtuali di Azure? In caso affermativo, si potrebbe essere tentati di adottare un modello di migrazione "lift-and-improve".

È preferibile attenersi il più strettamente possibile all'approccio "lift-and-shift", tenendo conto delle necessarie modifiche descritte in questa guida. Definire cosa si intende per "migrazione completata", in modo da sapere quando viene raggiunto questo traguardo. Dopo aver raggiunto il "completamento della migrazione", è possibile creare uno snapshot delle macchine virtuali come descritto in Creare uno snapshot di un disco rigido virtuale. È più sicuro eseguire i miglioramenti dopo aver verificato che è possibile eseguire correttamente il ripristino dallo snapshot. In questo modo è possibile procedere senza paura di perdere lo stato di avanzamento della migrazione raggiunto finora.

Determinare se le offerte predefinite di Azure Marketplace sono un buon punto di partenza

Red Hat e Microsoft hanno collaborato per portare un set di modelli di soluzioni di Azure in Azure Marketplace per offrire un punto di partenza solido per la migrazione ad Azure. È possibile visualizzare l'elenco delle offerte nella sezione JBoss EAP in Azure Macchine virtuali di Red Hat JBoss EAP in Azure.

Per una panoramica dell'offerta predefinita di Azure Marketplace, vedere Avvio rapido: Distribuire il server JBoss EAP in una macchina virtuale di Azure usando il portale di Azure.

Se nessuna delle offerte esistenti è un buon punto di partenza, è necessario riprodurre la distribuzione usando le risorse disponibili in Azure Macchine virtuali. Per altre informazioni, vedere Che cos'è IaaS?

Determinare se la versione di JBoss EAP è compatibile

La versione JBoss EAP esistente deve essere compatibile con la versione nelle offerte IaaS (Infrastructure-as-a-Service). Le pagine portale di Azure per le offerte mostrano quali versioni di JBoss EAP sono disponibili. Per altre informazioni, vedere l'offerta JBoss EAP Cluster on VMs (Cluster JBoss EAP nelle macchine virtuali) nel portale di Azure. Se la versione JBoss EAP esistente non è compatibile con le versioni disponibili nell'offerta, è necessario riprodurre la distribuzione con le risorse IaaS di Azure. Per altre informazioni, vedere Che cos'è IaaS?

Assicurarsi di avere le licenze necessarie

Quando si usano le offerte predefinite di Azure Marketplace, è necessario avere licenze correnti da Red Hat per tutti i server JBoss EAP. Spostandoli in Azure, è possibile scegliere tra le opzioni di distribuzione seguenti per soddisfare le proprie esigenze:

  • Eseguire la distribuzione in macchine virtuali Red Hat Enterprise Linux con pagamento in base al consumo. Questa opzione è nota come pagamento in base al consumo.
  • Spostare le sottoscrizioni di Red Hat JBoss EAP e Red Hat Enterprise Linux in Azure tramite il programma Red Hat Cloud Access . Questa opzione è nota come BYOS.

In entrambe le opzioni, per la portabilità delle licenze, viene richiesto l'ID pool da Red Hat. Prima di provare le offerte, assicurarsi di disporre di questo ID.

Le offerte predefinite di Azure Marketplace includono il supporto per Red Hat Satellite per la gestione delle licenze. Per una panoramica su Red Hat Satellite, vedere Red Hat Satellite.

Nota

Se non si ha un diritto EAP, è possibile iscriversi per ottenere una sottoscrizione per sviluppatori gratuita tramite la sottoscrizione per sviluppatori Red Hat Developer per utenti singoli. Annotare i dettagli dell'account da usare come nome utente RHSM e password RHSM nelle offerte predefinite di Azure Marketplace.

I passaggi per individuare l'IDpool sono illustrati nella sezione Prerequisiti di Avvio rapido: Distribuire il server JBoss EAP in una macchina virtuale di Azure usando il portale di Azure.

Inventario della capacità dei server

Documentare l'hardware (memoria, CPU, disco) dei server di produzione correnti e il numero medio e massimo di richieste e l'utilizzo delle risorse. Queste informazioni saranno necessarie indipendentemente dal percorso di migrazione scelto. È utile, ad esempio, per guidare la selezione delle dimensioni delle macchine virtuali nel pool di nodi, la quantità di memoria da usare dal contenitore e il numero di condivisioni di CPU necessarie per il contenitore.

È possibile ridimensionare i pool di nodi nel servizio Azure Kubernetes. Per informazioni su come, vedere Ridimensionare i pool di nodi in servizio Azure Kubernetes (servizio Azure Kubernetes).

Inventario di tutti i segreti

Controllare tutte le proprietà e i file di configurazione nel server di produzione o nei server per eventuali segreti e password. Assicurarsi di controllare il file jboss-web.xml nei war. I file di configurazione contenenti password o credenziali possono trovarsi anche all'interno dell'applicazione.

È consigliabile archiviare tali segreti in Azure KeyVault. Per altre informazioni, vedere Concetti di base di Azure Key Vault.

Inventario di tutti i certificati

Documentare tutti i certificati usati per gli endpoint SSL pubblici. È possibile visualizzare tutti i certificati nei server di produzione eseguendo il comando seguente:

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

Verificare che la versione di Java supportata funzioni correttamente

JBoss EAP nelle macchine virtuali di Azure richiede una versione supportata di Java. Per indicazioni su quale versione di JDK usare, vedere Configurazioni supportate nella documentazione di Red Hat.

Nota

Questa convalida è particolarmente importante se il server corrente è in esecuzione in un JDK non supportato, ad esempio Oracle JDK o IBM OpenJ9.

Per ottenere la versione corrente di Java, accedere al server di produzione ed eseguire il comando seguente:

java -version

Inventario delle risorse esterne

Le risorse esterne, ad esempio le origini dati, i broker di messaggi JMS e altre, vengono inserite tramite JNDI (Java Naming and Directory Interface). Alcune di queste risorse possono richiedere la migrazione o la riconfigurazione.

All'interno dell'applicazione

Esaminare i file WEB-INF/jboss-web.xml e/o WEB-INF/web.xml. Cercare gli elementi <Resource> all'interno dell'elemento <Context>.

Datasources

Le origini dati sono risorse JNDI con l'attributo type impostato su javax.sql.DataSource. Per ogni origine dati, documentare le informazioni seguenti:

  • Qual è il nome dell'origine dati?
  • Qual è la configurazione del pool di connessioni?
  • Dove è possibile trovare il file JAR del driver JDBC?

Per altre informazioni, vedere la sezione relativa alle origini dati di JBoss EAP nella documentazione di JBoss EAP.

Tutte le altre risorse esterne

Non è possibile documentare tutte le possibili dipendenze esterne in questa guida. È responsabilità del team verificare che sia possibile soddisfare tutte le dipendenze esterne dell'applicazione dopo la migrazione.

Determinare se e come viene usato il file system

Qualsiasi utilizzo del file system nel server applicazioni richiede la riconfigurazione o, in rari casi, modifiche dell'architettura. I moduli JBoss EAP o il codice dell'applicazione possono usare il file system. È possibile identificare alcuni o tutti gli scenari descritti nelle sezioni seguenti.

Contenuto statico di sola lettura

Se l'applicazione attualmente distribuisce contenuto statico, è necessario modificarne la posizione. Si può scegliere di spostare il contenuto statico in Archiviazione BLOB di Azure e di aggiungere la rete di distribuzione dei contenuti di Azure per accelerare i download a livello globale. Per altre informazioni, vedere Hosting di siti Web statici in Archiviazione di Azure e Avvio rapido: Integrare un account di archiviazione di Azure con Rete CDN di Azure. È anche possibile distribuire direttamente il contenuto statico in un'app nel piano Azure Spring Apps Enterprise. Per altre informazioni, vedere Distribuire file statici Web.

Contenuto statico pubblicato dinamicamente

Se l'applicazione consente contenuto statico caricato/prodotto dall'applicazione ma non modificabile dopo la creazione, è possibile usare Archiviazione BLOB di Azure e la rete di distribuzione dei contenuti di Azure, come descritto sopra, con una funzione di Azure per gestire i caricamenti e l'aggiornamento della rete CDN. Nell'articolo Caricamento e precaricamento nella rete CDN di contenuto statico con Funzioni di Azure è riportata un'implementazione di esempio che è possibile usare. È anche possibile distribuire direttamente il contenuto statico in un'app nel piano Azure Spring Apps Enterprise. Per altre informazioni, vedere Distribuire file statici Web.

Determinare se è necessaria una connessione all'ambiente locale

Se l'applicazione deve accedere ai servizi locali, è necessario effettuare il provisioning di uno dei servizi di connettività di Azure. Per altre informazioni, vedere Scegliere una soluzione per la connessione di una rete locale ad Azure. In alternativa, è necessario effettuare il refactoring dell'applicazione per usare le API disponibili pubblicamente esposte dalle risorse locali.

Determinare se sono in uso code o argomenti di JMS (Java Message Service)

Se l'applicazione usa code o argomenti di JMS, sarà necessario eseguirne la migrazione a un server JMS ospitato esternamente. Il bus di servizio di Azure e il protocollo AMQP (Advanced Message Queueing Protocol) possono risultare un'ottima strategia di migrazione se si usa JMS. Per altre informazioni, vedere Usare JMS con il bus di servizio e AMQP 1.0.

Se sono stati configurati archivi persistenti JMS, è necessario acquisire la relativa configurazione e applicarla dopo la migrazione.

Determinare se vengono usati i connettori JCA

Se l'applicazione usa connettori JCA, verificare che sia possibile usare il connettore JCA in JBoss EAP. Se è possibile usare il connettore JCA in JBoss EAP, per renderlo disponibile, è necessario aggiungere i file JAR al classpath server e inserire i file di configurazione necessari nella posizione corretta nelle directory del server JBoss EAP.

Determinare se JAAS è in uso

Se l'applicazione usa JAAS, sarà necessario acquisire la relativa configurazione. Se si usa un database, è possibile convertirlo in un dominio JAAS in JBoss EAP. Se si tratta di un'implementazione personalizzata, è necessario verificare che possa essere usata in JBoss EAP.

Determinare se l'applicazione è costituita da più WAR

Se l'applicazione è costituita da più WAR, è consigliabile considerarli come applicazioni distinte e seguire i rispettivi argomenti di questa guida.

Determinare se l'applicazione è assemblata come EAR

Se l'applicazione è assemblata come file EAR, assicurarsi di esaminare il file application.xml e acquisire la relativa configurazione.

Nota

Se si vuole essere in grado di ridimensionare ognuna delle applicazioni Web in modo indipendente per un uso migliore delle risorse delle macchine virtuali di Azure, è consigliabile suddividere EAR in applicazioni Web separate.

Identificare tutti i processi e daemon esterni in esecuzione nei server di produzione

Se sono in esecuzione processi all'esterno del server applicazioni, ad esempio daemon di monitoraggio, sarà necessario eliminarli o trasferirli altrove.

Migrazione

Selezionare un'offerta JBoss EAP in Azure Macchine virtuali

Le offerte descritte nelle sezioni seguenti sono disponibili per JBoss EAP in Azure Macchine virtuali.

Durante la distribuzione di un'offerta, viene chiesto di scegliere le dimensioni della macchina virtuale per i nodi del server JBoss EAP. Nella scelta delle dimensioni delle VM, è importante considerare tutti gli aspetti, ossia memoria, processore e disco. Per altre informazioni, vedere Dimensioni per Servizi cloud (versione classica).

JBoss EAP in Azure set di scalabilità di macchine virtuali

set di scalabilità di macchine virtuali forniscono gruppi di macchine virtuali con carico bilanciato e altamente scalabile per carichi di lavoro di qualsiasi dimensione. Per altre informazioni, vedere Che cosa sono set di scalabilità di macchine virtuali?

JBoss EAP in Macchine virtuali cluster

Se si preferisce, un cluster tradizionale di macchine virtuali che usano il meccanismo di clustering JBoss EAP è adatto per un trasferimento in modalità lift-and-shift dalle distribuzioni che usano già questa funzionalità. Per altre informazioni, vedere Configurazione di un cluster Red Hat JBoss EAP 7 nella documentazione di JBoss EAP. L'offerta predefinita di Azure Marketplace include il supporto per la modalità di dominio. Per una panoramica dei domini EAP e della modalità di dominio, vedere Gestione del dominio.

Server singolo JBoss EAP

Se è necessario un solo server, ad esempio per il test e la valutazione o per carichi di lavoro leggeri, è disponibile un'offerta che distribuisce un server singolo JBoss EAP in una singola macchina virtuale.

Red Hat Migration Toolkit per le app

Red Hat Migration Toolkit for Applications è un'estensione gratuita per Visual Studio Code. Questa estensione analizza il codice e la configurazione dell'applicazione per fornire suggerimenti per la migrazione al cloud dall'ambiente locale. Per altre informazioni, vedere Panoramica di Migration Toolkit for Applications.

Il contenuto di questa guida consente di gestire gli altri componenti del percorso di migrazione, ad esempio la scelta delle dimensioni corrette della macchina virtuale e l'esternalizzazione dello stato della sessione.

Dopo la migrazione

Una volta raggiunti gli obiettivi di migrazione definiti nel passaggio di pre-migrazione, eseguire alcuni test di accettazione end-to-end per verificare che tutto funzioni come previsto. Per informazioni su alcuni potenziali miglioramenti post-migrazione, vedere gli articoli seguenti: