Refactorización de una aplicación de Linux a varias regiones con Azure App Service, Traffic Manager y Azure Database for MySQLRefactor a Linux application to multiple regions using Azure App Service, Traffic Manager, and Azure Database for MySQL

En este artículo se muestra cómo la empresa ficticia Contoso refactoriza una aplicación basada en LAMP de dos niveles y la migra del entorno local a Azure mediante Azure App Service con integración de GitHub y Azure Database for MySQL.This article shows how the fictional company Contoso refactors a two-tier LAMP-based application, migrating it from on-premises to Azure using Azure App Service with GitHub integration and Azure Database for MySQL.

osTicket, la aplicación del departamento de servicios usada en este ejemplo, se proporciona como código abierto.osTicket, the service desk application used in this example is provided as open source. Si quiere utilizarla para sus propias pruebas, puede descargarla desde el repositorio osTicket de GitHub.If you'd like to use it for your own testing purposes, you can download it from the osTicket repo in GitHub.

Impulsores del negocioBusiness drivers

El equipo directivo de TI ha trabajado estrechamente con sus socios comerciales para comprender sus objetivos:The IT leadership team has worked closely with business partners to understand what they want to achieve:

  • Abordar el crecimiento del negocio.Address business growth. Contoso crece y se mueve a mercados nuevos.Contoso is growing and moving into new markets. Se necesitan más agentes de servicio al cliente.It needs additional customer service agents.
  • Escala.Scale. se debe compilar la solución para que Contoso pueda agregar más agentes de servicio al cliente al escalar el negocio.The solution should be built so that Contoso can add more customer service agents as the business scales.
  • Mejora de la resistencia.Improve resiliency. En el pasado, los problemas del sistema afectaban solo a los usuarios internos.In the past, issues with the system affected internal users only. Con su nuevo modelo de negocio, se verán afectados los usuarios externos, y Contoso necesita que la aplicación esté siempre en funcionamiento.With the new business model, external users will be affected, and Contoso need the application up and running at all times.

Objetivos de la migraciónMigration goals

El equipo de la nube de Contoso ha definido los objetivos de esta migración con el fin de determinar el mejor método para llevarla a cabo:The Contoso cloud team has pinned down goals for this migration, in order to determine the best migration method:

  • La aplicación debe escalar más allá de la capacidad y el rendimiento local actual.The application should scale beyond current on-premises capacity and performance. Contoso va a mover la aplicación para aprovechar las ventajas del escalado a petición de Azure.Contoso is moving the application to take advantage of Azure's on-demand scaling.
  • Contoso quiere mover el código base de la aplicación a una canalización de entrega continua.Contoso wants to move the application code base to a continuous delivery pipeline. Cuando los cambios de la aplicación se inserten en GitHub, Contoso quiere implementar dichos cambios sin tareas para el personal de operaciones.As application changes are pushed to GitHub, Contoso wants to deploy those changes without tasks for operations staff.
  • La aplicación debe ser resistente con capacidades para el crecimiento y la conmutación por error.The application must be resilient with capabilities for growth and failover. Contoso quiere implementar la aplicación en dos regiones de Azure diferentes y configurarla para el escalado automático.Contoso wants to deploy the application in two different Azure regions, and set it up to scale automatically.
  • Quiere minimizar las tareas de administración de la base de datos tras mover la aplicación a la nube.Contoso wants to minimize database admin tasks after the application is moved to the cloud.

Diseño de la soluciónSolution design

Después de fijar sus objetivos y requisitos, Contoso diseña y revisa una solución de implementación e identifica el proceso de migración, incluidos los servicios de Azure que usará para la migración.After pinning down their goals and requirements, Contoso designs and reviews a deployment solution, and identifies the migration process, including the Azure services that will be used for the migration.

Arquitectura actualCurrent architecture

  • La aplicación se divide en niveles entre dos VM (OSTICKETWEB y OSTICKETMYSQL).The application is tiered across two VMs (OSTICKETWEB and OSTICKETMYSQL).
  • Las máquinas virtuales se encuentran en el host de VMware ESXi contosohost1.contoso.com (versión 6.5).The VMs are located on VMware ESXi host contosohost1.contoso.com (version 6.5).
  • El entorno de VMware lo administra vCenter Server 6.5 (vcenter.contoso.com) que se ejecuta en una máquina virtual.The VMware environment is managed by vCenter Server 6.5 (vcenter.contoso.com), running on a VM.
  • Contoso tiene un centro de datos local (contoso-datacenter), con un controlador de dominio local (contosodc1).Contoso has an on-premises datacenter (contoso-datacenter), with an on-premises domain controller (contosodc1).

