Refatorar um aplicativo do Linux usando o serviço Azure App, o Gerenciador de tráfego e o banco de dados do Azure para 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 refatoria um aplicativo baseado em lâmpada de duas camadas, migrando-o do local para o Azure usando Azure app serviço com a integração do GitHub e o banco de dados do Azure para 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.

osTicket, o aplicativo da central de serviços que usamos neste exemplo, é fornecido como código aberto.osTicket, the service desk application that we use in this example, is provided as open source. Se você quiser usá-lo para suas próprias finalidades de teste, você pode baixá-lo do repositório osTicket no GitHub.If you want to use it for your own testing purposes, you can download it from the osTicket repo in GitHub.

Geradores de negóciosBusiness drivers

A equipe de liderança de ti trabalhou junto com parceiros de negócios para entender o que desejam obter:The IT leadership team has worked closely with business partners to understand what they want to achieve:

  • Resolva o crescimento dos negócios.Address business growth. A Contoso está crescendo e movendo-se para novos mercados.Contoso is growing and moving into new markets. Ela precisa de mais agentes de atendimento ao cliente.It needs additional customer service agents.
  • Dimensão.Scale. A solução deve ser criada para que a Contoso possa adicionar mais agentes de atendimento ao cliente à medida que os negócios crescem.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 afetaram apenas os usuários internos.In the past, issues with the system affected internal users only. Com o novo modelo de negócios, os usuários externos serão afetados e a contoso precisará do aplicativo em execução o tempo todo.With the new business model, external users will be affected, and Contoso needs the application up and running at all times.

Metas de migraçãoMigration goals

Para determinar o melhor método de migração, a equipe de nuvem da Contoso se deparou com suas metas para essa migração:To determine the best migration method, the Contoso cloud team has pinned down their goals for this migration:

  • O aplicativo deve ser dimensionado além da capacidade e do desempenho locais atuais.The application should scale beyond current on-premises capacity and performance. A Contoso está movendo o aplicativo para usar a colocação em escala sob demanda do Azure.Contoso is moving the application to take advantage of Azure's on-demand scaling.
  • A contoso deseja mover a base de código do aplicativo para um pipeline de entrega contínua.Contoso wants to move the application code base to a continuous delivery pipeline. Conforme as alterações do aplicativo são enviadas para o GitHub, a contoso deseja implantar essas alterações sem tarefas para a equipe de operações.As application changes are pushed to GitHub, Contoso wants to deploy those changes without tasks for operations staff.
  • O aplicativo deve ser resiliente, com recursos de crescimento e failover.The application must be resilient, with capabilities for growth and failover. A contoso deseja implantar o aplicativo em duas regiões diferentes do Azure e configurá-la para ser dimensionada automaticamente.Contoso wants to deploy the application in two different Azure regions and set it up to scale automatically.
  • A Contoso deseja minimizar as tarefas de administração do banco de dados depois que o aplicativo é movido para a nuvem.Contoso wants to minimize database admin tasks after the application is moved to the cloud.

Design da soluçãoSolution design

Depois de fixar suas metas e requisitos, a Contoso cria e examina uma solução de implantação e identifica o processo de migração, incluindo os serviços do Azure que serão usados 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

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

Diagrama da arquitetura atual.

Arquitetura propostaProposed architecture

