Esegui la migrazione delle applicazioni Tomcat ai container con Migrate to Containers

Last reviewed 2022-06-17 UTC

Questo documento è rivolto ai proprietari di applicazioni e ai Cloud Architect. Questo documento descrive come eseguire la migrazione delle applicazioni Java in esecuzione su Tomcat ai container in esecuzione in Google Kubernetes Engine (GKE), GKE Autopilot, Cloud Run o GKE Enterprise. Puoi utilizzare questo processo per eseguire la migrazione delle applicazioni Tomcat da ambienti on-premise, ambienti di hosting privati o altri cloud provider. Inoltre, evidenzia i vantaggi dell'utilizzo di Migrate to Containers per automatizzare la migrazione.

Questo documento presuppone che tu conosca i seguenti prodotti:

  • Applicazioni Java distribuite su server di applicazioni Tomcat e in esecuzione su macchine virtuali (VM) Linux.
  • Concetti di base di Kubernetes e utilizzo di base dello strumento a riga di comando Kubernetes.

Questo documento fa parte di una serie sulla migrazione a Google Cloud. Per una panoramica della serie, vedi Migrazione a Google Cloud: scelta del percorso di migrazione.

Leggi questo documento per eseguire la migrazione delle applicazioni Tomcat compatibili da un ambiente di origine supportato a un ambiente GKE, GKE Enterprise o Cloud Run, utilizzando Migrate to Containers. Questi ambienti di origine possono includere quanto segue:

Migrate to Containers utilizza lo strumento di valutazione dell'idoneità per scoprire, ispezionare ed eseguire la migrazione di tutte le tue applicazioni Tomcat nelle VM Linux. Lo strumento suddivide le applicazioni Tomcat in singoli container di applicazioni Tomcat. Dopo la migrazione, puoi raggruppare alcune o tutte le applicazioni in un'immagine container condivisa. Il seguente diagramma mostra come Migrate to Containers suddivide ed esegue la migrazione delle applicazioni:

Migrate to Containers suddivide ed esegue la migrazione delle applicazioni Tomcat.

Migrate to Containers offre i seguenti vantaggi:

  • Modernizzazione dei carichi di lavoro:fornisce le seguenti funzionalità:
  • Ambiente containerizzato: containerizza le applicazioni basate su VM esistenti. Vedi Vantaggi della migrazione ai container.
  • Immagine Tomcat ufficiale: utilizza l'immagine ufficiale Tomcat per impostazione predefinita, oppure puoi aggiornare la migrazione o il Dockerfile per utilizzarne la tua. Le immagini ufficiali Docker aggiungono le best practice Docker alle immagini di base.
  • Suddivisione automatica delle applicazioni: suggerisce automaticamente di suddividere ogni applicazione rilevata in un singolo container, mantenendo la configurazione originale di Tomcat.
  • Gestione dei secret: rileva gli archivi chiavi, gli archivi di attendibilità e i certificati utilizzati dal server Tomcat e genera automaticamente le primitive Kubernetes per esternalizzarle e montarle come Secret Kubernetes.
  • Modifiche consigliate per il logging: rileva automaticamente i file di configurazione dei framework di logging Java comuni (ad esempio log4j2, log4j e logback) e suggerisce le modifiche da allineare al logging su Kubernetes.

La migrazione delle applicazioni Tomcat ai container con Migrate to Containers è un possibile passaggio nel percorso di modernizzazione dei carichi di lavoro. La migrazione consente di trasformare le applicazioni Tomcat in modo che vengano eseguite in un ambiente cloud. Ti aiuta anche a evitare riscritture costose.

I candidati ideali per la migrazione sono applicazioni in esecuzione su versioni Tomcat e Java supportate, per le quali la modernizzazione tramite riscrittura completa è troppo costosa o troppo difficile.

Progetta la migrazione a Google Cloud

Per eseguire la migrazione delle tue applicazioni Tomcat dall'ambiente di origine ai container in esecuzione su Google Cloud, segui il framework descritto nella serie Migrazione a Google Cloud.

Il seguente diagramma illustra il percorso del tuo percorso di migrazione:

Percorso di migrazione con quattro fasi.