Arquitectura actual

Arquitectura propuestaProposed architecture

Esta es la arquitectura propuesta:Here's the proposed architecture:

  • La aplicación de nivel web en OSTICKETWEB se migrará mediante la compilación de una instancia de Azure App Service en dos regiones de Azure.The web tier application on OSTICKETWEB will be migrated by building an Azure App Service in two Azure regions. Azure App Service para Linux se implementará mediante el contenedor Docker de PHP 7.0.Azure App Service for Linux will be implemented using the PHP 7.0 Docker container.
  • El código de la aplicación se moverá a GitHub y Azure App Service Web App se configurará para la entrega continua con GitHub.The application code will be moved to GitHub, and the Azure App Service web app will be configured for continuous delivery with GitHub.
  • Azure App Service se implementará tanto en la región primaria (East US 2) como en la región secundaria (Central US).Azure App Service will be deployed in both the primary region (East US 2) and secondary region (Central US).
  • Traffic Manager se configurará delante de las dos aplicaciones web en ambas regiones.Traffic Manager will be set up in front of the two web apps in both regions.
  • Traffic Manager se configurará en modo de prioridad para forzar el tráfico a través de East US 2.Traffic Manager will be configured in priority mode to force the traffic through East US 2.
  • Si Azure App Server en East US 2 se queda sin conexión, los usuarios pueden obtener acceso a la aplicación de conmutación por error en la Central US.If the Azure app server in East US 2 goes offline, users can access the failed over application in Central US.
  • La base de datos de la aplicación se migrará al servicio Azure Database for MySQL mediante Azure Database Migration Service.The application database will be migrated to the Azure Database for MySQL service using Azure Database Migration Service. La copia de seguridad de la base de datos local se realizará localmente y se restaurará de forma directa en Azure Database for MySQL.The on-premises database will be backed up locally, and restored directly to Azure Database for MySQL.
  • La base de datos residirá en la región primaria (East US 2) de la subred de la base de datos (PROD-DB-EUS2) de la red de producción (VNET-PROD-EUS2):The database will reside in the primary region (East US 2) in the database subnet (PROD-DB-EUS2) of the production network (VNET-PROD-EUS2):
  • Dado que se migra una carga de trabajo de producción, los recursos de Azure para la aplicación residirán en el grupo de recursos de producción ContosoRG.Since they're migrating a production workload, Azure resources for the application will reside in the production resource group ContosoRG.
  • El recurso Traffic Manager se implementará en el grupo de recursos de la infraestructura de Contoso, ContosoInfraRG.The Traffic Manager resource will be deployed in Contoso's infrastructure resource group ContosoInfraRG.
  • Las VM locales del centro de datos de Contoso se retirarán después de realizar la migración.The on-premises VMs in the Contoso datacenter will be decommissioned after the migration is done.

Arquitectura del escenario

Proceso de migraciónMigration process

Contoso completará el proceso de migración como se indica a continuación:Contoso will complete the migration process as follows:

  1. Como primer paso, los administradores de Contoso configuran la infraestructura de Azure, incluido el aprovisionamiento de Azure App Service, la configuración de Traffic Manager y el aprovisionamiento de una instancia de Azure Database for MySQL.As a first step, Contoso admins set up the Azure infrastructure, including provisioning Azure App Service, setting up Traffic Manager, and provisioning an Azure Database for MySQL instance.
  2. Después de preparar la infraestructura de Azure, migran la base de datos mediante Azure Database Migration Service.After preparing the Azure infrastructure, they migrate the database using Azure Database Migration Service.
  3. Cuando la base de datos se ejecuta en Azure, configuran un repositorio privado de GitHub para Azure App Service con entrega continua y lo cargan con la aplicación osTicket.After the database is running in Azure, they up a GitHub private repository for Azure App Service with continuous delivery, and load it with the osTicket application.
  4. En Azure Portal, se carga la aplicación desde GitHub en el contenedor Docker que ejecuta Azure App Service.In the Azure portal, they load the application from GitHub to the Docker container running Azure App Service.
  5. Se modifica la configuración de DNS y se configura el escalado automático para la aplicación.They tweak DNS settings, and configure autoscaling for the application.