Aqui está a arquitetura proposta:Here's the proposed architecture:

  • O aplicativo da camada da Web no OSTICKETWEB será migrado com a criação de um aplicativo Web do serviço de Azure app 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 equipe da Contoso implementará o serviço Azure App para Linux usando o contêiner do Docker do PHP 7,0.The Contoso team will implement Azure App Service for Linux by using the PHP 7.0 Docker container.
  • O código do aplicativo será movido para o GitHub e o aplicativo Web do serviço de Azure App será configurado 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.
  • Azure App serviço será implantado na região primária ( East US 2 ) e na 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 Gerenciador de tráfego do Azure será configurado na frente dos dois aplicativos Web em ambas as regiões.Azure Traffic Manager will be set up in front of the two web apps in both regions.
  • O Gerenciador de tráfego será configurado no modo de prioridade para forçar o tráfego East US 2 .Traffic Manager will be configured in priority mode to force the traffic through East US 2.
  • Se o servidor de aplicativos do Azure no East US 2 ficar offline, os usuários poderão acessar o aplicativo com failover no Central US .If the Azure app server in East US 2 goes offline, users can access the failed over application in Central US.
  • O banco de dados do aplicativo será migrado para o serviço de banco de dados do Azure para MySQL usando o serviço de migração de banco de dados do Azure.The application database will be migrated to the Azure Database for MySQL service by using Azure Database Migration Service. O backup do banco de dados local será realizado localmente e ele será restaurado diretamente para o Banco de Dados do Azure para MySQL.The on-premises database will be backed up locally, and restored directly to Azure Database for MySQL.
  • O banco de dados residirá na região primária ( East US 2 ) na sub-rede do banco 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).
  • Como eles estão migrando uma carga de trabalho de produção, os recursos do Azure para o aplicativo residirão no grupo de recursos de produção ContosoRG .Since they're migrating a production workload, Azure resources for the application will reside in the production resource group ContosoRG.
  • O recurso do Gerenciador de tráfego será implantado no grupo de recursos de infraestrutura da Contoso ContosoInfraRG .The Traffic Manager resource will be deployed in Contoso's infrastructure resource group ContosoInfraRG.
  • As VMs locais no datacenter da Contoso serão descomissionadas após a 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

A contoso conclui o processo de migração da seguinte maneira:Contoso completes the migration process as follows:

  1. Como primeira etapa, os administradores da Contoso configuram a infraestrutura do Azure, incluindo o serviço de Azure App de provisionamento, a configuração do Gerenciador de tráfego e o provisionamento de uma instância do banco de dados do Azure para 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 do Azure, eles migram o banco de dados usando o serviço de migração de banco de dados do Azure.After preparing the Azure infrastructure, they migrate the database by using Azure Database Migration Service.
  3. Depois que o banco de dados estiver em execução no Azure, ele carregará um repositório particular do GitHub para Azure App serviço com entrega contínua e carregá-lo com o aplicativo 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 do Azure, eles carregam o aplicativo do GitHub para o contêiner do Docker executando Azure App Service.In the Azure portal, they load the application from GitHub to the Docker container by running Azure App Service.
  5. Eles ajustam as configurações de DNS e configuram o dimensionamento automático para o aplicativo.They tweak DNS settings and configure autoscaling for the application.

Diagrama do processo de migração da contoso.

Serviços do AzureAzure services

ServiçoService DescriçãoDescription CustoCost
Serviço de Aplicativo do AzureAzure App Service O serviço executa e dimensiona aplicativos usando a PaaS (plataforma como serviço) do Azure para sites.The service runs and scales applications by using Azure platform as a service (PaaS) for websites. O preço é baseado no tamanho das instâncias e dos recursos necessários.Pricing is based on the size of the instances and the features required. Saiba mais.Learn more.
Gerenciador de Tráfego do AzureAzure Traffic Manager Um balanceador de carga que usa o DNS (sistema de nomes de domínio) para direcionar os usuários 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. O preço é baseado no número de consultas de DNS recebidas e no número de pontos de extremidade monitorados.Pricing is based on the number of received DNS queries and the number of monitored endpoints. Saiba mais.Learn more.
Serviço de Migração de Banco de Dados do AzureAzure Database Migration Service O serviço de migração de banco de dados do Azure permite a migração direta de várias fontes de banco de dados para plataformas do Azure, com tempo de inatividadeAzure Database Migration Service enables seamless migration from multiple database sources to Azure data platforms, with minimal downtime. Saiba mais sobre regiões com suporte e preços do serviço de migração de banco de dados.Learn about supported regions and Database Migration Service pricing.
Banco de Dados do Azure para MySQLAzure Database for MySQL O banco de dados é baseado no mecanismo de banco de dados MySQL de código aberto.The database is based on the open-source MySQL database engine. Ele fornece um banco de dados MySQL da Comunidade pronta para a empresa totalmente gerenciado para desenvolvimento e implantação de aplicativos.It provides a fully managed, enterprise-ready community MySQL database for application development and deployment. O preço é baseado em requisitos de computação, armazenamento e backup.Pricing is based on compute, storage, and backup requirements. Saiba mais.Learn more.

