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 un cluster JBoss EAP in Azure Macchine virtuali (VM).
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 dispone del diritto EAP, è possibile iscriversi per ottenere una sottoscrizione per sviluppatori gratuita tramite la Sottoscrizione per sviluppatori di Red Hat per singoli utenti. Salvare i dettagli dell'account da usare come nome utente RHSM e password RHSM nelle offerte predefinite di Azure Marketplace.
I passaggi per l'individuazione dell'ID pool sono illustrati nella sezione Prerequisiti di Avvio rapido: Distribuire un cluster JBoss EAP in Azure Macchine virtuali (VM).
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.
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.
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 Connettere 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 Java Message Service 1.1 con bus di servizio di Azure standard 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 Clustering in applicazioni Web 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.
Post-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:
Usare Archiviazione di Azure per gestire il contenuto statico montato nelle macchine virtuali. Per altre informazioni, vedere Collegare o scollegare un disco dati per una macchina virtuale lab in Azure DevTest Labs.
Distribuire le applicazioni nel cluster JBoss EAP migrato con Azure DevOps. Per altre informazioni, vedere Introduzione alla documentazione di Azure DevOps.
Ottimizzare la topologia di rete con servizi avanzati di bilanciamento del carico. Per altre informazioni, vedere Uso dei servizi di bilanciamento del carico in Azure.
Usare identità gestite di Azure per gestire i segreti e assegnare l'accesso basato sui ruoli alle risorse di Azure. Per altre informazioni, vedere Informazioni sulle identità gestite per le risorse di Azure
Integrare l'autenticazione e l'autorizzazione Java EE con Microsoft Entra ID. Per altre informazioni, vedere La guida introduttiva all'integrazione di Microsoft Entra ID con le applicazioni.
Usare Azure Key Vault per archiviare qualsiasi informazione che funga da "segreto". Per altre informazioni, vedere Concetti di base di Azure Key Vault.