Il framework illustrato nel diagramma precedente è composto da quattro fasi:

  1. Valuta: valuti l'ambiente di origine, le applicazioni di cui vuoi eseguire la migrazione a Google Cloud e quali applicazioni Tomcat sono adatte alla migrazione.
  2. Pianifica: creerai l'infrastruttura di base per Migrate to Containers, ad esempio eseguendo il provisioning della gerarchia delle risorse e configurando l'accesso alla rete.
  3. Deployment: esegui la migrazione delle applicazioni Tomcat dall'ambiente di origine a GKE, GKE Autopilot, Cloud Run o GKE Enterprise con Migrate to Containers.
  4. Ottimizza: inizierai a sfruttare le tecnologie e le funzionalità cloud.

Valutare l'ambiente di origine e le applicazioni

Nella fase di valutazione, raccogli le informazioni sull'ambiente di origine e sulle applicazioni di cui vuoi eseguire la migrazione. Questo ti aiuta a ridimensionare le risorse di cui hai bisogno, sia per la migrazione che per l'ambiente di destinazione.

Nella fase di valutazione:

  1. Crea un inventario completo delle tue applicazioni.
  2. Cataloga le tue applicazioni in base alle loro proprietà e dipendenze.
  3. Addestra e forma i tuoi team su Google Cloud.
  4. Crea un esperimento e un proof of concept su Google Cloud.
  5. Calcola il costo totale di proprietà (TCO) dell'ambiente di destinazione.
  6. Scegli per prime le applicazioni di cui vuoi eseguire la migrazione.

Le seguenti sezioni si basano su Migrazione a Google Cloud: valutazione e rilevamento dei carichi di lavoro. Tuttavia, forniscono informazioni specifiche per la valutazione delle applicazioni Tomcat di cui vuoi eseguire la migrazione nei container con Migrate to Containers.

Crea i tuoi inventari

Per definire l'ambito della migrazione, devi comprendere il tuo ambiente Tomcat. Per comprendere il tuo ambiente, raccogli informazioni sulle tue applicazioni e sulle loro dipendenze.

Creazione di un inventario delle app descrive come creare un inventario dei carichi di lavoro e delle loro dipendenze nel tuo ambiente Tomcat. Segui queste indicazioni e crea i tuoi inventari. Al termine, continua a leggere questo documento.

Dopo aver creato un inventario dei carichi di lavoro e delle loro dipendenze, puoi perfezionarlo. Valuta gli aspetti e le funzionalità che interessano alla tua organizzazione quando esegue la migrazione delle sue applicazioni Tomcat con Migrate to Containers.

Prima di valutare il tuo ambiente Tomcat per la migrazione, completa le operazioni di valutazione in Migrazione delle VM nei container con Migrate to Containers e Migrazione a Google Cloud: valutazione e rilevamento dei carichi di lavoro. Al termine di questo lavoro, completa l'inventario dei tuoi carichi di lavoro.

Per completare l'inventario dei tuoi carichi di lavoro, considera quanto segue:

  • Sistemi operativi in esecuzione nelle istanze Tomcat: raccogli informazioni sui sistemi operativi e sulle relative licenze in esecuzione nelle tue istanze Tomcat e assicurati che i sistemi operativi siano elencati in Sistemi operativi compatibili e versioni di Kubernetes.
  • Versioni Tomcat che eseguono le tue applicazioni: raccogli informazioni sulle versioni di Tomcat che eseguono le tue applicazioni e assicurati che ne compatibilità con Migrate to Containers.
  • Applicazioni di cui è stato eseguito il deployment nelle istanze Tomcat: valuta quali applicazioni vengono distribuite in ogni istanza Tomcat. Quindi, mappa le dipendenze tra le tue applicazioni e tra le tue applicazioni e i tuoi servizi esterni. Poi, raccogli informazioni sulle origini di configurazione delle applicazioni, che possono includere le seguenti configurazioni:
    • Variabili di ambiente
    • Percorsi di installazione Tomcat non standard
    • Registri utenti LDAP
    • Connessioni JDBC (Java Database Connectivity)
    • Proxy Tomcat
    • Proxy Java
  • Punteggio di idoneità di Migrate to Containers: valuta se le tue applicazioni Tomcat sono adatte alla migrazione con Migrate to Containers. Migrate to Containers fornisce uno strumento di valutazione dell'idoneità che devi eseguire sulle VM che ospitano le tue istanze Tomcat per calcolare un punteggio di idoneità e consigliare un percorso di migrazione. Migrate to Containers utilizza un insieme di regole di valutazione per eseguire correttamente la migrazione delle applicazioni Tomcat.
  • Clustering Tomcat: il clustering Tomcat abilita la replica delle sessioni in tutti i nodi Tomcat del cluster. Alcune implementazioni di clustering, incluso il provider di abbonamento McastService integrato, non funzionano correttamente in Kubernetes a causa della mancanza di supporto per il multicast a livello di rete. Ciò significa che la configurazione del clustering Tomcat richiede una configurazione manuale durante la migrazione. Per ulteriori informazioni, consulta ClusteringCloud sul wiki Apache Tomcat.
  • proxy Tomcat: in molti scenari reali, Tomcat potrebbe essere configurato per essere eseguito dietro un proxy inverso. I principali utilizzi di un proxy inverso includono:
  • proxy Java: se utilizzi un server proxy per controllare il traffico in uscita dalle applicazioni Tomcat e Java, puoi disattivare le impostazioni del proxy Java. Rimuovi le impostazioni del proxy dalle opzioni della riga di comando per Java Virtual Machine (JVM). Quindi, configura un gateway in uscita Anthos Service Mesh (ASM) per controllare il networking in uscita dal container Tomcat.

