Refactor uma aplicação Linux utilizando o Azure App Service, Traffic Manager e Azure Database for MySQLRefactor a Linux application by using Azure App Service, Traffic Manager, and Azure Database for MySQL

Este artigo mostra como a empresa fictícia Contoso refactoria uma aplicação baseada em LÂMPADA de dois níveis, migrando-a de instalações para Azure usando o Azure App Service com integração GitHub e Azure Database para o MySQL.This article shows how the fictional company Contoso refactors a two-tier LAMP-based application, migrating it from on-premises to Azure by using Azure App Service with GitHub integration and Azure Database for MySQL.

o osTicket, a aplicação de balcão de atendimento que utilizamos neste exemplo, é fornecida como fonte aberta.osTicket, the service desk application that we use in this example, is provided as open source. Se quiser usá-lo para os seus próprios fins de teste, pode descarregá-lo a partir do repo osTicket em GitHub.If you want to use it for your own testing purposes, you can download it from the osTicket repo in GitHub.

Impulsionadores de negóciosBusiness drivers

A equipa de liderança de TI tem trabalhado em estreita colaboração com parceiros de negócios para entender o que querem alcançar:The IT leadership team has worked closely with business partners to understand what they want to achieve:

  • Dar resposta ao crescimento da empresa.Address business growth. A Contoso está a crescer e a mudar para novos mercados.Contoso is growing and moving into new markets. Precisa de agentes de suporte ao cliente adicionais.It needs additional customer service agents.
  • A escala.Scale. A solução deve ser compilada para que a Contoso possa adicionar mais agentes de suporte ao cliente à medida que os negócios são dimensionados.The solution should be built so that Contoso can add more customer service agents as the business scales.
  • Melhorar a resiliência.Improve resiliency. No passado, os problemas com o sistema afetavam apenas os utilizadores internos.In the past, issues with the system affected internal users only. Com o novo modelo de negócio, os utilizadores externos serão afetados, e a Contoso precisa sempre da aplicação em funcionamento.With the new business model, external users will be affected, and Contoso needs the application up and running at all times.

Objetivos de migraçãoMigration goals

Para determinar o melhor método de migração, a equipa de nuvem de Contoso fixou os seus objetivos para esta migração:To determine the best migration method, the Contoso cloud team has pinned down their goals for this migration:

  • A aplicação deve ser dimensionada além da capacidade e do desempenho no local atuais.The application should scale beyond current on-premises capacity and performance. A Contoso está a mover a aplicação para tirar partido do dimensionamento a pedido do Azure.Contoso is moving the application to take advantage of Azure's on-demand scaling.
  • A Contoso quer mover a base de código de aplicação para um gasoduto de entrega contínua.Contoso wants to move the application code base to a continuous delivery pipeline. À medida que as alterações de candidatura são empurradas para o GitHub, a Contoso quer implementar essas alterações sem tarefas para o pessoal de operações.As application changes are pushed to GitHub, Contoso wants to deploy those changes without tasks for operations staff.
  • A aplicação deve ser resiliente, com capacidades de crescimento e de saturação.The application must be resilient, with capabilities for growth and failover. A Contoso quer implementar a aplicação em duas regiões diferentes do Azure e instalá-la automaticamente.Contoso wants to deploy the application in two different Azure regions and set it up to scale automatically.
  • A Contoso pretende minimizar as tarefas de administração da base de dados depois de a aplicação ser movida para a cloud.Contoso wants to minimize database admin tasks after the application is moved to the cloud.

Design de soluçãoSolution design

Após definir as suas metas e os seus requisitos, a Contoso concebe e analisa uma solução de implementação, assim como identifica o processo de migração, incluindo os serviços do Azure que vão ser utilizado para a migração.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.

