Azure App Service, Traffic Manager 및 Azure Database for MySQL를 사용 하 여 Linux 응용 프로그램을 리팩터링 합니다.Refactor a Linux application by using Azure App Service, Traffic Manager, and Azure Database for MySQL

이 문서에서는 가상의 회사 Contoso가 리팩터링를 Azure Database for MySQL Azure App Service 사용 하 여 온-프레미스에서 Azure로 마이그레이션하는 방법을 보여 줍니다.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.osTicket, the service desk application that we use in this example, is provided as open-source software. 사용자 고유의 테스트 목적으로이를 사용 하려는 경우 GitHub의 osTicket리포지토리에서 다운로드할 수 있습니다.If you want to use it for your own testing purposes, you can download it from the osTicket repo in GitHub.

비즈니스 영향 요소Business drivers

IT 리더십 팀은 비즈니스 파트너와 긴밀 하 게 협력 하 여 달성할 수 있는 사항을 파악 합니다.The IT leadership team has worked closely with business partners to understand what they want to achieve:

  • 비즈니스 성장을 해결 합니다.Address business growth. Contoso는 성장하면서 새로운 시장에 진입하고 있습니다.Contoso is growing and moving into new markets. 고객 서비스 에이전트가 추가로 필요합니다.It needs additional customer service agents.
  • 배율을.Scale. 비즈니스 확장으로 인해 Contoso가 고객 서비스 에이전트를 더 많이 추가할 수 있도록 솔루션을 구축해야 합니다.The solution should be built so that Contoso can add more customer service agents as the business scales.
  • 복원력 향상.Improve resiliency. 이전에는 시스템에 영향을 미치는 내부 사용자만 문제가 발생 했습니다.In the past, issues with the system affected internal users only. 새 비즈니스 모델을 통해 외부 사용자에 게 영향을 줄 수 있으며 Contoso는 항상 응용 프로그램을 실행 해야 합니다.With the new business model, external users will be affected, and Contoso needs the application up and running at all times.

마이그레이션 목표Migration goals

가장 적합 한 마이그레이션 방법을 결정 하기 위해 Contoso 클라우드 팀은이 마이그레이션의 목표를 고정 했습니다.To determine the best migration method, the Contoso cloud team has pinned down their goals for this migration:

  • 현재 온-프레미스 용량 및 성능을 능가하도록 애플리케이션을 확장해야 합니다.The application should scale beyond current on-premises capacity and performance. Contoso는 Azure의 주문형 크기 조정 기능을 활용하기 위해 애플리케이션을 옮기고 있습니다.Contoso is moving the application to take advantage of Azure's on-demand scaling.
  • Contoso는 응용 프로그램 코드 베이스를 연속 배달 파이프라인으로 이동 하려고 합니다.Contoso wants to move the application code base to a continuous delivery pipeline. 응용 프로그램 변경 내용이 GitHub에 푸시 될 때 Contoso는 이러한 변경 내용을 운영 직원을 위한 작업 없이 배포 하려고 합니다.As application changes are pushed to GitHub, Contoso wants to deploy those changes without tasks for operations staff.
  • 응용 프로그램은 증가 및 장애 조치 (failover)를 위한 기능과 함께 복원 력이 있어야 합니다.The application must be resilient, with capabilities for growth and failover. Contoso는 서로 다른 두 Azure 지역에 응용 프로그램을 배포 하 고 자동으로 크기를 조정 하도록 설정 하려고 합니다.Contoso wants to deploy the application in two different Azure regions and set it up to scale automatically.
  • Contoso는 애플리케이션이 클라우드로 이동된 후 데이터베이스 관리 작업을 최소화하려고 합니다.Contoso wants to minimize database admin tasks after the application is moved to the cloud.

솔루션 디자인Solution design

해당 목표 및 요구 사항을 고정한 후 Contoso는 배포 솔루션을 디자인 및 검토하고, 마이그레이션에 사용할 Azure 서비스를 포함한 마이그레이션 프로세스를 식별합니다.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.

현재 아키텍처Current architecture

  • 응용 프로그램은 두 개의 Vm (가상 머신) (및)에 계층화 됩니다 OSTICKETWEB OSTICKETMYSQL .The application is tiered across two virtual machines (VMs) (OSTICKETWEB and OSTICKETMYSQL).
  • VM은 VMware ESXi 호스트 contosohost1.contoso.com(버전 6.5)에 있습니다.The VMs are located on VMware ESXi host contosohost1.contoso.com (version 6.5).
  • VMware 환경은 VM에서 실행되는 vCenter Server 6.5(vcenter.contoso.com)를 통해 관리됩니다.The VMware environment is managed by vCenter Server 6.5 (vcenter.contoso.com), running on a VM.
  • Contoso에는 온-프레미스 데이터 센터(contoso-datacenter)와 온-프레미스 도메인 컨트롤러(contosodc1)가 있습니다.Contoso has an on-premises datacenter (contoso-datacenter), with an on-premises domain controller (contosodc1).

현재 아키텍처의 다이어그램입니다.

제안된 아키텍처Proposed architecture

