Eseguire 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 su 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 privato o altri cloud provider. Inoltre, evidenzia i vantaggi dell'utilizzo di Migrazione ai container per automatizzare la migrazione.

In questo documento si presuppone che tu conosca i seguenti prodotti:

  • Applicazioni Java di cui è stato eseguito il deployment 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: scegliere il 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:

Migrate to Containers utilizza lo strumento di valutazione di idoneità per scoprire, ispezionare e migrare tutte le 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 in che modo 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: offre le seguenti funzionalità:
  • Ambiente containerizzato: containerizza le applicazioni esistenti basate su VM. Consulta Vantaggi della migrazione ai container.
  • Immagine Tomcat ufficiale: utilizza l'immagine ufficiale di Tomcat per impostazione predefinita. In alternativa, puoi aggiornare la migrazione o il Dockerfile in modo che utilizzi la tua. Le immagini ufficiali Docker portano le best practice di Docker alle immagini di base.
  • Suddivisione automatica delle applicazioni: suggerisce automaticamente la suddivisione di ogni applicazione rilevata in un singolo container, mantenendo la configurazione originale di Tomcat.
  • Gestione dei secret: rileva gli archivi chiavi, gli archivi attendibili e i certificati utilizzati dal server Tomcat e genera automaticamente primitive Kubernetes per esternalizzarli e montarli come secret di Kubernetes.
  • Modifiche di logging consigliate: rileva automaticamente i file di configurazione del framework Java logging comune (ad esempio log4j2, log4j e logback) e suggerisce le modifiche per allinearsi al logging su Kubernetes.

La migrazione delle applicazioni Tomcat ai container con Migrate to Containers è un possibile passaggio del tuo percorso di modernizzazione dei carichi di lavoro. La migrazione ti aiuta a trasformare le tue applicazioni Tomcat in modo che vengano eseguite in un ambiente cloud. Inoltre, ti aiuta a evitare costose riscritture.

Le soluzioni ideali per la migrazione sono applicazioni in esecuzione su versioni Tomcat e Java supportate per le quali la modernizzazione mediante una riscrittura completa è troppo costosa o troppo difficile.

Progetta la migrazione a Google Cloud

Per eseguire la migrazione delle applicazioni Tomcat dal tuo ambiente di origine ai container in esecuzione su Google Cloud, segui il framework descritto nella sezione Serie sulla migrazione a Google Cloud.

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

Percorso di migrazione diviso in quattro fasi.

Il framework illustrato nel diagramma precedente si compone di quattro fasi:

  1. Valuta: valuti il tuo ambiente di origine, valuta le applicazioni di cui vuoi eseguire la migrazione a Google Cloud e valuta quali applicazioni Tomcat sono adatte alla migrazione.
  2. Pianificare: crei l'infrastruttura di base per Migrate to Containers, ad esempio il provisioning della gerarchia delle risorse e la configurazione dell'accesso alla rete.
  3. Esegui il 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: inizi a sfruttare le tecnologie e le funzionalità cloud.

Valutazione dell'ambiente e delle applicazioni di origine

Nella fase di valutazione, raccogli informazioni sull'ambiente di origine e sulle applicazioni di cui vuoi eseguire la migrazione. In questo modo puoi adeguare le risorse di cui hai bisogno, sia per la migrazione che per l'ambiente di destinazione.

Nella fase di valutazione, devi:

  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 una proof of concept su Google Cloud.
  5. Calcola il costo totale di proprietà (TCO) dell'ambiente di destinazione.
  6. Scegli le applicazioni di cui vuoi eseguire la migrazione per prime.

Le sezioni seguenti 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.

Creare gli inventari

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

In Creazione di un inventario delle app viene descritto come creare un inventario dei carichi di lavoro e delle loro dipendenze nell'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 perfezionare l'inventario. Valuta gli aspetti e le funzionalità di interesse per la tua organizzazione quando esegue la migrazione delle applicazioni Tomcat con Migrate to Containers.

Prima di valutare l'ambiente Tomcat per la migrazione, completa le attività di valutazione in Migrazione delle VM nei container con Migrate to Containers e Migrazione a Google Cloud: valutazione e individuazione dei carichi di lavoro. Quando hai terminato, completa l'inventario dei tuoi carichi di lavoro.

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

  • Sistemi operativi in esecuzione nelle tue 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 di Tomcat che eseguono le tue applicazioni: raccogli informazioni sulle versioni Tomcat che eseguono le tue applicazioni e verificane la compatibilità con Migrate to Containers.
  • Applicazioni di cui è stato eseguito il deployment nelle tue istanze Tomcat: valuta per quali applicazioni viene eseguito il deployment in ciascuna istanza Tomcat. Poi mappa le dipendenze tra le applicazioni e tra le applicazioni e i servizi esterni. Poi raccogli informazioni sulle origini di configurazione delle tue 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 di 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.
  • Cluster Tomcat: il clustering Tomcat consente la replica delle sessioni su tutti i nodi Tomcat del cluster. Alcune implementazioni di clustering, incluso il provider di appartenenza McastService integrato, non funzionano correttamente in Kubernetes a causa della mancanza del 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 nel 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 quanto segue:
  • Proxy Java: se utilizzi un server proxy per controllare il traffico in uscita da applicazioni Tomcat e Java, puoi disabilitare le impostazioni del proxy Java. Rimuovi le impostazioni del proxy dalle opzioni della riga di comando della macchina virtuale Java (JVM). Quindi, configura un gateway in uscita di Cloud Service Mesh (ASM) per controllare il networking in uscita dal container Tomcat.