Proceso de migración

Servicios de AzureAzure services

ServicioService DescripciónDescription CosteCost
Azure App ServiceAzure App Service El servicio ejecuta y escala aplicaciones mediante el servicio PaaS de Azure para sitios web.The service runs and scales applications using the Azure PaaS service for websites. Los precios se basan en el tamaño de las instancias y las características necesarias.Pricing is based on the size of the instances, and the features required. Más información.Learn more.
Traffic ManagerTraffic Manager Un equilibrador de carga que usa DNS para dirigir los usuarios a Azure o a sitios web y servicios externos.A load balancer that uses DNS to direct users to Azure, or external websites and services. Los precios se basan en el número de consultas de DNS recibidas y el número de puntos de conexión supervisados.Pricing is based on the number of DNS queries received, and the number of monitored endpoints. Más información.Learn more.
Azure Database Migration ServiceAzure Database Migration Service Azure Database Migration Service permite migraciones completas de varios orígenes de base de datos a plataformas de datos de Azure, con un tiempo de inactividad mínimo.Azure Database Migration Service enables seamless migration from multiple database sources to Azure data platforms with minimal downtime. Información acerca de las regiones admitidas y los precios de Database Migration Service.Learn about supported regions and Database Migration Service pricing.
Azure Database for MySQLAzure Database for MySQL La base de datos se basa en el motor de base de datos MySQL de código abierto.The database is based on the open-source MySQL database engine. Proporciona una base de datos MySQL de la comunidad completamente administrada y lista para la empresa para el desarrollo y la implementación de aplicaciones.It provides a fully managed, enterprise-ready community MySQL database for application development and deployment. Los precios se basan en los requisitos de proceso, almacenamiento y copia de seguridad.Pricing based on compute, storage, and backup requirements. Más información.Learn more.

Requisitos previosPrerequisites

Esto es lo que tiene hacer Contoso para ejecutar este escenario.Here's what Contoso needs to run this scenario.

RequisitosRequirements DetallesDetails
Suscripción de AzureAzure subscription Suscripciones creadas por Contoso anteriormente en esta serie de artículos.Contoso created subscriptions earlier in this article series. Si no tiene una suscripción a Azure, cree una cuenta gratuita.If you don't have an Azure subscription, create a free account.

Si crea una cuenta gratuita, será el administrador de su suscripción y podrá realizar todas las acciones.If you create a free account, you're the administrator of your subscription and can perform all actions.

Si usa una suscripción existente y no es el administrador, tendrá que solicitar al administrador que le asigne permisos de propietario o colaborador.If you use an existing subscription and you're not the administrator, you need to work with the admin to assign you Owner or Contributor permissions.
Infraestructura de AzureAzure infrastructure Contoso configura la infraestructura de Azure según se describe en Infraestructura de Azure para la migración.Contoso set up their Azure infrastructure as described in Azure infrastructure for migration.

Pasos del escenarioScenario steps

Así es como Azure realizará la migración:Here's how Contoso will complete the migration:

  • Paso 1: Aprovisionamiento de Azure App Service.Step 1: Provision Azure App Service. Los administradores de Contoso aprovisionarán aplicaciones web en las regiones primarias y secundarias.Contoso admins will provision web apps in the primary and secondary regions.
  • Paso 2: Configuración de Traffic Manager.Step 2: Set up Traffic Manager. Configurarán Traffic Manager delante de las aplicaciones web para el enrutamiento y el equilibrio de carga del tráfico.They set up Traffic Manager in front of the web apps, for routing and load balancing traffic.
  • Paso 3: Aprovisionamiento de MySQL.Step 3: Provision MySQL. En Azure, aprovisionarán una instancia de Azure Database for MySQL.In Azure, they provision an instance of Azure Database for MySQL.
  • Paso 4: Migración de la base de datos.Step 4: Migrate the database. Migran la base de datos mediante Azure Database Migration Service.They migrate the database using Azure Database Migration Service.
  • Paso 5: Configuración de GitHub.Step 5: Set up GitHub. Configuran un repositorio de GitHub local para los sitios web y el código de la aplicación.They set up a local GitHub repository for the application web sites/code.
  • Paso 6: Implementación de las aplicaciones web.Step 6: Deploy the web apps. implementarán las aplicaciones web desde GitHub.They deploy the web apps from GitHub.