다음은 제안된 아키텍처입니다.Here's the proposed architecture:

  • 의 웹 계층 응용 프로그램은 OSTICKETWEB 두 개의 Azure 지역에서 Azure App Service 웹 앱을 빌드하여 마이그레이션됩니다.The web tier application on OSTICKETWEB will be migrated by building an Azure App Service web app in two Azure regions. Contoso 팀은 PHP 7.0 Docker 컨테이너를 사용 하 여 Linux에 대 한 Azure App Service를 구현 합니다.The Contoso team will implement Azure App Service for Linux by using the PHP 7.0 Docker container.
  • 응용 프로그램 코드는 GitHub로 이동 되 고 Azure App Service 웹 앱은 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는 주 지역 ( East US 2 ) 및 보조 지역 () 모두에 배포 됩니다 Central US .Azure App Service will be deployed in both the primary region (East US 2) and secondary region (Central US).
  • Azure Traffic Manager는 두 지역의 두 웹 앱 앞에 설정 됩니다.Azure Traffic Manager will be set up in front of the two web apps in both regions.
  • Traffic Manager은 트래픽을 강제로 수행 하도록 우선 순위 모드에서 구성 됩니다 East US 2 .Traffic Manager will be configured in priority mode to force the traffic through East US 2.
  • 의 Azure 앱 서버를 East US 2 오프 라인으로 전환 하면 사용자는에서 장애 조치 (failover) 된 응용 프로그램에 액세스할 수 있습니다 Central US .If the Azure app server in East US 2 goes offline, users can access the failed over application in Central US.
  • 응용 프로그램 데이터베이스는 Azure Database Migration Service를 사용 하 여 Azure Database for MySQL 서비스로 마이그레이션됩니다.The application database will be migrated to the Azure Database for MySQL service by using Azure Database Migration Service. 온-프레미스 데이터베이스가 로컬에 백업되고 Azure Database for MySQL에 직접 복원됩니다.The on-premises database will be backed up locally, and restored directly to Azure Database for MySQL.
  • 데이터베이스는 East US 2 프로덕션 네트워크 ()의 데이터베이스 서브넷 ()에 있는 주 지역 ()에 상주 합니다 PROD-DB-EUS2 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).
  • 프로덕션 워크 로드를 마이그레이션하는 중 이므로 응용 프로그램에 대 한 Azure 리소스는 프로덕션 리소스 그룹에 상주 하 게 됩니다 ContosoRG .Since they're migrating a production workload, Azure resources for the application will reside in the production resource group ContosoRG.
  • Traffic Manager 리소스는 Contoso의 인프라 리소스 그룹에 배포 됩니다 ContosoInfraRG .The Traffic Manager resource will be deployed in Contoso's infrastructure resource group ContosoInfraRG.
  • 마이그레이션이 완료되면 Contoso 데이터 센터의 온-프레미스 VM은 서비스 해제됩니다.The on-premises VMs in the Contoso datacenter will be decommissioned after the migration is done.

시나리오 아키텍처 다이어그램

마이그레이션 프로세스Migration process

Contoso는 다음과 같이 마이그레이션 프로세스를 완료 합니다.Contoso completes the migration process as follows:

  1. 첫 번째 단계로 Contoso 관리자는 프로 비전 Azure App Service, Traffic Manager 설정 및 Azure Database for MySQL 인스턴스 프로 비전을 포함 하 여 Azure 인프라를 설정 합니다.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. Azure 인프라를 준비한 후에는 Azure Database Migration Service를 사용 하 여 데이터베이스를 마이그레이션합니다.After preparing the Azure infrastructure, they migrate the database by using Azure Database Migration Service.
  3. Azure에서 실행 되는 데이터베이스는 지속적인 업데이트를 사용 하 여 Azure App Service에 대 한 GitHub 개인 리포지토리를 업로드 하 고 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. Azure Portal에서 Azure App Service를 실행 하 여 GitHub에서 Docker 컨테이너로 응용 프로그램을 로드 합니다.In the Azure portal, they load the application from GitHub to the Docker container by running Azure App Service.
  5. DNS 설정을 조정 하 고 응용 프로그램에 대 한 자동 크기 조정을 구성 합니다.They tweak DNS settings and configure autoscaling for the application.

Contoso 마이그레이션 프로세스의 다이어그램입니다.

Azure 서비스Azure services