Pré-requisitosPrerequisites

Para executar esse cenário, a Contoso deve atender aos seguintes pré-requisitos:To run this scenario, Contoso must meet the following prerequisites:

RequisitosRequirements DetalhesDetails
Assinatura do AzureAzure subscription A Contoso criou assinaturas anteriormente nesta série de artigos.Contoso created subscriptions earlier in this article series. Se você não tiver uma assinatura do Azure, crie uma conta gratuita.If you don't have an Azure subscription, create a free account.

Se você criar uma conta gratuita, será o administrador da assinatura 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 você usar uma assinatura existente e não for o administrador, será necessário trabalhar com o administrador para receber permissões de Proprietário ou de 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.
Infraestrutura do AzureAzure infrastructure A Contoso configura a infraestrutura do Azure conforme descrito em Infraestrutura do Azure para migração.Contoso set up their Azure infrastructure as described in Azure infrastructure for migration.

Etapas do cenárioScenario steps

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

  • Etapa 1: Provisionar Azure app serviço.Step 1: Provision Azure App Service. Os administradores da Contoso provisionarão aplicativos Web nas regiões primárias e secundárias.Contoso admins will provision web apps in the primary and secondary regions.
  • Etapa 2: configurar o Gerenciador de tráfego.Step 2: Set up Traffic Manager. Eles configuram o Gerenciador de Tráfego na frente dos aplicativos Web para balanceamento de carga e roteamento de tráfego.They set up Traffic Manager in front of the web apps, for routing and load balancing traffic.
  • Etapa 3: provisionar o banco de dados do Azure para MySQL.Step 3: Provision Azure Database for MySQL. No Azure, eles provisionam uma instância do Banco de Dados do Azure para MySQL.In Azure, they provision an instance of Azure Database for MySQL.
  • Etapa 4: migre o banco de dados.Step 4: Migrate the database. Eles migram o banco de dados usando o serviço de migração de banco de dados do Azure.They migrate the database by using Azure Database Migration Service.
  • Etapa 5: configurar o GitHub.Step 5: Set up GitHub. Eles configuram um repositório GitHub local para os sites e o código do aplicativo.They set up a local GitHub repository for the application web sites and code.
  • Etapa 6: configurar os aplicativos Web.Step 6: Configure the web apps. Eles configuram os aplicativos Web com os sites osTicket.They configure the web apps with the osTicket websites.

Etapa 1: provisionar Azure App serviçoStep 1: Provision Azure App Service

Os administradores da Contoso provisionam dois aplicativos Web (um em cada região) usando o serviço Azure App.Contoso admins provision two web apps (one in each region) by using Azure App Service.

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

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

    Captura de tela do painel "aplicativo Web" para criar um aplicativo Web no Linux.

  3. Eles criam um plano do serviço de aplicativo, 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.

    Captura de tela do painel "novo plano do serviço de aplicativo" para criar um plano do serviço de aplicativo.

  4. Eles selecionam um sistema operacional Linux com a pilha de runtime do PHP 7.0, que é um contêiner do Docker.They select a Linux OS with PHP 7.0 runtime stack, which is a Docker container.

    Captura de tela do painel "aplicativo Web", com SO Linux, local leste dos EUA 2 e PHP 7,0 selecionados.

  5. Eles criam um segundo aplicativo Web, osTicket-cuse um Azure app plano de serviço para EUA Central.They create a second web app, osticket-cus, and an Azure App Service plan for Central US.

    Captura de tela do painel "aplicativo Web", com SO Linux, EUA Central local e PHP 7,0 selecionados.