Paso 1: Aprovisionamiento de Azure App Service.Step 1: Provision Azure App Service

Los administradores de Contoso aprovisionan dos aplicaciones web (una en cada región) con Azure App Service.Contoso admins provision two web apps (one in each region) using Azure App Service.

  1. Crean un recurso de aplicación web (osticket-eus2) en la región primaria (East US 2) desde Azure Marketplace.They create a web app resource (osticket-eus2) in the primary region (East US 2) via the Azure Marketplace.

  2. Colocan el recurso en el grupo de recursos de producción ContosoRG.They put the resource in the production resource group ContosoRG.

    Creación de una aplicación web

  3. Crean un plan de App Service en la región primaria (APP-SVP-EUS2), con el tamaño estándar.They create an App Service plan (APP-SVP-EUS2) in the primary region, using the standard size.

    Creación de un plan de App Service

  4. Seleccionan un sistema operativo Linux con la pila en tiempo de ejecución PHP 7.0, que es un contenedor de Docker.They select a Linux OS with PHP 7.0 runtime stack, which is a Docker container.

    Creación de una aplicación web

  5. Crean una segunda aplicación web (osticket-cus) y un plan de Azure App Service para Central US.They create a second web app (osticket-cus) and Azure App Service plan for Central US.

    Azure App

¿Necesita más ayuda?Need more help?

Paso 2: Configuración de Traffic ManagerStep 2: Set up Traffic Manager

Los administradores de Contoso configuran Traffic Manager para dirigir las solicitudes web entrantes a las aplicaciones web que se ejecutan en nivel web de osTicket.Contoso admins set up Traffic Manager to direct inbound web requests to the web apps running on the osTicket web tier.

  1. Crean un recurso de Traffic Manager (osticket.trafficmanager.net) en Azure Marketplace.They create a Traffic Manager resource (osticket.trafficmanager.net) from the Azure Marketplace. Usan el enrutamiento de prioridad para que East US 2 sea el sitio primario.They use priority routing so that East US 2 is the primary site. Colocan el recurso en el grupo de recursos de la infraestructura (ContosoInfraRG).They place the resource in their infrastructure resource group (ContosoInfraRG). Tenga en cuenta que Traffic Manager es global y no está enlazado a una ubicación específica.Note that Traffic Manager is global and not bound to a specific location.

    Traffic Manager

  2. Ahora, configuran Traffic Manager con puntos de conexión.Now, they configure Traffic Manager with endpoints. Agregan la aplicación web en East US 2 como sitio primario (osticket-eus2) y la aplicación web en Central US como el sitio secundario (osticket-cus).They add the web app in East US 2 as the primary site (osticket-eus2), and the web app in Central US as the secondary site (osticket-cus).

    Adición de puntos de conexión en Traffic Manager

  3. Después de agregar los puntos de conexión, se pueden supervisar.After adding the endpoints, they can monitor them.

    Supervisión de puntos de conexión en Traffic Manager

¿Necesita más ayuda?Need more help?

Paso 3: Aprovisionamiento de Azure Database for MySQLStep 3: Provision Azure Database for MySQL

El administrador de Contoso aprovisiona una instancia de base de datos MySQL en la región primaria (East US 2).Contoso admins provision a MySQL database instance in the primary region (East US 2).

  1. En Azure Portal, crea un recurso de Azure Database for MySQL.In the Azure portal, they create an Azure Database for MySQL resource.

    MySQL

  2. Agrega el nombre contosoosticket para la base de datos de Azure.They add the name contosoosticket for the Azure database. Agrega la base de datos al grupo de recursos de producción ContosoRG y especifica sus credenciales.They add the database to the production resource group ContosoRG, and specify credentials for it.

  3. La base de datos MySQL local es de la versión 5.7, por lo que selecciona esta versión por cuestiones de compatibilidad.The on-premises MySQL database is version 5.7, so they select this version for compatibility. Utiliza los tamaños predeterminados, que coinciden con los requisitos de la base de datos.They use the default sizes, which match their database requirements.

    MySQL

  4. Para las opciones de redundancia de copia de seguridad, seleccionan el uso de redundancia geográfica.For Backup Redundancy Options, they select to use Geo-Redundant. Esta opción permite restaurar la base de datos en la región secundaria (Central US) si se produce una interrupción.This option allows them to restore the database in their secondary region (Central US) if an outage occurs. Solo puede configurar esta opción al aprovisionar la base de datos.They can only configure this option when they provision the database.

    Redundancia

  5. Configuran la seguridad de conexión.They set up connection security. En la base de datos > Seguridad de la conexión, se configuran las reglas de firewall para permitir que la base de datos tenga acceso a servicios de Azure.In the database > Connection security, they set up firewall rules to allow the database to access Azure services.

  6. Se agrega la dirección IP del cliente de la estación de trabajo local a las direcciones IP inicial y final.They add the local workstation client IP address to the start and end IP addresses. Esto permite que las aplicaciones web tengan acceso a la base de datos MySQL, junto con el cliente de base de datos que realiza la migración.This allows the web apps to access the MySQL database, along with the database client that's performing the migration.

    MySQL