서비스Service DescriptionDescription 비용Cost
Azure App ServiceAzure App Service 서비스는 웹 사이트에 대 한 Azure PaaS (platform as a service)를 사용 하 여 응용 프로그램을 실행 하 고 확장 합니다.The service runs and scales applications by using Azure platform as a service (PaaS) for websites. 가격은 인스턴스의 크기와 필요한 기능을 기준으로 합니다.Pricing is based on the size of the instances and the features required. 자세히 알아보기.Learn more.
Azure Traffic ManagerAzure Traffic Manager DNS (Domain Name System)를 사용 하 여 사용자를 Azure 또는 외부 웹 사이트 및 서비스로 안내 하는 부하 분산 장치입니다.A load balancer that uses Domain Name System (DNS) to direct users to Azure or to external websites and services. 가격은 받은 DNS 쿼리 수 및 모니터링 되는 끝점 수를 기준으로 합니다.Pricing is based on the number of received DNS queries and the number of monitored endpoints. 자세히 알아보기.Learn more.
Azure Database Migration ServiceAzure Database Migration Service Azure Database Migration Service를 사용 하면 가동 중지 시간을 최소화 하면서 여러 데이터베이스 소스에서 Azure 데이터 플랫폼으로 원활 하 게 마이그레이션할 수 있습니다.Azure Database Migration Service enables seamless migration from multiple database sources to Azure data platforms, with minimal downtime. 지원되는 지역Database Migration Service 가격에 대해 자세히 알아보세요.Learn about supported regions and Database Migration Service pricing.
Azure Database for MySQLAzure Database for MySQL 데이터베이스는 오픈 소스 MySQL 데이터베이스 엔진을 기반으로 합니다.The database is based on the open-source MySQL database engine. 응용 프로그램 개발 및 배포를 위해 완전히 관리 되는 엔터프라이즈급 커뮤니티 MySQL 데이터베이스를 제공 합니다.It provides a fully managed, enterprise-ready community MySQL database for application development and deployment. 가격은 계산, 저장소 및 백업 요구 사항에 따라 결정 됩니다.Pricing is based on compute, storage, and backup requirements. 자세히 알아보기.Learn more.

사전 요구 사항Prerequisites

이 시나리오를 실행 하려면 Contoso가 다음 필수 구성 요소를 충족 해야 합니다.To run this scenario, Contoso must meet the following prerequisites:

요구 사항Requirements 세부 정보Details
Azure 구독Azure subscription Contoso는 이 문서 시리즈의 앞에서 구독을 만들었습니다.Contoso created subscriptions earlier in this article series. Azure 구독이 아직 없는 경우 체험 계정을 만듭니다.If you don't have an Azure subscription, create a free account.

체험 계정을 만들면 구독 관리자로서 모든 작업을 수행할 수 있습니다.If you create a free account, you're the administrator of your subscription and can perform all actions.

기존 구독을 사용하고 관리자가 아닌 경우 관리자와 협력하여 소유자 또는 기여자 권한을 할당받아야 합니다.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.
Azure 인프라Azure infrastructure Contoso는 마이그레이션을 위한 Azure 인프라에 설명된 대로 Azure 인프라를 설정합니다.Contoso set up their Azure infrastructure as described in Azure infrastructure for migration.

시나리오 단계Scenario steps

마이그레이션을 완료 하기 위한 Contoso 계획은 다음과 같습니다.Here's the Contoso plan for completing the migration:

  • 1 단계: Azure App Service을 프로 비전 합니다.Step 1: Provision Azure App Service. Contoso 관리자는 주 지역 및 보조 지역에 웹앱을 프로비전합니다.Contoso admins will provision web apps in the primary and secondary regions.
  • 2 단계: Traffic Manager을 설정 합니다.Step 2: Set up Traffic Manager. 라우팅 및 부하 분산 트래픽을 위해 웹앱 앞에 Traffic Manager를 설정합니다.They set up Traffic Manager in front of the web apps, for routing and load balancing traffic.
  • 3 단계: Azure Database for MySQL을 프로 비전 합니다.Step 3: Provision Azure Database for MySQL. Azure에서 Azure Database for MySQL 인스턴스를 프로비저닝합니다.In Azure, they provision an instance of Azure Database for MySQL.
  • 4 단계: 데이터베이스 마이그레이션Step 4: Migrate the database. Azure Database Migration Service를 사용 하 여 데이터베이스를 마이그레이션합니다.They migrate the database by using Azure Database Migration Service.
  • 5 단계: GitHub를 설정 합니다.Step 5: Set up GitHub. 응용 프로그램 웹 사이트 및 코드에 대 한 로컬 GitHub 리포지토리를 설정 합니다.They set up a local GitHub repository for the application web sites and code.
  • 6 단계: 웹 앱을 구성 합니다.Step 6: Configure the web apps. OsTicket websites를 사용 하 여 웹 앱을 구성 합니다.They configure the web apps with the osTicket websites.

1 단계: Azure App Service 프로 비전Step 1: Provision Azure App Service

Contoso 관리자는 Azure App Service를 사용 하 여 두 개의 웹 앱 (각 지역에 하나씩)을 프로 비전 합니다.Contoso admins provision two web apps (one in each region) by using Azure App Service.

  1. osticket-eus2Azure Marketplace를 통해 주 지역 ()에 웹 앱 리소스 ()를 만듭니다 East US 2 .They create a web app resource (osticket-eus2) in the primary region (East US 2) via Azure Marketplace.

  2. 리소스를 프로덕션 리소스 그룹에 넣습니다 ContosoRG .They put the resource in the production resource group ContosoRG.

    Linux에서 웹 앱을 만들기 위한 * * 웹 앱 * * 창의 스크린샷

  3. 주 지역에 App Service 요금제를 만들고 APP-SVP-EUS2 표준 크기를 사용 합니다.They create an App Service plan, APP-SVP-EUS2, in the primary region, and they use the standard size.

    App Service 계획을 만들기 위한 * * 새 App Service 계획 * * 창의 스크린샷

  4. Docker 컨테이너인 PHP 7.0 런타임 스택을 사용하여 Linux OS를 선택합니다.They select a Linux OS with PHP 7.0 runtime stack, which is a Docker container.

    Linux OS, 미국 동부 2 위치 및 PHP 7.0가 선택 된 * * 웹 앱 * * 창의 스크린샷

  5. 두 번째 웹 앱, osticket-cus미국 중부 에 대 한 Azure App Service 요금제를 만듭니다.They create a second web app, osticket-cus, and an Azure App Service plan for Central US.

    Linux OS, 미국 중부 위치 및 PHP 7.0가 선택 된 * * 웹 앱 * * 창의 스크린샷