Completa la valutazione

Dopo aver creato gli inventari relativi 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 scoperta dei carichi di lavoro. Al termine, continua a leggere questo documento.

Pianifica e costruisci le tue basi

Dopo aver seguito le indicazioni fornite in Pianificare e creare gli elementi di base, completa la 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 che eseguono le tue istanze Tomcat. Per maggiori informazioni, consulta Utilizzo dello strumento di valutazione di idoneità.

Per eseguire il provisioning e configurare Migrate to Containers e le sue dipendenze, consulta Configurare Migrate to Containers.

Al termine, continua a leggere questo documento.

Esegui la migrazione delle applicazioni Tomcat nei container

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

Genera e rivedi il piano di migrazione

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

  1. Configura gli ambienti di origine come origini della migrazione di 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 tue VM. Hai raccolto queste informazioni eseguendo le attività descritte nella sezione Creare gli 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 dove archiviare i dati permanenti.

    Per saperne di più 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. Rivedi 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 sia adatto ai tuoi requisiti. Per ulteriori informazioni sulla personalizzazione dei piani di migrazione, consulta 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 configurate nei piani di migrazione. Quindi, crea diversi artefatti e posizionali 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 migrata, Migrate to Containers crea una cartella contenente quanto segue:

  • Dockerfile
  • Programmi binari di applicazioni
  • File di configurazione Tomcat
  • Script di build
  • Skaffold YAML, per la creazione e il deployment
  • (Facoltativo) secrets.sh script
  • (Facoltativo) archivio di logging

Puoi monitorare l'avanzamento degli artefatti dei container che crei e esegui la migrazione. Per ulteriori informazioni sul monitoraggio di una migrazione, consulta Monitoraggio dei carichi di lavoro di cui è stata eseguita la migrazione.

Verifica e convalida le risorse e i descrittori generati

Dopo aver generato artefatti dei container e descrittori del deployment con Migrate to Containers, esamina 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 che hai generato con Migrate to Containers e verifica che siano sufficienti per il carico di lavoro del container. Se devi aggiornare l'immagine 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 i log nella console anziché nei file locali.

Per ulteriori informazioni sulla revisione degli artefatti del container e dei descrittori del deployment, consulta Esaminare gli artefatti.

Esegui il deployment e convalida i carichi di lavoro containerizzati su GKE, GKE Autopilot, Cloud Run o GKE Enterprise

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

  1. Crea un'immagine container dell'applicazione: crea un'immagine container delle 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 di applicazioni Tomcat, puoi raccogliere dati sulle loro prestazioni nell'ambiente di destinazione. Per maggiori informazioni, consulta Monitoraggio dei carichi di lavoro di cui è stata eseguita la migrazione.
  4. Integra i carichi di lavoro migrati: dopo aver eseguito il deployment dei carichi di lavoro nell'ambiente di destinazione, integra i processi di generazione e deployment degli artefatti dei container con i processi e le pipeline di deployment. Se non hai in atto un processo di deployment automatico e stai implementando manualmente i carichi di lavoro, ti consigliamo di eseguire la migrazione dai deployment manuali a quelli automatizzati.

Disinstallare 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, vedi Ottimizzazione dell'ambiente.

Puoi eseguire queste ottimizzazioni specifiche per Tomcat per le applicazioni Tomcat migrate:

  • Modifica il logging: a differenza delle VM in cui i file di log vengono normalmente scritti nel file system locale, i log di Kubernetes vengono normalmente trasmessi in flusso su stdout o stderr. I log vengono quindi archiviati, analizzati e sottoposti a query tramite un backend dedicato, come Cloud Logging. Puoi utilizzare le modifiche consigliate per Migrate to Containers nell'artefatto di archiviazione logConfigs o modificare manualmente la configurazione di logging per scrivere i log in stdout o stderr.
  • Protezione dei dati sensibili: inserisci password ed eventuali altri dati sensibili nei Secret di Kubernetes. Utilizza i secret di Kubernetes per sostituire i segnaposto di configurazione all'avvio del container.
  • Ottimizza il profilo delle risorse: per consentire a Kubernetes di pianificare i pod in modo efficiente, perfeziona i vincoli delle risorse per richieste e limiti. Anche ottimizzare le risorse per allinearle alla dimensione dello heap JVM è fondamentale per evitare eccezioni di "esaurimento della memoria".
  • Posizionamento dei pod di controllo: se le applicazioni Tomcat migrate comunicano spesso tra loro, ti consigliamo di pianificarle per l'esecuzione sugli stessi nodi. Se il controllo del posizionamento dei pod può essere vantaggioso per le applicazioni migrate, consulta Assegnazione di pod ai nodi.

Passaggi successivi