Paso 4: Migración de la base de datosStep 4: Migrate the database

Hay varias maneras de mover la base de datos MySQL.There are several ways to move the MySQL database. Cada opción requiere la creación de una instancia de Azure Database for MySQL para el destino.Each option requires you to create an Azure Database for MySQL instance for the target. Una vez creada, existen dos rutas para realizar la migración:Once created, you can perform the migration using two paths:

  • Paso 4a: Azure Database Migration ServiceStep 4a: Azure Database Migration Service
  • Paso 4b: Copia de seguridad y restauración de MySQL WorkbenchStep 4b: MySQL Workbench backup and restore

Paso 4a: Migración de la base de datos mediante Azure Database Migration ServiceStep 4a: Migrate the database via Azure Database Migration Service

Los administradores de Contoso siguen el tutorial de migración paso a paso para migrar la base de datos con Azure Database Migration Service.Contoso admins migrate the database via Azure Database Migration Service by following the step-by-step migration tutorial. Pueden realizar migraciones en línea, sin conexión e híbridas (versión preliminar) mediante MySQL 5.6 o 5.7.They can perform online, offline, and hybrid (preview) migrations using MySQL 5.6 or 5.7.

Nota

MySQL 8.0 se admite en Azure Database for MySQL, pero la herramienta Azure Database Migration Service todavía no es compatible con esta versión.MySQL 8.0 is supported in Azure Database for MySQL, but the Database Migration Service tool does not yet support this version.

En resumen, debe realizar las siguientes acciones:As a summary, you must perform the following:

  • Asegúrese de que se cumplen todos los requisitos previos:Ensure all migration prerequisites are met:
    • El origen del servidor de bases de datos MySQL debe coincidir con la versión que admite Azure Database for MySQL.The MySQL database server source must match the version that Azure Database for MySQL supports. Azure Database for MySQL admite MySQL Community Edition, el motor de almacenamiento InnoDB y la migración entre origen y destino con las mismas versiones.Azure Database for MySQL supports MySQL Community Edition, the InnoDB storage engine, and migration across source and target with same versions.
    • Habilite el registro binario en my.ini (Windows) o my.cnf (Unix).Enable binary logging in my.ini (Windows) or my.cnf (Unix). Si no lo hace, se producirá el siguiente error en el Asistente para migración: Error in binary logging. Variable binlog_row_image has value 'minimal'. Please change it to 'full'. For more information, see https://go.microsoft.com/fwlink/?linkid=873009.Failure to do this will cause the following error in the Migration Wizard: Error in binary logging. Variable binlog_row_image has value 'minimal'. Please change it to 'full'. For more information, see https://go.microsoft.com/fwlink/?linkid=873009.
    • El usuario debe tener el rol ReplicationAdmin.The user must have ReplicationAdmin role.
    • Migre los esquemas de base de datos sin claves externas ni desencadenadores.Migrate the database schemas without foreign keys and triggers.
  • Cree una red virtual que se conecte a través de ExpressRoute o VPN a la red local.Create a virtual network that connects via ExpressRoute or VPN to your on-premises network.
  • Cree una instancia de Azure Database Migration Service con una SKU Premium que esté conectada a la red virtual.Create an Azure Database Migration Service with a Premium SKU that is connected to the VNet.
  • Asegúrese de que Azure Database Migration Service pueda acceder a la base de datos MySQL a través de la red virtual.Ensure that Azure Database Migration Service can access the MySQL database via the virtual network. Esto implicaría asegurarse de que todos los puertos de entrada están permitidos desde Azure a MySQL en el nivel de la red virtual, la VPN de red y la máquina que hospeda MySQL.This would entail ensuring that all incoming ports are allowed from Azure to MySQL at the virtual network level, the network VPN, and the machine that hosts MySQL.
  • Ejecute la herramienta Database Migration Service:Run the Database Migration Service tool:
    • Cree un proyecto de migración basado en la SKU prémium.Create a migration project based on the Premium SKU.

      MySQL

      MySQL

    • Agregue un origen (base de datos local).Add a source (on-premises database).

      MySQL

    • Seleccione un destino.Select a target.

      MySQL

    • Seleccione las bases de datos que se van a migrar.Select the databases to migrate.

      MySQL

    • Configure las opciones avanzadas.Configure advanced settings.

      MySQL

    • Inicie la replicación y resuelva los posibles errores.Start the replication and resolve any errors.

      MySQL

    • Realice la migración final.Perform the final cutover.

      MySQL

      MySQL

      MySQL

    • Restablezca las claves externas y los desencadenadores.Reinstate any foreign keys and triggers.

    • Modifique las aplicaciones para que usen la nueva base de datos.Modify applications to use the new database.

      MySQL