도움이 더 필요하세요?Need more help?

2단계: Traffic Manager 설정Step 2: Set up Traffic Manager

Contoso 관리자는 osTicket 웹 계층에서 실행 되는 웹 앱에 대 한 인바운드 웹 요청을 직접 Traffic Manager 설정 합니다.Contoso admins set up Traffic Manager to direct inbound web requests to the web apps that are running on the osTicket web tier.

  1. Azure Marketplace에서 Traffic Manager 리소스를 만듭니다 osticket.trafficmanager.net .In Azure Marketplace, they create a Traffic Manager resource, osticket.trafficmanager.net. 이는 미국 동부 2 가 기본 사이트인 경우 우선 순위 라우팅을 사용 합니다.They use priority routing so that East US 2 is the primary site. 기존 인프라 리소스 그룹인에 리소스를 넣습니다 ContosoInfraRG .They place the resource in their existing infrastructure resource group, ContosoInfraRG. Traffic Manager는 전역을 대상으로 하며 특정 위치에 바인딩되지 않습니다.Note that Traffic Manager is global and not bound to a specific location.

    * * Traffic Manager 프로필 만들기 * * 창의 스크린샷

  2. 끝점을 사용 하 여 Traffic Manager를 구성 합니다.They configure Traffic Manager with endpoints. 이는 미국 동부 2의 웹 앱을 기본 사이트, osticket-eus2 및 미국 중부의 웹 앱을 보조 사이트인로 추가 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.

    Traffic Manager에서 * * 끝점 추가 * * 창의 스크린샷

  3. 관리자가 끝점을 추가한 후에는 관리자가 끝점을 모니터링할 수 있습니다.After they add the endpoints, the admins can monitor them.

    Traffic Manager의 끝점 모니터링을 위한 끝점 창의 스크린샷

도움이 더 필요하세요?Need more help?

3단계: Azure Database for MySQL 프로비전Step 3: Provision Azure Database for MySQL

Contoso admins는 주 지역 동부 2에서 MySQL 데이터베이스 인스턴스를 프로 비전 합니다.Contoso admins provision a MySQL database instance in the primary region, East US 2.

  1. Azure Portal에서 Azure Database for MySQL 리소스를 만듭니다.In the Azure portal, they create an Azure Database for MySQL resource.

    Azure Portal Azure Database for MySQL 링크의 스크린샷

  2. contosoosticketAzure 데이터베이스에 대 한 이름을 추가 합니다.They add the name contosoosticket for the Azure database. 프로덕션 리소스 그룹에 데이터베이스를 추가 하 ContosoRG 고 해당 데이터베이스에 대 한 자격 증명을 지정 합니다.They add the database to the production resource group ContosoRG and then specify credentials for it.

  3. 온-프레미스 MySQL 데이터베이스가 버전 5.7이므로 호환성을 위해 이 버전을 선택합니다.The on-premises MySQL database is version 5.7, so they select this version for compatibility. 데이터베이스 요구 사항과 일치하는 기본 크기를 사용합니다.They use the default sizes, which match their database requirements.

    버전 5.7이 선택 된 * * MySQL Server * * 창의 스크린샷

  4. 백업 중복성 옵션 의 경우 지역 중복 을 선택 합니다.For Backup Redundancy Options, they select Geo-Redundant. 이 옵션을 사용 하면 가동 중단이 발생할 경우 보조 지역 (미국 중부)에서 데이터베이스를 복원할 수 있습니다.This option allows them to restore the database in their secondary region (Central US) if an outage occurs. 데이터베이스를 프로 비전 하는 경우에만이 옵션을 구성할 수 있습니다.They can configure this option only when they provision the database.

    Geo-Redundant 옵션이 선택 된 * * 백업 중복 옵션 * * 창의 스크린샷

  5. 연결 보안을 설정합니다.They set up connection security. 데이터베이스에서 연결 보안 을 선택 하 고 데이터베이스에서 Azure 서비스에 액세스할 수 있도록 방화벽 규칙을 설정 합니다.In the database, they select Connection security and then set up firewall rules to allow the database to access Azure services.

  6. 시작 및 끝 IP 주소에 로컬 워크스테이션 클라이언트 IP 주소를 추가합니다.They add the local workstation client IP address to the start and end IP addresses. 이렇게 하면 웹앱이 마이그레이션을 수행하는 데이터베이스 클라이언트와 함께 MySQL 데이터베이스에 액세스할 수 있습니다.This allows the web apps to access the MySQL database, along with the database client that's performing the migration.

    Azure 서비스에 대 한 액세스 및 선택한 클라이언트 IP 주소에 대 한 액세스를 보여 주는 * * 연결 보안 * * 창의 스크린샷