Precisa de mais ajuda?Need more help?

Etapa 2: Configurar o Gerenciador de TráfegoStep 2: Set up Traffic Manager

Os administradores da Contoso configuram o Gerenciador de tráfego para direcionar solicitações da Web de entrada para os aplicativos Web que estão em execução na camada da 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, eles criam um recurso do Gerenciador de tráfego, osTicket.trafficmanager.net.In Azure Marketplace, they create a Traffic Manager resource, osticket.trafficmanager.net. Eles usam o roteamento prioritário para que o leste dos EUA 2 seja o site primário.They use priority routing so that East US 2 is the primary site. Eles colocam o recurso em seu grupo de recursos de infraestrutura existente, ContosoInfraRG.They place the resource in their existing infrastructure resource group, ContosoInfraRG. Observe que o Gerenciador de Tráfego é global, e não associado a uma localização específica.Note that Traffic Manager is global and not bound to a specific location.

    Captura de tela do painel "criar perfil do Gerenciador de tráfego".

  2. Eles configuram o Gerenciador de tráfego com pontos de extremidade.They configure Traffic Manager with endpoints. Eles adicionam o aplicativo Web no leste dos EUA 2 como o site primário, osTicket-eus2e o aplicativo web no 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.

    Captura de tela do painel "Adicionar ponto de extremidade" no Gerenciador de tráfego.

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

    Captura de tela do painel pontos de extremidade para monitorar pontos de extremidade no Gerenciador de tráfego.

Precisa de mais ajuda?Need more help?

Etapa 3: Provisionar o Banco de Dados do Azure para MySQLStep 3: Provision Azure Database for MySQL

Os administradores da Contoso provisionam uma instância do banco de dados MySQL na região primária, leste dos EUA 2.Contoso admins provision a MySQL database instance in the primary region, East US 2.

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

    Captura de tela do link banco de dados do Azure para MySQL no portal do Azure.

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

  3. O banco de dados MySQL local é a versão 5.7 e, portanto, ela escolhe essa versão por questões de compatibilidade.The on-premises MySQL database is version 5.7, so they select this version for compatibility. Ela usa os tamanhos padrão que correspondem aos requisitos de banco de dados.They use the default sizes, which match their database requirements.

    Captura de tela do painel "MySQL Server", com a versão 5,7 selecionada.

  4. Para Opções de redundância de backup, elas selecionam redundância geográfica.For Backup Redundancy Options, they select Geo-Redundant. Essa opção permite que eles restaurem o banco de dados em sua região secundária (EUA Central) se ocorrer uma interrupção.This option allows them to restore the database in their secondary region (Central US) if an outage occurs. Eles podem configurar essa opção somente quando provisionam o banco de dados.They can configure this option only when they provision the database.

    Captura de tela do painel "opções de redundância de backup", com a opção com redundância geográfica selecionada.

  5. Eles configuram a segurança da conexão.They set up connection security. No banco de dados, selecione segurança de conexão e configure as regras de firewall para permitir que o banco de dados acesse os serviços do Azure.In the database, they select Connection security and then set up firewall rules to allow the database to access Azure services.

  6. Ela adiciona o endereço IP do cliente da estação de trabalho local para os endereços IP inicial e final.They add the local workstation client IP address to the start and end IP addresses. Isso permite que os aplicativos Web acessem o banco de dados MySQL, juntamente com o cliente do banco de dados que está realizando a migração.This allows the web apps to access the MySQL database, along with the database client that's performing the migration.

    Captura de tela do painel "segurança de conexão", mostrando o acesso aos serviços do Azure ativados e o endereço IP do cliente selecionado.

Etapa 4: Migrar o banco de dadosStep 4: Migrate the database