Arquitetura atualCurrent architecture

  • A aplicação é hierárquica em duas máquinas virtuais (VMs) OSTICKETWEB (e OSTICKETMYSQL .The application is tiered across two virtual machines (VMs) (OSTICKETWEB and OSTICKETMYSQL).
  • As VMs estão num anfitrião ESXi do VMware contosohost1.contoso.com (versão 6.5).The VMs are located on VMware ESXi host contosohost1.contoso.com (version 6.5).
  • O ambiente do VMware é gerido pelo vCenter Server 6.5 (vcenter.contoso.com), em execução numa VM.The VMware environment is managed by vCenter Server 6.5 (vcenter.contoso.com), running on a VM.
  • A Contoso tem um datacenter no local (contoso-datacenter), com um controlador de domínio no local (contosodc1).Contoso has an on-premises datacenter (contoso-datacenter), with an on-premises domain controller (contosodc1).

Diagrama da arquitetura atual.

Arquitetura propostaProposed architecture

Eis a arquitetura proposta:Here's the proposed architecture:

  • A aplicação de nível web OSTICKETWEB será migrada através da construção de uma aplicação web Azure App Service em duas regiões do Azure.The web tier application on OSTICKETWEB will be migrated by building an Azure App Service web app in two Azure regions. A equipa da Contoso implementará o Azure App Service para o Linux utilizando o recipiente PHP 7.0 Docker.The Contoso team will implement Azure App Service for Linux by using the PHP 7.0 Docker container.
  • O código de aplicação será transferido para o GitHub, e a aplicação web Azure App Service será configurada para entrega contínua com o GitHub.The application code will be moved to GitHub, and the Azure App Service web app will be configured for continuous delivery with GitHub.
  • O Azure App Service será implantado tanto na região primária como na East US 2 região secundária Central US ( ).Azure App Service will be deployed in both the primary region (East US 2) and secondary region (Central US).
  • O Azure Traffic Manager será criado em frente às duas aplicações web em ambas as regiões.Azure Traffic Manager will be set up in front of the two web apps in both regions.
  • O Gestor de Tráfego será configurado em modo prioritário para forçar o tráfego através East US 2 .Traffic Manager will be configured in priority mode to force the traffic through East US 2.
  • Se o servidor de aplicações Azure East US 2 entrar em offline, os utilizadores podem aceder à aplicação falhada em Central US .If the Azure app server in East US 2 goes offline, users can access the failed over application in Central US.
  • A base de dados de aplicações será migrada para a Base de Dados Azure para o serviço MySQL utilizando o Serviço de Migração da Base de Dados Azure.The application database will be migrated to the Azure Database for MySQL service by using Azure Database Migration Service. Vai ser criada uma cópia de segurança localmente da base de dados no local, sendo depois restaurada diretamente para a Base de Dados do Azure para MySQL.The on-premises database will be backed up locally, and restored directly to Azure Database for MySQL.
  • A base de dados residirá na região primária ( East US 2 ) na sub-rede de base de dados PROD-DB-EUS2 ( ) da rede de produção ( 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).
  • Uma vez que estão a migrar uma carga de trabalho de produção, os recursos da Azure para a aplicação residirão no grupo de recursos de ContosoRG produção.Since they're migrating a production workload, Azure resources for the application will reside in the production resource group ContosoRG.
  • O recurso Do Gestor de Tráfego será implantado no grupo de recursos de infraestrutura da ContosoInfraRG Contoso.The Traffic Manager resource will be deployed in Contoso's infrastructure resource group ContosoInfraRG.
  • As VMs no local no datacenter da Contoso vão ser desativadas após a conclusão da migração.The on-premises VMs in the Contoso datacenter will be decommissioned after the migration is done.

Diagrama da arquitetura do cenário.

Processo de migraçãoMigration process

Contoso completa o processo de migração da seguinte forma:Contoso completes the migration process as follows:

  1. Como primeiro passo, os administradores da Contoso criaram a infraestrutura Azure, incluindo o provisionamento do Serviço de Aplicações Azure, a criação de Traffic Manager e o fornecimento de uma Base de Dados Azure para o caso 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. Depois de preparar a infraestrutura Azure, migram a base de dados utilizando o Serviço de Migração da Base de Dados Azure.After preparing the Azure infrastructure, they migrate the database by using Azure Database Migration Service.
  3. Depois de a base de dados estar em funcionamento em Azure, eles carregam um repositório privado GitHub para o Azure App Service com entrega contínua, e carregam-no com a aplicação osTicket.After the database is running in Azure, they upload a GitHub private repository for Azure App Service with continuous delivery, and load it with the osTicket application.
  4. No portal Azure, eles carregam a aplicação do GitHub para o contentor Docker executando o Azure App Service.In the Azure portal, they load the application from GitHub to the Docker container by running Azure App Service.
  5. Ajustam as definições de DNS e configuram a autoscalagem para a aplicação.They tweak DNS settings and configure autoscaling for the application.

Diagrama do processo de migração de Contoso.

Serviços do AzureAzure services

ServiçoService DescriptionDescription CustoCost
Serviço de Aplicações do AzureAzure App Service O serviço executa e escala aplica aplicações usando a plataforma Azure como um serviço (PaaS) para websites.The service runs and scales applications by using Azure platform as a service (PaaS) for websites. Os preços baseiam-se na dimensão das instâncias e nas características necessárias.Pricing is based on the size of the instances and the features required. Saiba mais.Learn more.
Gestor de Tráfego do AzureAzure Traffic Manager Um equilibrador de carga que usa o Sistema de Nome de Domínio (DNS) para direcionar os utilizadores para o Azure ou para sites e serviços externos.A load balancer that uses Domain Name System (DNS) to direct users to Azure or to external websites and services. Os preços baseiam-se no número de consultas de DNS recebidas e no número de pontos finais monitorizados.Pricing is based on the number of received DNS queries and the number of monitored endpoints. Saiba mais.Learn more.
Azure Database Migration ServiceAzure Database Migration Service O Azure Database Migration Service permite a migração sem emenda de múltiplas fontes de base de dados para plataformas de dados Azure, com tempo de inatividade mínimo.Azure Database Migration Service enables seamless migration from multiple database sources to Azure data platforms, with minimal downtime. Saiba mais sobre as regiões suportadas e os preços do Database Migration Service.Learn about supported regions and Database Migration Service pricing.
Base de Dados do Azure para MySQLAzure Database for MySQL A base de dados baseia-se no motor de base de dados MySQL de código aberto.The database is based on the open-source MySQL database engine. Fornece uma base de dados MySQL, totalmente gerida e pronta para a empresa, para desenvolvimento e implementação de aplicações.It provides a fully managed, enterprise-ready community MySQL database for application development and deployment. Os preços baseiam-se nos requisitos de computação, armazenamento e backup.Pricing is based on compute, storage, and backup requirements. Saiba mais.Learn more.

Pré-requisitosPrerequisites

Para executar este cenário, Contoso deve cumprir os seguintes pré-requisitos:To run this scenario, Contoso must meet the following prerequisites:

RequisitosRequirements DetalhesDetails
Subscrição do AzureAzure subscription A Contoso criou subscrições anteriormente neste conjunto de artigos.Contoso created subscriptions earlier in this article series. Se não tiver uma subscrição do Azure, crie uma conta gratuita.If you don't have an Azure subscription, create a free account.

Se criar uma conta gratuita, será o administrador da sua subscrição e poderá executar todas as ações.If you create a free account, you're the administrator of your subscription and can perform all actions.

Se utilizar uma subscrição já existente e não for o administrador, terá de trabalhar com o mesmo para que lhe atribua as permissões Proprietário ou Contribuidor.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.
Infraestrutura do AzureAzure infrastructure A Contoso configurou a sua infraestrutura Azure conforme descrito em Infraestrutura do Azure para migração.Contoso set up their Azure infrastructure as described in Azure infrastructure for migration.

Passos do cenárioScenario steps

Aqui está o plano Contoso para completar a migração:Here's the Contoso plan for completing the migration:

  • Passo 1: Serviço de Aplicação Azure.Step 1: Provision Azure App Service. Os administradores da Contoso vão aprovisionar as aplicações Web nas regiões primária e secundária.Contoso admins will provision web apps in the primary and secondary regions.
  • Passo 2: Configurar o Gestor de Tráfego.Step 2: Set up Traffic Manager. Configuram o Gestor de Tráfego à frente das aplicações Web, para o encaminhamento e balanceamento de carga do tráfego.They set up Traffic Manager in front of the web apps, for routing and load balancing traffic.
  • Passo 3: Provision Azure Database for MySQL.Step 3: Provision Azure Database for MySQL. No Azure, aprovisionam uma instância da Base de Dados do Azure para MySQL.In Azure, they provision an instance of Azure Database for MySQL.
  • Passo 4: Migrar a base de dados.Step 4: Migrate the database. Migram a base de dados utilizando o Serviço de Migração da Base de Dados Azure.They migrate the database by using Azure Database Migration Service.
  • Passo 5: Configurar o GitHub.Step 5: Set up GitHub. Eles criaram um repositório gitHub local para os sites e código da aplicação.They set up a local GitHub repository for the application web sites and code.
  • Passo 6: Configurar as aplicações web.Step 6: Configure the web apps. Configuram as aplicações web com os websites osTicket.They configure the web apps with the osTicket websites.

Passo 1: Serviço de Aplicação AzureStep 1: Provision Azure App Service

Os administradores da Contoso disponibilizam duas aplicações web (uma em cada região) utilizando o Azure App Service.Contoso admins provision two web apps (one in each region) by using Azure App Service.

  1. Eles criam um recurso de aplicação web ( osticket-eus2 ) na região primária ( East US 2 ) via Azure Marketplace.They create a web app resource (osticket-eus2) in the primary region (East US 2) via Azure Marketplace.

  2. Colocam o recurso no grupo de recursos de ContosoRG produção.They put the resource in the production resource group ContosoRG.

    Screenshot do painel "Web App" para criar uma aplicação web em Linux.

  3. Criam um plano de Serviço de Aplicações, APP-SVP-EUS2, na região primária, e usam o tamanho padrão.They create an App Service plan, APP-SVP-EUS2, in the primary region, and they use the standard size.

    Screenshot do painel "Novo Plano de Serviço de Aplicações" para criar um plano de Serviço de Aplicações.

  4. Selecionam um SO Linux com uma pilha de tempo de execução PHP 7.0, que é um contentor do Docker.They select a Linux OS with PHP 7.0 runtime stack, which is a Docker container.

    Screenshot do painel "Web App", com Linux OS, localização East US 2 e PHP 7.0 selecionados.

  5. Eles criam uma segunda aplicação web, osticket-cus, e um plano de Serviço de Aplicações Azure para a Central US.They create a second web app, osticket-cus, and an Azure App Service plan for Central US.

    Screenshot do painel "Web App", com Linux OS, localização central dos EUA e PHP 7.0 selecionados.

Precisa de mais ajuda?Need more help?

Passo 2: Configurar gestor de tráfegoStep 2: Set up Traffic Manager

Os administradores da Contoso criaram o Traffic Manager para direcionar os pedidos da web de entrada para as aplicações web que estão a ser executadas no nível web osTicket.Contoso admins set up Traffic Manager to direct inbound web requests to the web apps that are running on the osTicket web tier.

  1. No Azure Marketplace, criam um recurso de Gestor de Tráfego, osticket.trafficmanager.net.In Azure Marketplace, they create a Traffic Manager resource, osticket.trafficmanager.net. Eles usam o encaminhamento prioritário para que o East US 2 seja o local principal.They use priority routing so that East US 2 is the primary site. Colocam o recurso no seu grupo de recursos de infraestrutura existente, o ContosoInfraRG.They place the resource in their existing infrastructure resource group, ContosoInfraRG. Observe que o Gestor de Tráfego é global e não está vinculado a um local específico.Note that Traffic Manager is global and not bound to a specific location.

    Screenshot do painel "Criar perfil de gestor de tráfego".

  2. Configuram o Gestor de Tráfego com pontos finais.They configure Traffic Manager with endpoints. Eles adicionam a aplicação web no East US 2 como o site principal, osticket-eus2, e a aplicação web nos EUA central como o site secundário, 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.

    Screenshot do painel "Adicionar ponto final" no Traffic Manager.

  3. Depois de adicionarem os pontos finais, os administradores podem monitorá-los.After they add the endpoints, the admins can monitor them.

    Screenshot do painel endpoints para monitorizar pontos finais no Traffic Manager.

Precisa de mais ajuda?Need more help?

Passo 3: Provisão Azure Database para o MySQLStep 3: Provision Azure Database for MySQL

Os administradores de Contoso prevêem uma placa de base de dados MySQL na região primária, East US 2.Contoso admins provision a MySQL database instance in the primary region, East US 2.

  1. No portal do Azure, criam um recurso de Base de Dados do Azure para MySQL.In the Azure portal, they create an Azure Database for MySQL resource.

    Screenshot da base de dados Azure para a ligação MySQL no portal Azure.

  2. Adicionam o nome contosoosticket à base de dados do Azure.They add the name contosoosticket for the Azure database. Eles adicionam a base de dados ao grupo de recursos de produção ContosoRG e, em seguida, especificam credenciais para ele.They add the database to the production resource group ContosoRG and then specify credentials for it.

  3. A base de dados MySQL no local é a versão 5.7, portanto, selecionam esta versão para compatibilidade.The on-premises MySQL database is version 5.7, so they select this version for compatibility. Utilizam os tamanhos padrão, que correspondem aos respetivos requisitos da base de dados.They use the default sizes, which match their database requirements.

    Screenshot do painel "Servidor MySQL", com a versão 5.7 selecionada.

  4. Para opções de redundância de backup, selecionam Geo-Redundantes.For Backup Redundancy Options, they select Geo-Redundant. Esta opção permite-lhes restaurar a base de dados na sua região secundária (Eua Central) se ocorrer uma paragem.This option allows them to restore the database in their secondary region (Central US) if an outage occurs. Só podem configurar esta opção quando forjam a base de dados.They can configure this option only when they provision the database.

    Screenshot do painel "Opções de Redundância de Backup", com a opção Geo-Redundant selecionada.

  5. Configuram a segurança da ligação.They set up connection security. Na base de dados, selecionam a segurança de Ligação e, em seguida, configuram regras de firewall para permitir que a base de dados aceda aos serviços Azure.In the database, they select Connection security and then set up firewall rules to allow the database to access Azure services.

  6. Adicionam o endereço IP do cliente da estação de trabalho local aos endereços IP inicial e final.They add the local workstation client IP address to the start and end IP addresses. Tal permite que as aplicações Web acedam à base de dados MySQL, juntamente com o cliente da base de dados que está a realizar a migração.This allows the web apps to access the MySQL database, along with the database client that's performing the migration.

    Screenshot do painel de "Connection security", mostrando o acesso aos serviços Azure ligados e o endereço IP do cliente selecionado.

Passo 4: Migrar a base de dadosStep 4: Migrate the database

Existem várias formas de mover a base de dados MySQL.There are several ways to move the MySQL database. Cada opção requer que os administradores do Contoso criem uma Base de Dados Azure para a instância MySQL para o alvo.Each option requires Contoso admins to create an Azure Database for MySQL instance for the target. Depois de criarem o caso, podem migrar a base de dados utilizando um dos dois caminhos:After they create the instance, they can migrate the database by using either of two paths:

  • Passo 4a: Serviço de Migração de Bases de Dados AzureStep 4a: Azure Database Migration Service
  • Passo 4b: MySQL Workbench backup e restauroStep 4b: MySQL Workbench backup and restore

Passo 4a: Migrar a base de dados através do Serviço de Migração da Base de Dados AzureStep 4a: Migrate the database via Azure Database Migration Service

Os administradores do Contoso migram a base de dados através do Serviço de Migração da Base de Dados de Azure, seguindo o tutorial de migração passo a passo.Contoso admins migrate the database via Azure Database Migration Service by following the step-by-step migration tutorial. Podem realizar migrações online, offline e híbridas (pré-visualização) utilizando o MySQL 5.6 ou 5.7.They can perform online, offline, and hybrid (preview) migrations by using MySQL 5.6 or 5.7.

Nota

O MySQL 8.0 é suportado na Base de Dados Azure para o MySQL, mas a ferramenta Serviço de Migração de Bases de Dados ainda não suporta esta versão.MySQL 8.0 is supported in Azure Database for MySQL, but the Database Migration Service tool does not yet support this version.

Em resumo, Contoso faz o seguinte:In brief, Contoso does the following:

  • Asseguram que todos os pré-requisitos de migração sejam cumpridos:They ensure that all migration prerequisites are met:

    • A fonte do servidor de base de dados MySQL deve corresponder à versão que a Base de Dados Azure suporta.The MySQL database server source must match the version that Azure Database for MySQL supports. A Azure Database for MySQL suporta mySQL Community Edition, o motor de armazenamento InnoDB, e migração através da fonte e alvo com as mesmas versões.Azure Database for MySQL supports MySQL Community Edition, the InnoDB storage engine, and migration across source and target with the same versions.

    • Ativam o início binário my.ini (Windows) ou my.cnf (Unix).They enable binary logging in my.ini (Windows) or my.cnf (Unix). Se não o fizer, causará o seguinte erro no Assistente de Migração:Failure to do this will cause the following error in the Migration Wizard:

      "Erro na exploração madeireira binária."Error in binary logging. A binlog_row_image variável tem valor 'mínimo'.Variable binlog_row_image has value 'minimal'. Por favor, mude para 'cheio'.Please change it to 'full'. Para mais informações, consulte https://go.microsoft.com/fwlink/?linkid=873009 ."For more information, see https://go.microsoft.com/fwlink/?linkid=873009."

    • O utilizador deve ter o ReplicationAdmin papel.The user must have the ReplicationAdmin role.

    • Migrar os esquemas de base de dados sem chaves e gatilhos estrangeiros.Migrate the database schemas without foreign keys and triggers.

  • Criam uma rede privada virtual (VPN) que se conecta via ExpressRoute ou VPN à rede no local.They create a virtual private network (VPN) that connects via ExpressRoute or VPN to the on-premises network.

  • Eles criam uma instância do Serviço de Migração de Bases de Dados Azure com um SKU Premium que está ligado à rede virtual.They create an Azure Database Migration Service instance with a Premium SKU that's connected to the virtual network.

  • Garantem que o Serviço de Migração da Base de Dados Azure pode aceder à base de dados MySQL através da rede virtual.They ensure that Azure Database Migration Service can access the MySQL database via the virtual network. Isto implica garantir que todas as portas de entrada são permitidas de Azure a MySQL ao nível da rede virtual, a VPN de rede e a máquina que hospeda o MySQL.This entails 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.

  • Executam a ferramenta do Serviço de Migração da Base de Dados e, em seguida, fazem o seguinte:They run the Database Migration Service tool and then do the following:

    a.a. Crie um projeto de migração baseado no SKU Premium.Create a migration project that's based on the Premium SKU.

    Screenshot do painel de visão geral do MySQL, com uma mensagem a dizer que o serviço de migração foi criado com sucesso.

    Screenshot do painel MySQL "Novo projeto de migração".

    b.b. Adicione uma fonte (base de dados no local).Add a source (on-premises database).

    Screenshot do painel do assistente de migração "Adicionar detalhes de origem".

    c.c. Selecione um alvo.Select a target.

    Screenshot do painel de "Detalhes do alvo" do assistente de migração.

    d.d. Selecione as bases de dados para migrar.Select the databases to migrate.

    Screenshot do painel de bases de dados do assistente de migração "Map to target databases".

    e.e. Configurar configurações avançadas.Configure advanced settings.

    Screenshot do painel de "Configurações de migração" do assistente de migração.

    f.f. Inicie a replicação e resolva quaisquer erros.Start the replication and resolve any errors.

    Screenshot do painel de detalhes do servidor.

    exemplo,g. Execute o corte final.Perform the final cutover.

    Screenshot do painel de detalhes do osTicket.

    Screenshot do painel "Complete cutover".

    Screenshot da tabela de estado das atividades migratórias.

    h.h. Reintegre todas as chaves e gatilhos estrangeiros.Reinstate any foreign keys and triggers.

    i.i. Modifique as aplicações para utilizar a nova base de dados.Modify applications to use the new database.

    Screenshot da tabela "Atividades migratórias".

Passo 4b: Migrar a base de dados (MySQL Workbench)Step 4b: Migrate the database (MySQL Workbench)

  1. Os administradores contoso verificam os pré-requisitos e descarregam mySQL Workbench.The Contoso admins check the prerequisites and downloads MySQL Workbench.

  2. Instalam o MySQL Workbench para Windows, de acordo com as instruções de instalação.They install MySQL Workbench for Windows in accordance with the installation instructions. A máquina onde instalam a bancada mySQL workbench deve estar acessível ao OSTICKETMYSQL VM e ao Azure através da internet.The machine that they install MySQL Workbench on must be accessible to the OSTICKETMYSQL VM and to Azure via the internet.

  3. No MySQL Workbench, criam uma ligação MySQL para OSTICKETMYSQL.In MySQL Workbench, they create a MySQL connection to OSTICKETMYSQL.

    Screenshot do painel de detalhes da ligação MySQL Workbench.

  4. Exportam a base de dados osticket para um ficheiro local.They export the database as osticket to a local self-contained file.

    Screenshot do painel mySQL Workbench "Data Export".

  5. Depois de terem feito o back-base localmente, os administradores criam uma ligação à Base de Dados Azure para o caso MySQL.After they've backed up the database locally, the admins create a connection to the Azure Database for MySQL instance.

    O painel mySQL Workbench "Setup New Connection".

  6. Agora, podem importar (restaurar) a base de dados na Base de Dados Azure para o caso MySQL a partir do ficheiro autossuficiente.Now, they can import (restore) the database in the Azure Database for MySQL instance from the self-contained file. Um novo esquema, osticket é criado, por exemplo.A new schema, osticket, is created for the instance.

    Screenshot do painel mySQL Workbench "Data Import".

  7. Depois de restaurarem os dados, os administradores podem questioná-lo usando a bancada MySQL Workbench.After they've restored the data, the admins can query it by using MySQL Workbench. Os dados são apresentados no portal Azure.The data is displayed in the Azure portal.

    Screenshot do portal Azure, exibindo dados restaurados.

    Screenshot da lâmina das bases de dados My SQL com uma seta apontando para a base de dados de osticket.

  8. Os administradores atualizam as informações da base de dados nas aplicações web.The admins update the database information on the web apps. Na instância do MySQL, abrem as Cadeias de Ligação.On the MySQL instance, they open Connection Strings.

    Screenshot da ligação "Connection Strings" no caso MySQL.

  9. Na lista de cadeias de ligação, selecionam as definições da aplicação web e copiam-nas selecionando Click para copiar.In the connection strings list, they select the web app settings and then copy them by selecting Click to copy.

    Screenshot das definições de aplicações web no exemplo MySQL.

  10. Abrem um novo ficheiro no Bloco de Notas, colam-lhe a corda e atualizam a cadeia para combinar com a base de dados osTicket, a instância mySQL e as definições de credenciais.They open a new file in Notepad, paste the string into it, and update the string to match the osTicket database, MySQL instance, and credentials settings.

    Screenshot da cadeia de ligação colada num ficheiro notepad.

  11. Podem verificar o nome do servidor e iniciar sessão no painel de visão geral no caso MySQL no portal Azure.They can verify the server name and login on the Overview pane in the MySQL instance in the Azure portal.

    Screenshot do painel de grupo de recursos, exibindo o nome do servidor e o nome de login do servidor.

Passo 5: Configurar o GitHubStep 5: Set up GitHub

Os administradores da Contoso criam um novo repo GitHub privado e estabelecem uma ligação à base de dados osTicket na Base de Dados Azure para o MySQL.Contoso admins create a new private GitHub repo and set up a connection to the osTicket database in Azure Database for MySQL. Em seguida, carregam a aplicação Web no Serviço de Aplicações do Azure.Then, they load the web app into Azure App Service.

  1. Eles navegam para o software osTicket public GitHub repo e bifurcê-lo para a conta Contoso GitHub.They browse to the osTicket software public GitHub repo and fork it to the Contoso GitHub account.

    Screenshot da página de repo do GitHub, destacando o botão Fork.

  2. Depois de forquilharem o repo, vão para a pasta de incluí-lo e depois procuram e selecionam o ficheiro ost-config.php.After they fork the repo, they go to the include folder and then look for and select the ost-config.php file.

    Screenshot do ficheiro PHP no GitHub.

  3. O ficheiro abre no navegador e editam-no.The file opens in the browser, and they edit it.

    Screenshot do ícone editar (lápis) no GitHub.

  4. No editor, os administradores atualizam os detalhes da base de dados, especificamente para DBHOST e DBUSER .In the editor, the admins update the database details, specifically for DBHOST and DBUSER.

    Screenshot do painel editar o ficheiro no GitHub.

  5. Cometem as mudanças.They commit the changes.

    Screenshot realçando o botão "Cometer alterações" no painel editar.

  6. Para cada aplicação web (osticket-eus2 e osticket-cus), no portal Azure, selecionam as definições de Aplicação no painel esquerdo e depois modificam as definições.For each web app (osticket-eus2 and osticket-cus), in the Azure portal, they select Application settings on the left pane and then modify the settings.

    Screenshot realçando o link "Definições de aplicação" no portal Azure.

  7. Introduzem a cadeia de ligação com o nome osticket e copiam a cadeia do Bloco de Notas para a área de valor .They enter the connection string with the name osticket, and copy the string from Notepad into the value area. Selecionam MySQL na lista suspensa junta à cadeia e guardam as definições.They select MySQL in the dropdown list next to the string, and save the settings.

    Screenshot do painel "Connection Strings", realçando a cadeia de ligação osTicket.

Passo 6: Configurar as aplicações webStep 6: Configure the web apps

Como o passo final no processo de migração, os administradores da Contoso configuram as aplicações web com os websites osTicket.As the final step in the migration process, Contoso admins configure the web apps with the osTicket websites.

  1. Na aplicação web primária, osticket-eus2, abrem a opção de Implementação e, em seguida, definem a fonte para o GitHub.In the primary web app, osticket-eus2, they open Deployment option and then set the source to GitHub.

    Screenshot do painel "Opção de Implementação", com GitHub selecionado como a fonte.

  2. Selecionam as opções de implementação.They select the deployment options.

    Screenshot dos detalhes da opção no painel "Opção de implementação".

  3. Depois de definirem as opções, a configuração mostra como pendente no portal Azure.After they set the options, the configuration shows as Pending in the Azure portal.

    Screenshot do painel "Opções de implementação", mostrando o estado do site pendente.

  4. Após a configuração ser atualizada e a aplicação web osTicket é carregada do GitHub para o contentor Docker que executa o Serviço de Aplicações Azure, o site mostra como Ativo.After the configuration is updated and the osTicket web app is loaded from GitHub to the Docker container that runs the Azure App Service, the site shows as Active.

    Screenshot do painel "Opções de implantação".

  5. Repetem os passos anteriores para a aplicação web secundária, osticket-cus.They repeat the preceding steps for the secondary web app, osticket-cus.

  6. Depois de o site ser configurado, este é acessível através do perfil do Gestor de Tráfego.After the site is configured, it's accessible via the Traffic Manager profile. O nome DNS é a nova localização da aplicação osTicket.The DNS name is the new location of the osTicket application. Saiba mais.Learn more.

    Screenshot do painel de perfil do Gestor de Tráfego, exibindo o nome DNS.

  7. Contoso quer usar um nome DNS que seja fácil de lembrar.Contoso wants to use a DNS name that's easy to remember. No painel New Resource Record, eles criam um pseudónimo, CNAME, e um nome de domínio qualificado completo, osticket.contoso.com, que aponta para o nome de Gestor de Tráfego no DNS nos seus controladores de domínio.On the New Resource Record pane, they create an alias, CNAME, and a full qualified domain name, osticket.contoso.com, which points to the Traffic Manager name in the DNS on their domain controllers.

    Screenshot do painel "New Resource Record", exibindo o nome do pseudónimo e um ponteiro para o Gestor de Tráfego.

  8. Configuram as aplicações web osticket-eus2 e osticket-cus para permitir os nomes de anfitriões personalizados.They configure both the osticket-eus2 and osticket-cus web apps to allow the custom host names.

    Screenshot do painel "Nome de anfitrião de anúncio", realçando o botão Valide.

Configurar o dimensionamento automáticoSet up autoscaling

Finalmente, os administradores do Contoso criaram um escalonamento automático para a aplicação.Finally, the Contoso admins set up automatic scaling for the application. O dimensionamento automático garante que, à medida que os agentes utilizam a aplicação, as instâncias de aplicação aumentam e diminuem de acordo com as necessidades do negócio.Automatic scaling ensures that, as agents use the application, the application instances increase and decrease according to business needs.

  1. No Serviço de Aplicações APP-SVP-EUS2, abrem a Unidade de Escala.In App Service APP-SVP-EUS2, they open Scale Unit.

  2. Configuram uma nova definição de autoescala com uma única regra que aumenta a contagem de exemplos por uma quando o uso do CPU para a instância atual é superior a 70 por cento durante 10 minutos.They configure a new autoscale setting with a single rule that increases the instance count by one when the CPU usage for the current instance is above 70 percent for 10 minutes.

    Screenshot da página de definições de Autoscale para a primeira região.

  3. Configuram a mesma definição no APP-SVP-CUS para garantir que o mesmo comportamento se aplica se a aplicação falhar na região secundária.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. A única diferença é que eles definem a instância padrão para 1, porque isto é apenas para falhas.The only difference is that they set the default instance to 1, because this is for failovers only.

    Screenshot da página de definições de Autoscale para a segunda região.

Limpeza após a migraçãoClean up after migration

Com a migração completa, a aplicação osTicket é refactada para funcionar numa aplicação web do Azure App Service com entrega contínua utilizando um repo GitHub privado.With the migration complete, the osTicket application is refactored to run in an Azure App Service web app with continuous delivery by using a private GitHub repo. A candidatura decorre em duas regiões para aumentar a resiliência.The application runs in two regions for increased resilience. A base de dados osTicket funciona na Base de Dados Azure para o MySQL após a migração para a plataforma PaaS.The osTicket database runs in Azure Database for MySQL after migration to the PaaS platform.

Para limpar após a migração, Contoso faz o seguinte:To clean up after the migration, Contoso does the following:

  • Retiram os VMware VM do inventário vCenter.They remove the VMware VMs from the vCenter inventory.
  • Retiram os VMs dos empregos de apoio locais.They remove the on-premises VMs from local backup jobs.
  • Atualizam a documentação interna para mostrar novas localizações e endereços IP.They update internal documentation to show new locations and IP addresses.
  • Revejam quaisquer recursos que interajam com os VMs no local e atualizam quaisquer definições ou documentação relevantes para refletir a nova configuração.They review any resources that interact with the on-premises VMs, and update any relevant settings or documentation to reflect the new configuration.
  • Reconfiguram a monitorização para apontar para o osticket-trafficmanager.net URL, para rastrear que a aplicação está em funcionamento.They reconfigure monitoring to point to the osticket-trafficmanager.net URL, to track that the application is up and running.

Rever a implementaçãoReview the deployment

Com a aplicação agora em curso, a Contoso precisa de operacionalizar e assegurar plenamente a sua nova infraestrutura.With the application now running, Contoso needs to fully operationalize and secure their new infrastructure.

SegurançaSecurity

A equipa de segurança da Contoso revê o pedido para determinar quaisquer problemas de segurança.The Contoso security team reviews the application to determine any security issues. Eles identificam que a comunicação entre a aplicação osTicket e a instância da base de dados MySQL não está configurada para SSL.They identify that the communication between the osTicket application and the MySQL database instance isn't configured for SSL. Fazem tudo isto para garantir que o tráfego da base de dados não possa ser pirateado.They do all this to ensure that the database traffic can't be hacked. Saiba mais.Learn more.

Cópias de segurançaBackups

  • As aplicações web osTicket não contêm dados do estado e, portanto, não necessitam de cópias de segurança.The osTicket web apps don't contain state data and thus don't require backup.
  • A equipa do Contoso não precisa de configurar cópias de segurança para a base de dados.The Contoso team doesn't need to configure backup for the database. A Base de Dados do Azure para MySQL cria e armazena cópias de segurança do servidor automaticamente.Azure Database for MySQL automatically creates server backups and stores. A equipa optou por usar geo-redundância para a base de dados, por isso é resistente e pronto para a produção.The team elected to use geo-redundancy for the database, so it's resilient and production-ready. As cópias de segurança podem ser usadas para restaurar o seu servidor num ponto a tempo.Backups can be used to restore their server to a point-in-time. Saiba mais.Learn more.

Licenciamento e otimização de custosLicensing and cost optimization

  • Não há problemas de licenciamento para a implementação de PaaS.There are no licensing issues for the PaaS deployment.
  • A Contoso utilizará a Azure Cost Management e a Billing para garantir que se mantenham dentro dos orçamentos estabelecidos pela sua liderança em TI.Contoso will use Azure Cost Management and Billing to ensure that they stay within the budgets established by their IT leadership.