4단계: 데이터베이스 마이그레이션Step 4: Migrate the database

MySQL 데이터베이스를 이동 하는 방법에는 여러 가지가 있습니다.There are several ways to move the MySQL database. 각 옵션을 사용 하려면 Contoso 관리자가 대상에 대 한 Azure Database for MySQL 인스턴스를 만들어야 합니다.Each option requires Contoso admins to create an Azure Database for MySQL instance for the target. 인스턴스를 만든 후 두 경로 중 하나를 사용 하 여 데이터베이스를 마이그레이션할 수 있습니다.After they create the instance, they can migrate the database by using either of two paths:

  • 4a 단계: Azure Database Migration ServiceStep 4a: Azure Database Migration Service
  • 4b 단계: MySQL 워크 벤치 백업 및 복원Step 4b: MySQL Workbench backup and restore

4a 단계: Azure Database Migration Service을 통해 데이터베이스 마이그레이션Step 4a: Migrate the database via Azure Database Migration Service

Contoso 관리자는 단계별 마이그레이션 자습서에 따라 Azure Database Migration Service를 통해 데이터베이스를 마이그레이션합니다.Contoso admins migrate the database via Azure Database Migration Service by following the step-by-step migration tutorial. MySQL 5.6 또는 5.7을 사용 하 여 온라인, 오프 라인 및 하이브리드 (미리 보기) 마이그레이션을 수행할 수 있습니다.They can perform online, offline, and hybrid (preview) migrations by using MySQL 5.6 or 5.7.

참고

MySQL 8.0은 Azure Database for MySQL에서 지원 되지만 Database Migration Service 도구는 아직이 버전을 지원 하지 않습니다.MySQL 8.0 is supported in Azure Database for MySQL, but the Database Migration Service tool does not yet support this version.

간단히 말해서 Contoso는 다음을 수행 합니다.In brief, Contoso does the following:

  • 모든 마이그레이션 필수 구성 요소가 충족 되는지 확인 합니다.They ensure that all migration prerequisites are met:

    • MySQL 데이터베이스 서버 원본은 Azure Database for MySQL 지 원하는 버전과 일치 해야 합니다.The MySQL database server source must match the version that Azure Database for MySQL supports. Azure Database for MySQL은 MySQL Community Edition, InnoDB 저장소 엔진 및 동일한 버전을 사용 하는 원본과 대상 간의 마이그레이션을 지원 합니다.Azure Database for MySQL supports MySQL Community Edition, the InnoDB storage engine, and migration across source and target with the same versions.

    • 이를 통해 my.ini (Windows) 또는 (Unix)에서 이진 로깅을 사용할 수 my.cnf 있습니다.They enable binary logging in my.ini (Windows) or my.cnf (Unix). 이 작업을 수행 하지 못하면 마이그레이션 마법사에서 다음과 같은 오류가 발생 합니다. Error in binary logging. Variable binlog_row_image has value 'minimal'. Please change it to 'full'. 자세한 내용은 MySQL 설명서를 참조 하세요.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 the MySQL documentation.

    • 사용자에 게 역할이 있어야 합니다 ReplicationAdmin .The user must have the ReplicationAdmin role.

    • 외래 키 및 트리거 없이 데이터베이스 스키마를 마이그레이션합니다.Migrate the database schemas without foreign keys and triggers.

  • Express 경로 또는 VPN을 통해 온-프레미스 네트워크에 연결 하는 VPN (가상 사설망)을 만듭니다.They create a virtual private network (VPN) that connects via ExpressRoute or VPN to the on-premises network.

  • 가상 네트워크에 연결 된 프리미엄 SKU를 사용 하 여 Azure Database Migration Service 인스턴스를 만듭니다.They create an Azure Database Migration Service instance with a Premium SKU that's connected to the virtual network.

  • Azure Database Migration Service 가상 네트워크를 통해 MySQL 데이터베이스에 액세스할 수 있는지 확인 합니다.They ensure that Azure Database Migration Service can access the MySQL database via the virtual network. 이를 통해 가상 네트워크 수준, 네트워크 VPN 및 MySQL을 호스트 하는 컴퓨터에서 들어오는 모든 포트가 Azure에서 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.

  • Database Migration Service 도구를 실행 하 고 다음을 수행 합니다.They run the Database Migration Service tool and then do the following:

    1. Premium SKU를 기반으로 하는 마이그레이션 프로젝트를 만듭니다.Create a migration project that's based on the Premium SKU.

      마이그레이션 서비스가 성공적으로 생성 되었다는 메시지가 포함 된 MySQL 개요 창의 스크린샷

      MySQL * * 새 마이그레이션 프로젝트 * * 창의 스크린샷

    2. 원본 (온-프레미스 데이터베이스)을 추가 합니다.Add a source (on-premises database).

      마이그레이션 마법사 * * 원본 세부 정보 추가 * * 창의 스크린샷

    3. 대상을 선택 합니다.Select a target.

      마이그레이션 마법사 * * 대상 세부 정보 * * 창의 스크린샷

    4. 마이그레이션할 데이터베이스를 선택 합니다.Select the databases to migrate.

      대상 데이터베이스에 매핑 * * 창의 마이그레이션 마법사 스크린샷

    5. 고급 설정을 구성 합니다.Configure advanced settings.

      마이그레이션 마법사 * * 마이그레이션 설정 * * 창의 스크린샷

    6. 복제를 시작 하 고 오류를 해결 합니다.Start the replication and resolve any errors.

      서버 정보 창의 스크린샷

    7. 최종 종료를 수행 합니다.Perform the final cutover.

      OsTicket 세부 정보 창의 스크린샷

      * * 창에 대 한 * * 전체 반복의 스크린샷

      마이그레이션 작업 상태 테이블의 스크린샷

    8. 외래 키 및 트리거를 복원 합니다.Reinstate any foreign keys and triggers.

    9. 새 데이터베이스를 사용 하도록 응용 프로그램을 수정 합니다.Modify applications to use the new database.

      * * 마이그레이션 작업 * * 테이블의 스크린샷