Há várias maneiras de mover o banco de dados MySQL.There are several ways to move the MySQL database. Cada opção requer que os administradores da Contoso criem uma instância do banco de dados do Azure para MySQL para o destino.Each option requires Contoso admins to create an Azure Database for MySQL instance for the target. Depois de criar a instância, eles podem migrar o banco de dados usando um dos dois caminhos:After they create the instance, they can migrate the database by using either of two paths:

  • Etapa 4a: serviço de migração de banco de dados do AzureStep 4a: Azure Database Migration Service
  • Etapa 4B: backup e restauração do MySQL WorkbenchStep 4b: MySQL Workbench backup and restore

Etapa 4a: migrar o banco de dados via serviço de migração de banco de dados do AzureStep 4a: Migrate the database via Azure Database Migration Service

Os administradores da Contoso migram o banco de dados por meio do serviço de migração de banco de dados do 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. Eles podem executar migrações online, offline e híbrida (visualização) usando o MySQL 5,6 ou 5,7.They can perform online, offline, and hybrid (preview) migrations by using MySQL 5.6 or 5.7.

Observação

O MySQL 8,0 tem suporte no banco de dados do Azure para MySQL, mas a ferramenta de serviço de migração de banco de dados ainda não dá suporte a essa 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, a contoso faz o seguinte:In brief, Contoso does the following:

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

    • A origem do servidor de banco de dados MySQL deve corresponder à versão que o banco de dados do Azure para MySQL dá suporte.The MySQL database server source must match the version that Azure Database for MySQL supports. O banco de dados do Azure para MySQL dá suporte ao MySQL Community Edition, ao mecanismo de armazenamento InnoDB e à migração entre a origem e o destino 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.

    • Eles habilitam o registro em log binário no my.ini (Windows) ou my.cnf (Unix).They enable binary logging in my.ini (Windows) or my.cnf (Unix). A falha em fazer isso causará o seguinte erro no assistente de migração:Failure to do this will cause the following error in the Migration Wizard:

      "Erro no log binário."Error in binary logging. A variável binlog_row_image tem o valor ' minimal '.Variable binlog_row_image has value 'minimal'. Altere-o para ' completo '.Please change it to 'full'. Para obter mais informações, consulte https://go.microsoft.com/fwlink/?linkid=873009 . "For more information, see https://go.microsoft.com/fwlink/?linkid=873009."

    • O usuário deve ter a ReplicationAdmin função.The user must have the ReplicationAdmin role.

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

  • Eles criam uma VPN (rede virtual privada) que se conecta via ExpressRoute ou VPN à rede 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 banco de dados do Azure com uma SKU Premium que está conectada à rede virtual.They create an Azure Database Migration Service instance with a Premium SKU that's connected to the virtual network.

  • Eles garantem que o serviço de migração de banco de dados do Azure possa acessar o banco de dados MySQL por meio da rede virtual.They ensure that Azure Database Migration Service can access the MySQL database via the virtual network. Isso implica garantir que todas as portas de entrada sejam permitidas do Azure para o MySQL no nível da rede virtual, da VPN de rede e da 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.

  • Eles executam a ferramenta serviço de migração de banco 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.

    Captura de tela do painel de visão geral do MySQL, com uma mensagem dizendo que o serviço de migração foi criado com êxito.

    Captura de tela do painel "novo projeto de migração" do MySQL.

    b.b. Adicione uma origem (banco de dados local).Add a source (on-premises database).

    Captura de tela do painel "adicionar detalhes da fonte" do assistente de migração.

    c.c. Selecione um destino.Select a target.

    Captura de tela do painel "detalhes de destino" do assistente de migração.

    d.d. Selecione os bancos de dados a serem migrados.Select the databases to migrate.

    Captura de tela do painel "mapear para bancos de dados de destino" do assistente de migração.

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

    Captura de tela do painel "configurações de migração" do assistente de migração.

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

    Captura de tela do painel de detalhes do servidor.

    g.g. Execute a transferência final.Perform the final cutover.

    Captura de tela do painel detalhes do osTicket.

    Captura de tela do painel "concluir a transição".

    Captura de tela da tabela de status de atividades de migração.

    h.h. Reaplicar quaisquer chaves e gatilhos estrangeiros.Reinstate any foreign keys and triggers.

    i.i. Modifique os aplicativos para usar o novo banco de dados.Modify applications to use the new database.

    Captura de tela da tabela "atividades de migração".