Paso 4b: Migración de la base de datos (MySQL Workbench)Step 4b: Migrate the database (MySQL Workbench)

  1. Comprueban los requisitos previos y las descargas de MySQL Workbench.They check the prerequisites and downloads MySQL Workbench.

  2. Instala MySQL Workbench para Windows de acuerdo con las instrucciones de instalación.They install MySQL Workbench for Windows in accordance with the installation instructions. La máquina en la que se instala debe ser accesible para la VM OSTICKETMYSQL y Azure a través de Internet.The machine on which they install must be accessible to the OSTICKETMYSQL VM, and Azure via the internet.

  3. En MySQL Workbench, se crea una conexión de MySQL a OSTICKETMYSQL.In MySQL Workbench, they create a MySQL connection to OSTICKETMYSQL.

    MySQL Workbench

  4. Se exporta la base de datos como osticket a un archivo independiente local.They export the database as osticket, to a local self-contained file.

    MySQL Workbench

  5. Después de realizar la copia de seguridad de la base de datos localmente, crea una conexión a la instancia de Azure Database for MySQL.After the database has been backed up locally, they create a connection to the Azure Database for MySQL instance.

    MySQL Workbench

  6. Ahora, pueden importar (restaurar) la base de datos en la instancia de Azure Database for MySQL desde el archivo independiente.Now, they can import (restore) the database in the Azure Database for MySQL instance, from the self-contained file. Se crea un nuevo esquema (osticket) para la instancia.A new schema (osticket) is created for the instance.

    MySQL Workbench

  7. Después de restaurar los datos, se pueden consultar mediante MySQL Workbench y aparecen en Azure Portal.After data is restored, it can be queried using MySQL Workbench, and appears in the Azure portal.

    MySQL Workbench

    MySQL Workbench

  8. Por último, deben actualizar la información de base de datos en las aplicaciones web.Finally, they need to update the database information on the web apps. En la instancia de MySQL, se abre Cadenas de conexión.On the MySQL instance, they open Connection Strings.

    MySQL Workbench

  9. En la lista de cadenas, se busca la configuración de la aplicación web y se selecciona para copiarla.In the strings list, they locate the web app settings, and select to copy them.

    MySQL Workbench

  10. Se abre una ventana del Bloc de notas, se pega la cadena en un archivo nuevo y se actualiza para que coincida con la base de datos de osticket, la instancia de MySQL y la configuración de credenciales.They open a Notepad window and paste the string into a new file, and update it to match the osticket database, MySQL instance, and credentials settings.

    MySQL Workbench

  11. Pueden comprobar el nombre del servidor y el inicio de sesión en Información general en la instancia de MySQL en Azure Portal.They can verify the server name and login from Overview in the MySQL instance in the Azure portal.

    MySQL Workbench

Paso 5: Configuración de GitHubStep 5: Set up GitHub