4b 단계: 데이터베이스 마이그레이션 (MySQL 워크 벤치)Step 4b: Migrate the database (MySQL Workbench)

  1. Contoso 관리자는 필수 구성 요소를 확인 하 고 MySQL 워크 벤치를 다운로드합니다.The Contoso admins check the prerequisites and downloads MySQL Workbench.

  2. 설치 지침에 따라 Windows용 MySQL Workbench를 설치합니다.They install MySQL Workbench for Windows in accordance with the installation instructions. MySQL 워크 벤치를 설치 하는 컴퓨터는 osticketmysql VM 및 인터넷을 통해 Azure에 액세스할 수 있어야 합니다.The machine that they install MySQL Workbench on must be accessible to the osticketmysql VM and to Azure via the internet.

  3. MySQL 워크 벤치에서는에 대 한 MySQL 연결을 만듭니다 osticketmysql .In MySQL Workbench, they create a MySQL connection to osticketmysql.

    MySQL 워크 벤치 연결 세부 정보 창의 스크린샷

  4. osticket자체 포함 된 로컬 파일에 데이터베이스를 내보냅니다.They export the database as osticket to a local self-contained file.

    MySQL 워크 벤치 * * 데이터 내보내기 * * 창의 스크린샷

  5. 데이터베이스가 로컬로 백업 된 후 관리자는 Azure Database for MySQL 인스턴스에 대 한 연결을 만듭니다.After they've backed up the database locally, the admins create a connection to the Azure Database for MySQL instance.

    MySQL 워크 벤치 * * 새 연결 설정 * * 창

  6. 이제는 자체 포함 된 파일에서 Azure Database for MySQL 인스턴스의 데이터베이스를 가져오거나 복원할 수 있습니다.Now, they can import (restore) the database in the Azure Database for MySQL instance from the self-contained file. 인스턴스에 대해 새 스키마 인 osticket 가 만들어집니다.A new schema, osticket, is created for the instance.

    MySQL 워크 벤치 * * 데이터 가져오기 * * 창의 스크린샷

  7. 관리자는 데이터를 복원한 후 MySQL 워크 벤치를 사용 하 여 쿼리할 수 있습니다.After they've restored the data, the admins can query it by using MySQL Workbench. 데이터는 Azure Portal 표시 됩니다.The data is displayed in the Azure portal.

    복원 된 데이터를 표시 하는 Azure Portal의 스크린샷

    Osticket 데이터베이스를 가리키는 화살표가 있는 내 SQL 데이터베이스 블레이드의 스크린샷

  8. 관리자는 웹 앱에 대 한 데이터베이스 정보를 업데이트 합니다.The admins update the database information on the web apps. MySQL 인스턴스에서 연결 문자열 을 엽니다.On the MySQL instance, they open Connection Strings.

    MySQL 인스턴스의 * * 연결 문자열 * * 링크 스크린샷

  9. 연결 문자열 목록에서 웹 앱 설정을 선택 하 고 복사 하려면 클릭을 선택 하 여 복사 합니다.In the connection strings list, they select the web app settings and then copy them by selecting Click to copy.

    MySQL 인스턴스의 웹 앱 설정에 대 한 스크린샷

  10. 새 파일을 메모장에서 열고 문자열을 붙여넣은 다음 osTicket database, MySQL 인스턴스 및 자격 증명 설정과 일치 하도록 문자열을 업데이트 합니다.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.

    메모장 파일에 붙여 넣은 연결 문자열의 스크린샷

  11. 서버 이름을 확인 하 고 Azure Portal의 MySQL 인스턴스에 대 한 개요 창을 통해 로그인 할 수 있습니다.They can verify the server name and sign-in via the Overview pane for the MySQL instance in the Azure portal.

    서버 이름 및 서버 관리자 계정 이름을 표시 하는 리소스 그룹 창의 스크린샷

5단계: GitHub 설정Step 5: Set up GitHub