Etapa 4B: migrar o banco de dados (MySQL Workbench)Step 4b: Migrate the database (MySQL Workbench)

  1. Os administradores da Contoso verificam os pré-requisitos e baixam o MySQL Workbench.The Contoso admins check the prerequisites and downloads MySQL Workbench.

  2. Ela instala o Workbench do MySQL para Windows de acordo com as instruções de instalação.They install MySQL Workbench for Windows in accordance with the installation instructions. O computador em que eles instalam o MySQL Workbench deve estar acessível para a VM OSTICKETMYSQL e para o Azure pela Internet.The machine that they install MySQL Workbench on must be accessible to the OSTICKETMYSQL VM and to Azure via the internet.

  3. No Workbench do MySQL, ela cria uma conexão MySQL para OSTICKETMYSQL.In MySQL Workbench, they create a MySQL connection to OSTICKETMYSQL.

    Captura de tela do painel de detalhes de conexão do MySQL Workbench.

  4. Eles exportam o banco de dados como osticket para um arquivo independente local.They export the database as osticket to a local self-contained file.

    Captura de tela do painel "exportação de dados" do MySQL Workbench.

  5. Depois de fazer backup do banco de dados localmente, os administradores criam uma conexão com a instância do banco de dados do Azure para MySQL.After they've backed up the database locally, the admins create a connection to the Azure Database for MySQL instance.

    O painel "configurar nova conexão" do MySQL Workbench.

  6. Agora, eles podem importar (restaurar) o banco de dados na instância do banco de dados do Azure para MySQL do arquivo independente.Now, they can import (restore) the database in the Azure Database for MySQL instance from the self-contained file. Um novo esquema, osticket , é criado para a instância do.A new schema, osticket, is created for the instance.

    Captura de tela do painel "importação de dados" do MySQL Workbench.

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

    Captura de tela da portal do Azure, exibindo dados restaurados.

    Captura de tela da portal do Azure, exibindo dados restaurados.

  8. Os administradores atualizam as informações do banco de dados nos aplicativos Web.The admins update the database information on the web apps. Na instância do MySQL, ela abre Cadeias de conexão.On the MySQL instance, they open Connection Strings.

    Captura de tela do link "cadeias de conexão" na instância do MySQL.

  9. Na lista cadeias de conexão, selecione as configurações do aplicativo Web e copie-as selecionando clicar para copiar.In the connection strings list, they select the web app settings and then copy them by selecting Click to copy.

    Captura de tela das configurações do aplicativo Web na instância do MySQL.

  10. Eles abrem um novo arquivo no bloco de notas, colam a cadeia de caracteres nela e atualizam a cadeia de caracteres para corresponder às configurações de banco de dados, instância do MySQL e credenciais do osTicket.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.

    Captura de tela da cadeia de conexão colada em um arquivo do bloco de notas.

  11. Eles podem verificar o nome do servidor e fazer logon no painel visão geral na instância do MySQL no portal do Azure.They can verify the server name and login on the Overview pane in the MySQL instance in the Azure portal.

    Captura de tela do painel grupo de recursos, exibindo o nome do servidor e o nome de logon do administrador do servidor.

Etapa 5: Configurar o GitHubStep 5: Set up GitHub