Los administradores de Contoso crean un repositorio de GitHub privado y configuran una conexión a la base de datos osTicket en Azure Database for MySQL.Contoso admins create a new private GitHub repo and set up a connection to the osTicket database in Azure Database for MySQL. Después, cargan la aplicación web en Azure App Service.Then, they load the web app into Azure App Service.

  1. Se busca el repositorio GitHub público de software OsTicket y se bifurca a la cuenta de GitHub de Contoso.They browse to the OsTicket software public GitHub repo, and fork it to the Contoso GitHub account.

    GitHub

  2. Después de realizar la bifurcación, van a la carpeta include y buscan el archivo ost-config.php.After forking, they navigate to the include folder, and find the ost-config.php file.

    GitHub

  3. Se abre el archivo en el explorador y se edita.The file opens in the browser and they edit it.

    GitHub

  4. En el editor, actualizan los detalles de la base de datos, específicamente para DBHOST y DBUSER.In the editor, they update the database details, specifically for DBHOST and DBUSER.

    GitHub

  5. Se confirman los cambios.Then they commit the changes.

    GitHub

  6. Para cada aplicación web (osticket-eus2 y osticket-cus), modifican el valor de Configuración de la aplicación en Azure Portal.For each web app (osticket-eus2 and osticket-cus), they modify the Application settings in the Azure portal.

    GitHub

  7. Se especifica la cadena de conexión con el nombre osticket y se copia la cadena desde el Bloc de notas en el área de valores.They enter the connection string with the name osticket, and copy the string from Notepad into the value area. Se selecciona MySQL en la lista desplegable junto a la cadena y se guarda la configuración.They select MySQL in the dropdown list next to the string, and save the settings.

    GitHub

Paso 6: Configuración de las aplicaciones webStep 6: Configure the web apps

Como último paso del proceso de migración, los administradores de Contoso configuran las aplicaciones web con los sitios web de osTicket.As the final step in the migration process, Contoso admins configure the web apps with the osTicket web sites.

  1. En la aplicación web principal (osticket-eus2), abren Opción de implementación y establecen el origen en GitHub.In the primary web app (osticket-eus2), they open Deployment option and set the source to GitHub.

    Configuración de la aplicación

  2. Se seleccionan las opciones de implementación.They select the deployment options.

    Configuración de la aplicación

  3. Después de establecer las opciones, la configuración aparece como pendiente en Azure Portal.After setting the options, the configuration shows as pending in the Azure portal.

    Configuración de la aplicación

  4. Después de actualizar la configuración y cargar la instancia de Web App osTicket desde GitHub en el contenedor Docker que ejecuta Azure App Service, el sitio se muestra como activo.After the configuration is updated and the osTicket web app is loaded from GitHub to the Docker container running the Azure App Service, the site shows as active.

    Configuración de la aplicación

  5. Repiten los pasos anteriores para la aplicación web secundaria (osticket-cus).They repeat the above steps for the secondary web app (osticket-cus).

  6. Tras configurar el sitio, es accesible a través del perfil de Traffic Manager.After the site is configured, it's accessible via the Traffic Manager profile. El nombre DNS es la nueva ubicación de la aplicación osTicket.The DNS name is the new location of the osTicket application. Más información.Learn more.

    Configuración de la aplicación

  7. Contoso quiere un nombre DNS que sea fácil de recordar.Contoso wants a DNS name that's easy to remember. Se crea un registro de alias (CNAME) osticket.contoso.com que apunta al nombre de Traffic Manager, en el DNS de sus controladores de dominio.They create an alias record (CNAME) osticket.contoso.com that points to the Traffic Manager name, in the DNS on their domain controllers.

    Configuración de la aplicación

  8. Se configuran ambas aplicaciones web, osticket-eus2 yosticket-cus, para permitir los nombres de host personalizados.They configure both the osticket-eus2 and osticket-cus web apps to allow the custom host names.

    Configuración de la aplicación

Configurar el escalado automáticoSet up autoscaling