Contoso admins는 새 개인 GitHub 리포지토리를 만들고 Azure Database for MySQL에서 osTicket 데이터베이스에 대 한 연결을 설정 합니다.Contoso admins create a new private GitHub repo and set up a connection to the osTicket database in Azure Database for MySQL. 그런 다음 Azure App Service에 웹앱을 로드합니다.Then, they load the web app into Azure App Service.

  1. OsTicket software 공용 GitHub 리포지토리로 이동 하 여 Contoso GitHub 계정으로 분기 합니다.They browse to the osTicket software public GitHub repo and fork it to the Contoso GitHub account.

    포크 단추를 강조 표시 하는 GitHub 리포지토리 페이지의 스크린샷

  2. 리포지토리를 포크 한 후에는 폴더로 이동 하 여 include 파일을 선택 ost-config.php 합니다.After they fork the repo, they browse to the include folder and select the ost-config.php file.

    GitHub의 PHP 파일 스크린샷

  3. 파일이 브라우저에서 열리고 편집 합니다.The file opens in the browser, and they edit it.

    GitHub에 있는 파일 편집 (연필) 아이콘의 스크린샷

  4. 관리자는 편집기에서 및에 대 한 데이터베이스 세부 정보를 업데이트 DBHOST 합니다 DBUSER .In the editor, the admins update the database details, specifically for DBHOST and DBUSER.

    GitHub의 파일 편집 창 스크린샷

  5. 변경 내용을 커밋합니다.They commit the changes.

    편집 창에서 * * 변경 내용 커밋 * * 단추를 강조 표시 하는 스크린샷

  6. 각 웹 앱 ( osticket-eus2 및)에 대해 osticket-cus Azure Portal의 왼쪽 창에서 응용 프로그램 설정 을 선택 하 고 설정을 수정 합니다.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.

    Azure Portal에서 * * 응용 프로그램 설정 * * 링크를 강조 표시 하는 스크린샷

  7. 이름을 사용 하 여 연결 문자열을 입력 osticket 하 고 메모장의 문자열을 값 영역 에 복사 합니다.They enter the connection string with the name osticket, and copy the string from Notepad into the value area. 문자열 옆의 드롭다운 목록에서 MySQL 을 선택하고 설정을 저장합니다.They select MySQL in the dropdown list next to the string, and save the settings.

    OsTicket 연결 문자열을 강조 표시 하는 * * 연결 문자열 * * 창의 스크린샷

6 단계: 웹 앱 구성Step 6: Configure the web apps

마이그레이션 프로세스의 마지막 단계로 Contoso 관리자는 osTicket websites를 사용 하 여 웹 앱을 구성 합니다.As the final step in the migration process, Contoso admins configure the web apps with the osTicket websites.

  1. 기본 웹 앱에서 osticket-eus2 배포 옵션 을 연 다음 원본을 GitHub 로 설정 합니다.In the primary web app, osticket-eus2, they open Deployment option and then set the source to GitHub.

    GitHub가 원본으로 선택 된 * * 배포 옵션 * * 창의 스크린샷

  2. 배포 옵션을 선택합니다.They select the deployment options.

    * * 배포 옵션 * * 창에 있는 옵션 정보의 스크린샷

  3. 옵션을 설정 하면 구성에 Azure Portal 보류 중 으로 표시 됩니다.After they set the options, the configuration shows as Pending in the Azure portal.

    보류 중인 사이트 상태를 표시 하는 * * 배포 옵션 * * 창의 스크린샷

  4. 구성이 업데이트 되 고 GitHub에서 Azure App Service를 실행 하는 Docker 컨테이너로 osTicket 웹 앱이 로드 되 면 사이트가 활성 상태로 표시 됩니다.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.

    * * 배포 옵션 * * 창의 스크린샷

  5. 보조 웹 앱에 대해 앞의 단계를 반복 osticket-cus 합니다.They repeat the preceding steps for the secondary web app, osticket-cus.

  6. 사이트가 구성된 후에는 Traffic Manager 프로필을 통해 사이트에 액세스할 수 있습니다.After the site is configured, it's accessible via the Traffic Manager profile. DNS 이름은 osTicket 응용 프로그램의 새 위치입니다.The DNS name is the new location of the osTicket application. 자세히 알아보기.Learn more.

    DNS 이름을 표시 하는 Traffic Manager 프로필 창의 스크린샷

  7. Contoso는 쉽게 기억할 수 있는 DNS 이름을 사용 하려고 합니다.Contoso wants to use a DNS name that's easy to remember. 새 리소스 레코드 창에서 별칭, CNAME 및 osticket.contoso.com 도메인 컨트롤러의 DNS에 있는 Traffic Manager 이름을 가리키는 정규화 된 도메인 이름를 만듭니다.On the New Resource Record pane, they create an alias, a CNAME, and a fully qualified domain name, osticket.contoso.com, which points to the Traffic Manager name in the DNS on their domain controllers.

    별칭 이름 및 Traffic Manager에 대 한 포인터를 표시 하는 * * 새 리소스 레코드 * * 창의 스크린샷

  8. osticket-eus2 osticket-cus 사용자 지정 호스트 이름을 허용 하도록 및 웹 앱을 모두 구성 합니다.They configure both the osticket-eus2 and osticket-cus web apps to allow the custom host names.

    유효성 검사 단추를 강조 표시 하는 * * Ad 호스트 이름 * * 창의 스크린샷

자동 크기 조정 설정Set up autoscaling