Os administradores da Contoso criam um novo repositório GitHub privado e configuram uma conexão com o banco de dados osTicket no banco de dados do Azure para 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, eles carregam o aplicativo Web no Serviço de Aplicativo do Azure.Then, they load the web app into Azure App Service.

  1. Eles navegam até o repositório GitHub público do osTicket software e o bifurcam para a conta do GitHub da contoso.They browse to the osTicket software public GitHub repo and fork it to the Contoso GitHub account.

    Captura de tela da página do repositório do GitHub, destacando o botão de bifurcação.

  2. Depois de bifurcar o repositório, eles vão para a pasta include e, em seguida, procuram e selecionam o arquivo 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.

    Captura de tela do arquivo PHP no GitHub.

  3. O arquivo é aberto no navegador e é editado.The file opens in the browser, and they edit it.

    Captura de tela do ícone de edição de arquivo (lápis) no GitHub.

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

    Captura de tela do painel de edição de arquivo no GitHub.

  5. Eles confirmam as alterações.They commit the changes.

    Captura de tela destacando o botão "confirmar alterações" no painel de edição.

  6. Para cada aplicativo Web (osTicket-eus2 e osTicket-cus), na portal do Azure, eles selecionam configurações do aplicativo no painel esquerdo e, em seguida, modificam as configuraçõ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.

    Captura de tela destacando o link "configurações do aplicativo" no portal do Azure.

  7. Eles inserem a cadeia de conexão com o nome osticket e copiam a cadeia de caracteres do bloco de notas para a área valor.They enter the connection string with the name osticket, and copy the string from Notepad into the value area. Ela seleciona MySQL na lista suspensa ao lado da cadeia de caracteres e salva as configurações.They select MySQL in the dropdown list next to the string, and save the settings.

    Captura de tela do painel "cadeias de conexão", destacando a cadeia de conexão osTicket.

Etapa 6: configurar os aplicativos WebStep 6: Configure the web apps

Como a etapa final do processo de migração, os administradores da Contoso configuram os aplicativos Web com os sites osTicket.As the final step in the migration process, Contoso admins configure the web apps with the osTicket websites.

  1. No aplicativo Web primário, osTicket-eus2, eles abrem a opção de implantação e, em seguida, definem a origem como GitHub.In the primary web app, osticket-eus2, they open Deployment option and then set the source to GitHub.

    Captura de tela do painel "opção de implantação", com o GitHub selecionado como a origem.

  2. Ela seleciona as opções de implantação.They select the deployment options.

    Captura de tela dos detalhes da opção no painel "opção de implantação".

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

    Captura de tela do painel "opções de implantação", mostrando um status de site pendente.

  4. Depois que a configuração for atualizada e o aplicativo Web osTicket for carregado do GitHub para o contêiner do Docker que executa o serviço de Azure App, o site será exibido 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.

    Captura de tela do painel "opções de implantação".

  5. Eles repetim as etapas anteriores para o aplicativo Web secundário, osTicket-cus.They repeat the preceding steps for the secondary web app, osticket-cus.

  6. Após a configuração do site, ele estará acessível por meio do perfil do Gerenciador de Tráfego.After the site is configured, it's accessible via the Traffic Manager profile. O nome DNS é o novo local do aplicativo osTicket.The DNS name is the new location of the osTicket application. Saiba mais.Learn more.

    Captura de tela do painel perfil do Gerenciador de tráfego, exibindo o nome DNS.

  7. A contoso deseja usar um nome DNS que seja fácil de lembrar.Contoso wants to use a DNS name that's easy to remember. No painel novo registro de recurso , eles criam um alias, CNAMEe um nome de domínio totalmente qualificado, osTicket.contoso.com, que aponta para o nome do Gerenciador de tráfego no DNS em 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.

    Captura de tela do painel "novo registro de recurso", exibindo o nome do alias e um ponteiro para o Gerenciador de tráfego.

  8. Eles configuram os aplicativos Web osTicket-eus2 e osTicket-cus para permitir os nomes de host personalizados.They configure both the osticket-eus2 and osticket-cus web apps to allow the custom host names.

    Captura de tela do painel "nome do host do AD", realçando o botão Validar.

Configurar o dimensionamento automáticoSet up autoscaling