Por último, se configura el escalado automático para la aplicación.Finally, they set up automatic scaling for the application. Esto garantiza que, a medida que los agentes usan la aplicación, las instancias de aplicación aumentan y disminuyen en función de las necesidades empresariales.This ensures that as agents use the application, the application instances increase and decrease according to business needs.

  1. En App Service APP-SVP-EUS2, abren Unidad de escalado.In App Service APP-SVP-EUS2, they open Scale Unit.

  2. Se configura una nueva opción de escalado automático con una única regla que aumenta el recuento de instancias en uno cuando el porcentaje de CPU para la instancia actual es superior al 70 % durante 10 minutos.They configure a new autoscale setting with a single rule that increases the instance count by one when the CPU percentage for the current instance is above 70 percent for 10 minutes.

    Escalado automático

  3. Se configura la misma opción en APP-SVP-CUS para asegurarse de que se aplica el mismo comportamiento si la aplicación conmuta por error a la región secundaria.They configure the same setting on APP-SVP-CUS to ensure that the same behavior applies if the application fails over to the secondary region. La única diferencia es que se establece la instancia predeterminada en 1, ya que solo es para las conmutaciones por error.The only difference is that they set the default instance to 1 since this is for failovers only.

    Escalado automático

Limpiar después de la migraciónClean up after migration

Al completar la migración, se refactoriza la aplicación osTicket para que se ejecute en una aplicación web de Azure App Service con entrega continua mediante un repositorio GitHub privado.With migration complete, the osTicket application is refactored to running in an Azure App Service web app with continuous delivery using a private GitHub repo. La aplicación se ejecuta en dos regiones para aumentar la resistencia.The application runs in two regions for increased resilience. La base de datos de osTicket se ejecuta en Azure Database for MySQL después de la migración a la plataforma PaaS.The osTicket database is running in Azure Database for MySQL after migration to the PaaS platform.

Para realizar la limpieza, Contoso debe hacer lo siguiente:For cleanup, Contoso needs to do the following:

  • Quitar las VM de VMware del inventario de vCenter.Remove the VMware VMs from the vCenter inventory.
  • Quitar las VM locales de los trabajos de copia de seguridad locales.Remove the on-premises VMs from local backup jobs.
  • Actualizar la documentación interna para que muestre las nuevas ubicaciones y las direcciones IP.Update internal documentation show new locations and IP addresses.
  • Revisar los recursos que interactúan con las VM locales y actualizar los valores de configuración pertinentes o la documentación para reflejar la nueva configuración.Review any resources that interact with the on-premises VMs, and update any relevant settings or documentation to reflect the new configuration.
  • Volver a configurar la supervisión para que apunte a la dirección URL osticket-trafficmanager.net, para realizar un seguimiento de que la aplicación está en funcionamiento.Reconfigure monitoring to point at the osticket-trafficmanager.net URL, to track that the application is up and running.

Revisión de la implementaciónReview the deployment

Con la aplicación en ejecución, Contoso debe proteger y poner totalmente operativa la infraestructura nueva.With the application now running, Contoso need to fully operationalize and secure their new infrastructure.

SeguridadSecurity

El equipo de seguridad de Contoso revisa la aplicación para determinar si existe algún problema de seguridad.The Contoso security team reviewed the application to determine any security issues. Se identifica que la comunicación entre la aplicación osTicket y la instancia de base de datos MySQL no está configurada para SSL.They identified that the communication between the osTicket application and the MySQL database instance isn't configured for SSL. Deberá realizar esta acción para garantizar que el tráfico de la base de datos no pueda piratearse.They will need to do this to ensure that database traffic can't be hacked. Más información.Learn more.

Copias de seguridadBackups

  • Las aplicaciones web de osTicket no contienen datos de estado y, por tanto, no es necesario hacer copias de seguridad.The osTicket web apps don't contain state data and thus don't require backup.
  • No deberá configurar la copia de seguridad de la base de datos.They don't need to configure backup for the database. Azure Database for MySQL crea automáticamente copias de seguridad del servidor y las almacena.Azure Database for MySQL automatically creates server backups and stores. Contoso optó por utilizar la redundancia geográfica para la base de datos para que sea resistente y esté lista para la producción.They selected to use geo-redundancy for the database, so it's resilient and production-ready. Las copias de seguridad pueden utilizarse para restaurar el servidor a un momento dado.Backups can be used to restore your server to a point-in-time. Más información.Learn more.

Optimización de los costos y licenciasLicensing and cost optimization

  • No hay ningún problema relacionado con las licencias para la implementación de PaaS.There are no licensing issues for the PaaS deployment.
  • Contoso usará Azure Cost Management y facturación para asegurarse de permanecer dentro de los presupuestos establecidos por la dirección de TI.Contoso will use Azure Cost Management and Billing to ensure they stay within budgets established by their IT leadership.