Completa il test

Dopo aver creato gli inventari correlati al tuo ambiente e ai tuoi carichi di lavoro Tomcat, completa le altre attività della fase di valutazione documentate in Migrazione a Google Cloud: valutazione e rilevamento dei carichi di lavoro. Una volta terminato, continua a leggere questo documento.

Pianifica e getta le basi

Dopo aver seguito le indicazioni in Pianificare e creare gli elementi di base, completa gli elementi di base Tomcat:

  1. Verifica che i carichi di lavoro e l'ambiente di origine Tomcat soddisfino i prerequisiti per la migrazione di un carico di lavoro Tomcat.
  2. Per completare la fase di raccolta dei dati, esegui mfit sulle VM in esecuzione le tue istanze Tomcat. Per ulteriori informazioni, consulta Utilizzare lo strumento di valutazione di idoneità.

Per eseguire il provisioning e la configurazione di Migrate to Containers e delle sue dipendenze, consulta Configurare Migrate to Containers.

Una volta terminato, continua a leggere questo documento.

Esegui la migrazione delle applicazioni Tomcat ai container

Nella fase di deployment, utilizza le seguenti tappe come guida.

Genera e rivedi il piano di migrazione

Crea un piano di migrazione di Migrate to Containers per le tue applicazioni Tomcat:

  1. Configura gli ambienti di origine come origini di migrazione Migrate to Containers: per eseguire la migrazione delle tue applicazioni Tomcat, Migrate to Containers ha bisogno di informazioni sugli ambienti di origine in cui vengono eseguite le VM. Hai raccolto queste informazioni eseguendo le attività descritte nella sezione Creare inventari di questo documento. Per ulteriori informazioni sulla configurazione degli ambienti di origine, consulta Aggiunta di un'origine di migrazione.
  2. Crea un piano di migrazione: per specificare le applicazioni Tomcat di cui vuoi eseguire la migrazione da un ambiente di origine a un ambiente di destinazione supportato, crea un piano di migrazione. Ad esempio, puoi configurare la posizione in cui archiviare i dati permanenti.

    Per ulteriori informazioni sulla creazione e sul monitoraggio dei piani di migrazione, consulta Creazione di una migrazione. Per creare un piano di migrazione per le applicazioni Tomcat, utilizza lo strumento a riga di comando migctl come descritto in Esecuzione di una migrazione.

  3. Esamina e personalizza i piani di migrazione: dopo aver generato i piani di migrazione per ciascuna delle VM di cui vuoi eseguire la migrazione, rivedi e personalizza ogni piano per assicurarti che soddisfi i tuoi requisiti. Per ulteriori informazioni sulla personalizzazione dei piani di migrazione, vedi Personalizzazione di un piano di migrazione.

Genera artefatti di migrazione e descrittori di deployment

Per generare gli artefatti Tomcat di destinazione per le tue applicazioni, Migrate to Containers estrae le applicazioni in esecuzione nelle VM che hai configurato nei piani di migrazione. Quindi, crea diversi artefatti e li inserisce in un bucket Cloud Storage. Migrate to Containers genera anche i descrittori di deployment che puoi personalizzare e utilizzare per eseguire il deployment delle istanze delle immagini container nell'ambiente di destinazione.

Per ogni applicazione di cui è stata eseguita la migrazione, Migrate to Containers crea una cartella contenente quanto segue:

  • Dockerfile
  • Programmi binari delle applicazioni
  • File di configurazione Tomcat
  • Script di build
  • YAML Skaffold, per la creazione e il deployment
  • (Facoltativo) Script secrets.sh
  • (Facoltativo) Archivio dei log