Por fim, os administradores da Contoso configuram o dimensionamento automático para o aplicativo.Finally, the Contoso admins set up automatic scaling for the application. O dimensionamento automático garante que, à medida que os agentes usam o aplicativo, as instâncias do aplicativo aumentam e diminuem de acordo com as necessidades dos negócios.Automatic scaling ensures that, as agents use the application, the application instances increase and decrease according to business needs.

  1. No aplicativo do serviço de aplicativo-SVP-EUS2, eles abrem a unidade de escala.In App Service APP-SVP-EUS2, they open Scale Unit.

  2. Eles definem uma nova configuração de dimensionamento automático com uma única regra que aumenta a contagem de instâncias em um quando o uso da CPU para a instância atual está acima de 70 por cento por 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.

    Captura de tela da página de configurações de dimensionamento automático para a primeira região.

  3. Eles definem a mesma configuração em app-SVP-cus para garantir que o mesmo comportamento se aplique se o aplicativo fizer failover para a 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 como 1, porque isso se destina apenas a failovers.The only difference is that they set the default instance to 1, because this is for failovers only.

    Captura de tela da página de configurações de dimensionamento automático para a segunda região.

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

Com a migração concluída, o aplicativo osTicket é refatorado para ser executado em um aplicativo Web do serviço de Azure App com entrega contínua usando um repositório 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. O aplicativo é executado em duas regiões para aumentar a resiliência.The application runs in two regions for increased resilience. O banco de dados osTicket é executado no banco de dados do Azure para 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, a contoso faz o seguinte:To clean up after the migration, Contoso does the following:

  • Eles removem as VMs do VMware do inventário do vCenter.They remove the VMware VMs from the vCenter inventory.
  • Eles remover as VMs de local de trabalhos de backup locais.They remove the on-premises VMs from local backup jobs.
  • Eles atualizam a documentação interna para mostrar novos locais e endereços IP.They update internal documentation to show new locations and IP addresses.
  • Eles revisam todos os recursos que interagem com as VMs locais e atualizam quaisquer configurações ou documentações 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.
  • Eles reconfiguram o monitoramento para apontar para a osticket-trafficmanager.net URL, para rastrear que o aplicativo está em execução.They reconfigure monitoring to point to the osticket-trafficmanager.net URL, to track that the application is up and running.

Revisar a implantaçãoReview the deployment

Agora, com o aplicativo em execução, a contoso precisa operar totalmente e proteger sua nova infraestrutura.With the application now running, Contoso needs to fully operationalize and secure their new infrastructure.

SegurançaSecurity

A equipe de segurança da Contoso revisa o aplicativo 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 o aplicativo osTicket e a instância do banco 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. Eles fazem tudo isso para garantir que o tráfego do banco de dados não possa ser invadido.They do all this to ensure that the database traffic can't be hacked. Saiba mais.Learn more.

BackupsBackups

  • Os aplicativos Web osTicket não contêm dados de estado e, portanto, não exigem backup.The osTicket web apps don't contain state data and thus don't require backup.
  • A equipe da Contoso não precisa configurar o backup para o banco de dados.The Contoso team doesn't need to configure backup for the database. O Banco de Dados do Azure para MySQL cria backups do servidor e o armazena automaticamente.Azure Database for MySQL automatically creates server backups and stores. A equipe optou por usar redundância geográfica para o banco de dados, portanto, é resiliente e pronto para produção.The team elected to use geo-redundancy for the database, so it's resilient and production-ready. Os backups podem ser usados para restaurar o servidor para um ponto no tempo.Backups can be used to restore their server to a point-in-time. Saiba mais.Learn more.

Licenciamento e otimização de custoLicensing and cost optimization

  • Não há nenhum problema de licenciamento para a implantação PaaS.There are no licensing issues for the PaaS deployment.
  • A Contoso usará o Gerenciamento de custos e a cobrança do Azure para garantir que eles permaneçam dentro dos Orçamentos estabelecidos pela liderança de ti.Contoso will use Azure Cost Management and Billing to ensure that they stay within the budgets established by their IT leadership.