마지막으로 Contoso 관리자는 응용 프로그램에 대 한 자동 크기 조정을 설정 합니다.Finally, the Contoso admins set up automatic scaling for the application. 자동 크기 조정은 에이전트가 응용 프로그램을 사용 하는 경우 응용 프로그램 인스턴스가 비즈니스 요구에 따라 증가 하 고 감소 되도록 합니다.Automatic scaling ensures that, as agents use the application, the application instances increase and decrease according to business needs.

  1. App Service에서 APP-SVP-EUS2 배율 단위 를 엽니다.In App Service APP-SVP-EUS2, they open Scale Unit.

  2. 현재 인스턴스의 CPU 사용량이 10 분 동안 70%를 초과 하면 인스턴스 수를 1 씩 늘리는 단일 규칙을 사용 하 여 새 자동 크기 조정 설정을 구성 합니다.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.

    첫 번째 지역에 대 한 자동 크기 조정 설정 페이지의 스크린샷

  3. APP-SVP-CUS응용 프로그램이 보조 지역으로 장애 조치 (failover) 되는 경우 동일한 동작이 적용 되도록에 대해 동일한 설정을 구성 합니다.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. 유일한 차이점은 장애 조치 전용 이기 때문에 기본 인스턴스를 1로 설정 한다는 것입니다.The only difference is that they set the default instance to 1, because this is for failovers only.

    두 번째 영역에 대 한 자동 크기 조정 설정 페이지의 스크린샷

마이그레이션 후 정리Clean up after migration

마이그레이션이 완료 되 면 osTicket 응용 프로그램은 개인 GitHub 리포지토리를 사용 하 여 지속적인 업데이트를 사용 하 여 Azure App Service 웹 앱에서 실행 되도록 리팩터링 됩니다.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. 응용 프로그램은 복원 력을 높이기 위해 두 지역에서 실행 됩니다.The application runs in two regions for increased resilience. OsTicket 데이터베이스는 PaaS 플랫폼으로 마이그레이션한 후 Azure Database for MySQL에서 실행 됩니다.The osTicket database runs in Azure Database for MySQL after migration to the PaaS platform.

마이그레이션 후 정리 하기 위해 Contoso는 다음을 수행 합니다.To clean up after the migration, Contoso does the following:

  • VCenter 인벤토리에서 VMware Vm을 제거 합니다.They remove the VMware VMs from the vCenter inventory.
  • 로컬 백업 작업에서 온-프레미스 VM을 제거합니다.They remove the on-premises VMs from local backup jobs.
  • 새 위치와 IP 주소를 표시 하도록 내부 설명서를 업데이트 합니다.They update internal documentation to show new locations and IP addresses.
  • 온-프레미스 Vm과 상호 작용 하는 모든 리소스를 검토 하 고, 새 구성을 반영 하도록 관련 설정 또는 설명서를 업데이트 합니다.They review any resources that interact with the on-premises VMs, and update any relevant settings or documentation to reflect the new configuration.
  • URL을 가리키도록 모니터링을 다시 구성 osticket-trafficmanager.net 하 여 응용 프로그램이 실행 되 고 있는지 추적 합니다.They reconfigure monitoring to point to the osticket-trafficmanager.net URL, to track that the application is up and running.

배포 검토Review the deployment

이제 응용 프로그램이 실행 중일 때 Contoso는 새로운 인프라를 완전히 운영 하 고 보호 해야 합니다.With the application now running, Contoso needs to fully operationalize and secure their new infrastructure.

보안Security

Contoso 보안 팀은 응용 프로그램을 검토 하 여 보안 문제를 확인 합니다.The Contoso security team reviews the application to determine any security issues. OsTicket 응용 프로그램과 MySQL 데이터베이스 인스턴스 간의 통신이 SSL로 구성 되지 않은 것을 확인 합니다.They identify that the communication between the osTicket application and the MySQL database instance isn't configured for SSL. 이러한 모든 작업을 수행 하 여 데이터베이스 트래픽을 해킹 하지 않도록 합니다.They do all this to ensure that the database traffic can't be hacked. 자세히 알아보기.Learn more.

BackupBackups

  • OsTicket 웹 앱은 상태 데이터를 포함 하지 않으므로 백업이 필요 하지 않습니다.The osTicket web apps don't contain state data and thus don't require backup.
  • Contoso 팀은 데이터베이스에 대 한 백업을 구성할 필요가 없습니다.The Contoso team doesn't need to configure backup for the database. Azure Database for MySQL에서 자동으로 서버 백업을 만들고 저장합니다.Azure Database for MySQL automatically creates server backups and stores. 팀에서 데이터베이스에 대 한 지역 중복을 사용 하기로 선택 했으므로 복원 력 및 프로덕션 준비가 완료 되었습니다.The team elected to use geo-redundancy for the database, so it's resilient and production-ready. 백업을 사용 하 여 해당 서버를 특정 시점으로 복원할 수 있습니다.Backups can be used to restore their server to a point-in-time. 자세히 알아보기.Learn more.

라이선스 및 비용 최적화Licensing and cost optimization

  • PaaS 배포에 대한 라이선스 문제는 없습니다.There are no licensing issues for the PaaS deployment.
  • Contoso는 Azure Cost Management + 청구 를 사용 하 여 IT 리더십에 의해 설정 된 예산을 벗어나지 않도록 합니다.Contoso will use Azure Cost Management + Billing to ensure that they stay within the budgets established by their IT leadership.