Puoi monitorare l'avanzamento degli artefatti dei container che crei e migri. Per ulteriori informazioni sul monitoraggio di una migrazione, consulta Monitoraggio dei carichi di lavoro migrati.

Verifica e convalida le risorse e i descrittori generati

Dopo aver generato gli artefatti dei container e i descrittori di deployment con Migrate to Containers, rivedi e aggiorna questi artefatti e descrittori per assicurarti che soddisfino i tuoi requisiti. Ad esempio, considera i seguenti aspetti:

  • Descrittori delle immagini container: esamina i descrittori delle immagini container generati con Migrate to Containers e verifica che siano sufficienti per il carico di lavoro del container. Se devi aggiornare l'immagine del container di base, aggiorna il valore FROM nel Dockerfile generato. Puoi anche modificare la variabile di ambiente CATALINA_OPTS nel Dockerfile per impostare o modificare le variabili di ambiente JVM.
  • Logging a livello di applicazione: Migrate to Containers genera automaticamente un archivio di logging modificato, che puoi utilizzare per modificare l'impostazione di logging in modo da scrivere log nella console anziché file locali.

Per ulteriori informazioni sull'esame degli artefatti dei container e dei descrittori di deployment, consulta Esaminare gli artefatti.

Esegui il deployment e la convalida dei carichi di lavoro containerizzati in GKE, GKE Autopilot, Cloud Run o GKE Enterprise

Quando i descrittori di deployment sono pronti, puoi eseguire le seguenti attività:

  1. Crea un'immagine container dell'applicazione: crea un'immagine container di applicazioni per il carico di lavoro di cui è stata eseguita la migrazione. Per le istruzioni, consulta Creare l'immagine container.
  2. Esegui il deployment delle applicazioni migrate nell'ambiente di destinazione:
  3. Monitora i carichi di lavoro migrati: dopo aver eseguito il deployment del container dell'applicazione Tomcat, puoi raccogliere dati sulle loro prestazioni nell'ambiente di destinazione. Per maggiori informazioni, consulta Monitoraggio dei carichi di lavoro migrati.
  4. Integra i carichi di lavoro migrati: dopo aver eseguito il deployment dei carichi di lavoro nell'ambiente di destinazione, integra la generazione degli artefatti dei container e i processi di deployment dei carichi di lavoro con i tuoi processi e pipeline di deployment. Se non hai un processo di deployment automatizzato e esegui il deployment manuale dei tuoi carichi di lavoro, ti consigliamo di eseguire la migrazione dai deployment manuali ai deployment automatici.

Disinstalla Migrate to Containers

Dopo aver completato la migrazione dei carichi di lavoro con Migrate to Containers, ti consigliamo di eseguire le seguenti azioni:

  1. Assicurati di avere tutti i riferimenti agli artefatti generati da Migrate to Containers durante la migrazione.
  2. Disinstalla Migrate to Containers.

Ottimizza l'ambiente dopo la migrazione

Per completare la migrazione, consulta Ottimizzazione dell'ambiente.

Puoi eseguire queste ottimizzazioni specifiche per Tomcat per le tue applicazioni Tomcat di cui è stata eseguita la migrazione:

  • Regola il logging: a differenza delle VM in cui i file di log vengono generalmente scritti nel file system locale, i log di Kubernetes vengono in genere trasmessi a stdout o stderr. I log vengono quindi archiviati, analizzati ed sottoposti a query tramite un backend dedicato, come Cloud Logging. Puoi utilizzare le modifiche consigliate da Migrate to Containers nell'artefatto di archiviazione logConfigs oppure modificare manualmente la configurazione di logging per scrivere i log in stdout o stderr.
  • Protezione dei dati sensibili: inserisci le password e tutti gli altri dati sensibili nei secret di Kubernetes. Utilizza i secret di Kubernetes per sostituire i segnaposto di configurazione all'avvio del container.
  • Perfeziona il tuo profilo delle risorse: per aiutare Kubernetes a pianificare i tuoi pod in modo efficiente, ottimizza i vincoli delle risorse sia per le richieste che per i limiti. Anche l'ottimizzazione delle risorse per l'allineamento con la dimensione heap JVM è fondamentale per evitare eccezioni in memoria esaurita.
  • Posizionamento dei pod di controllo: se le applicazioni Tomcat migrate comunicano spesso tra loro, puoi pianificarne l'esecuzione sugli stessi nodi. Se sarebbe utile controllare il posizionamento dei pod per le applicazioni migrate, consulta Assegnazione di pod ai nodi.

Passaggi successivi