Umgestalten einer Linux-Anwendung mithilfe von Azure App Service, Traffic Manager und Azure Database for MySQLRefactor a Linux application by using Azure App Service, Traffic Manager, and Azure Database for MySQL

In diesem Artikel wird gezeigt, wie das fiktive Unternehmen Contoso eine LAMP-basierte Anwendung mit zwei Ebenen umgestaltet und sie mithilfe von Azure App Service mit GitHub-Integration und Azure Database for MySQL aus einer lokalen Umgebung zu Azure migriert.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.

Die in diesem Beispiel verwendete Service Desk-Anwendung osTicket wird als Open-Source-Software bereitgestellt.osTicket, the service desk application that we use in this example, is provided as open-source software. Wenn Sie diese App für Ihre eigenen Tests verwenden möchten, können Sie sie aus dem osTicket-Repository in GitHub herunterladen.If you want to use it for your own testing purposes, you can download it from the osTicket repo in GitHub.

Business-TreiberBusiness drivers

Das IT-Führungsteam arbeitet eng mit Geschäftspartnern zusammen, um genau zu verstehen, was erreicht werden soll:The IT leadership team has worked closely with business partners to understand what they want to achieve:

  • Unternehmenswachstum.Address business growth. Contoso wächst und erschließt neue Märkte.Contoso is growing and moving into new markets. Das Unternehmen benötigt zusätzliche Kundendienstmitarbeiter.It needs additional customer service agents.
  • Skalierung.Scale. Die Lösung soll erstellt werden, damit Contoso beim Ausbau der Geschäftsbereiche weitere Kundendienstmitarbeiter einstellen kann.The solution should be built so that Contoso can add more customer service agents as the business scales.
  • Verbesserte Resilienz:Improve resiliency. In der Vergangenheit waren nur interne Benutzer von Problemen mit dem System betroffen.In the past, issues with the system affected internal users only. Beim neuen Geschäftsmodell wirken sich diese auch auf externe Benutzer aus, und Contoso muss sicherstellen, dass die Anwendung jederzeit verfügbar ist.With the new business model, external users will be affected, and Contoso needs the application up and running at all times.

MigrationszieleMigration goals

Für die Bestimmung der besten Migrationsmethode hat das Contoso-Cloudteam Ziele für diese Migration festgelegt:To determine the best migration method, the Contoso cloud team has pinned down their goals for this migration:

  • Eine Skalierung der Anwendung sollte über die aktuelle lokale Kapazität und Leistung hinaus möglich sein.The application should scale beyond current on-premises capacity and performance. Contoso verschiebt die Anwendung, um die Vorteile der bedarfsgesteuerten Skalierung von Azure zu nutzen.Contoso is moving the application to take advantage of Azure's on-demand scaling.
  • Contoso möchte die Codebasis der Anwendung in eine Continuous Delivery-Pipeline verschieben.Contoso wants to move the application code base to a continuous delivery pipeline. Da Anwendungsänderungen nach GitHub gepusht werden, möchte Contoso diese Änderungen bereitstellen, ohne dass zusätzliche Aufgaben für das Betriebspersonal anfallen.As application changes are pushed to GitHub, Contoso wants to deploy those changes without tasks for operations staff.
  • Die Anwendung muss resilient sein und über Wachstums- und Failovermöglichkeiten verfügen.The application must be resilient, with capabilities for growth and failover. Die Anwendung soll in zwei verschiedenen Azure-Regionen bereitgestellt und automatisch skaliert werden.Contoso wants to deploy the application in two different Azure regions and set it up to scale automatically.
  • Contoso möchte die Administratoraufgaben für die Datenbank minimieren, nachdem die Anwendung in die Cloud verschoben wird.Contoso wants to minimize database admin tasks after the application is moved to the cloud.

LösungsentwurfSolution design

Nachdem die Ziele und Anforderungen formuliert wurden, entwirft und überprüft Contoso eine Bereitstellungslösung und identifiziert den Migrationsprozess sowie die für die Migration genutzten Azure-Dienste.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.

Aktuelle ArchitekturCurrent architecture

  • Die Anwendung ist auf zwei virtuelle Computer (VMs) aufgeteilt (OSTICKETWEB und OSTICKETMYSQL).The application is tiered across two virtual machines (VMs) (OSTICKETWEB and OSTICKETMYSQL).
  • Die VMs befinden sich auf dem VMware ESXi-Host contosohost1.contoso.com (Version 6.5).The VMs are located on VMware ESXi host contosohost1.contoso.com (version 6.5).
  • Die VMware-Umgebung wird von der vCenter Server 6.5-Software (vcenter.contoso.com) auf einer VM verwaltet.The VMware environment is managed by vCenter Server 6.5 (vcenter.contoso.com), running on a VM.
  • Contoso verfügt über ein lokales Rechenzentrum (contoso-datacenter) mit einem lokalen Domänencontroller (contosodc1).Contoso has an on-premises datacenter (contoso-datacenter), with an on-premises domain controller (contosodc1).

Diagramm der aktuellen Architektur

Vorgeschlagene ArchitekturProposed architecture

Die vorgeschlagene Architektur sieht wie folgt aus:Here's the proposed architecture:

  • Die Anwendung auf Webebene auf OSTICKETWEB wird durch Erstellen einer Azure App Service-Web-App in zwei Azure-Regionen migriert.The web tier application on OSTICKETWEB will be migrated by building an Azure App Service web app in two Azure regions. Das Contoso-Team implementiert Azure App Service für Linux mithilfe des PHP 7.0-Docker-Containers.The Contoso team will implement Azure App Service for Linux by using the PHP 7.0 Docker container.
  • Der Anwendungscode wird nach GitHub verschoben, und die Azure App Service-Web-App wird für Continuous Delivery mit GitHub konfiguriert.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 wird sowohl in der primären Region (East US 2) als auch der sekundären Region (Central US) bereitgestellt.Azure App Service will be deployed in both the primary region (East US 2) and secondary region (Central US).
  • Azure Traffic Manager wird vor den beiden Web-Apps in beiden Regionen eingerichtet.Azure Traffic Manager will be set up in front of the two web apps in both regions.
  • Traffic Manager wird im Prioritätsmodus konfiguriert, um den Datenverkehr über East US 2 zu erzwingen.Traffic Manager will be configured in priority mode to force the traffic through East US 2.
  • Wenn der Azure-App-Server in East US 2 offline geht, können Benutzer in Central US auf die Anwendung zugreifen, für die ein Failover ausgeführt wurde.If the Azure app server in East US 2 goes offline, users can access the failed over application in Central US.
  • Die Anwendungsdatenbank wird mit Azure Database Migration Service zum Azure Database for MySQL-Dienst migriert.The application database will be migrated to the Azure Database for MySQL service by using Azure Database Migration Service. Die lokale Datenbank wird lokal gesichert und direkt in Azure Database for MySQL wiederhergestellt.The on-premises database will be backed up locally, and restored directly to Azure Database for MySQL.
  • Die Datenbank wird in der primären Region (East US 2) im Datenbanksubnetz (PROD-DB-EUS2) des Produktionsnetzwerks (VNET-PROD-EUS2) platziert.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).
  • Da es sich um die Migration einer Produktionsworkload handelt, befinden sich die Azure-Ressourcen für die Anwendung in der Produktionsressourcengruppe ContosoRG.Since they're migrating a production workload, Azure resources for the application will reside in the production resource group ContosoRG.
  • Die Traffic Manager-Ressource wird in der Infrastrukturressourcengruppe ContosoInfraRG von Contoso bereitgestellt.The Traffic Manager resource will be deployed in Contoso's infrastructure resource group ContosoInfraRG.
  • Die lokalen VMs im Rechenzentrum von Contoso werden nach Abschluss der Migration außer Betrieb gesetzt.The on-premises VMs in the Contoso datacenter will be decommissioned after the migration is done.

Diagramm der Szenarioarchitektur.

MigrationsprozessMigration process

Contoso schließt den Migrationsprozess wie folgt ab:Contoso completes the migration process as follows:

  1. Im ersten Schritt richten die Administratoren von Contoso die Azure-Infrastruktur ein – einschließlich der Bereitstellung von Azure App Service-Instanzen, der Einrichtung von Traffic Manager und der Bereitstellung einer Azure Database for MySQL-Instanz.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. Nachdem sie die Azure-Infrastruktur vorbereitet haben, migrieren sie die Datenbank mithilfe von Azure Database Migration Service.After preparing the Azure infrastructure, they migrate the database by using Azure Database Migration Service.
  3. Sobald die Datenbank in Azure ausgeführt wird, lädt Contoso ein privates GitHub-Repository für Azure App Service mit Continuous Delivery hoch und lädt es mit der Anwendung 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. Im Azure-Portal lädt das Unternehmen die Anwendung von GitHub in den Docker-Container mit Azure App Service.In the Azure portal, they load the application from GitHub to the Docker container by running Azure App Service.
  5. Es optimiert die DNS-Einstellungen und konfiguriert die automatische Skalierung für die Anwendung.They tweak DNS settings and configure autoscaling for the application.

Diagramm des Contoso-Migrationsprozesses

Azure-DiensteAzure services

DienstService BESCHREIBUNGDescription KostenCost
Azure App ServiceAzure App Service Der Dienst wird für die Ausführung und Skalierung von Anwendungen mit dem Azure-Platform-as-a-Service-Dienst (PaaS) für Websites genutzt.The service runs and scales applications by using Azure platform as a service (PaaS) for websites. Der Preis richtet sich nach der Größe der Instanzen und den benötigten Features.Pricing is based on the size of the instances and the features required. Weitere InformationenLearn more.
Azure Traffic ManagerAzure Traffic Manager Ein Lastenausgleichsmodul, das Domain Name System (DNS) verwendet, um Benutzer zu Azure oder externen Websites und Diensten zu leitenA load balancer that uses Domain Name System (DNS) to direct users to Azure or to external websites and services. Der Preis richtet sich nach der Anzahl der empfangenen DNS-Abfragen und der Anzahl der überwachten Endpunkte.Pricing is based on the number of received DNS queries and the number of monitored endpoints. Weitere InformationenLearn more.
Azure Database Migration ServiceAzure Database Migration Service Azure Database Migration Service ermöglicht die nahtlose Migration von mehreren Datenbankquellen zu Azure-Datenplattformen bei minimaler Ausfallzeit.Azure Database Migration Service enables seamless migration from multiple database sources to Azure data platforms, with minimal downtime. Informieren Sie sich über die unterstützten Regionen und die Preise für den Database Migration Service.Learn about supported regions and Database Migration Service pricing.
Azure Database for MySQLAzure Database for MySQL Die Datenbank basiert auf der Open-Source-MySQL-Datenbank-Engine.The database is based on the open-source MySQL database engine. Sie stellt eine vollständig verwaltete, für Unternehmen geeignete MySQL Community-Datenbank für die Entwicklung und Bereitstellung von Anwendungen bereit.It provides a fully managed, enterprise-ready community MySQL database for application development and deployment. Der Preis richtet sich nach den Compute-, Speicher- und Sicherungsanforderungen.Pricing is based on compute, storage, and backup requirements. Weitere InformationenLearn more.

VoraussetzungenPrerequisites

Zum Ausführen dieses Szenarios muss Contoso die folgenden Voraussetzungen erfüllen:To run this scenario, Contoso must meet the following prerequisites:

Requirements (Anforderungen)Requirements DetailsDetails
Azure-AbonnementAzure subscription Abonnements wurden in einem früheren Artikel dieser Reihe erstellt.Contoso created subscriptions earlier in this article series. Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen.If you don't have an Azure subscription, create a free account.

Wenn Sie ein kostenloses Konto erstellen, sind Sie der Administrator Ihres Abonnements und können alle Aktionen durchführen.If you create a free account, you're the administrator of your subscription and can perform all actions.

Falls Sie ein vorhandenes Abonnement verwenden und nicht der Administrator sind, müssen Sie mit dem Administrator zusammenarbeiten, damit er Ihnen Berechtigungen vom Typ „Besitzer“ oder „Mitwirkender“ zuweist.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-InfrastrukturAzure infrastructure Contoso richtet die Azure-Infrastruktur ein, wie in Azure infrastructure for migration (Azure-Infrastruktur für die Migration) beschrieben.Contoso set up their Azure infrastructure as described in Azure infrastructure for migration.

SzenarioschritteScenario steps

Im Folgenden sehen Sie den Plan von Contoso zum Abschließen der Migration:Here's the Contoso plan for completing the migration:

  • Schritt 1: Bereitstellen von Azure App Service.Step 1: Provision Azure App Service. Die Administratoren von Contoso stellen Web-Apps in der primären und sekundären Region bereit.Contoso admins will provision web apps in the primary and secondary regions.
  • Schritt 2: Einrichten von Traffic Manager.Step 2: Set up Traffic Manager. Das Unternehmen richtet Traffic Manager vorgelagert vor den Web-Apps ein, um den Datenverkehr zu routen und einen Lastenausgleich auszuführen.They set up Traffic Manager in front of the web apps, for routing and load balancing traffic.
  • Schritt 3: Bereitstellen von Azure Database for MySQL.Step 3: Provision Azure Database for MySQL. Die Administratoren stellen in Azure eine Instanz von Azure Database for MySQL bereit.In Azure, they provision an instance of Azure Database for MySQL.
  • Schritt 4: Migrieren der Datenbank.Step 4: Migrate the database. Sie migrieren die Datenbank mithilfe von Azure Database Migration Service.They migrate the database by using Azure Database Migration Service.
  • Schritt 5: Einrichten von GitHub.Step 5: Set up GitHub. Sie richten ein lokales GitHub-Repository für die Anwendungswebsites und den Anwendungscode ein.They set up a local GitHub repository for the application web sites and code.
  • Schritt 6: Konfigurieren der Web-Apps.Step 6: Configure the web apps. Sie konfigurieren die Web-Apps mit den osTicket-Websites.They configure the web apps with the osTicket websites.

Schritt 1: Bereitstellen von Azure App ServiceStep 1: Provision Azure App Service

Die Administratoren von Contoso stellen mithilfe von Azure App Service zwei Web-Apps (jeweils eine pro Region) bereit.Contoso admins provision two web apps (one in each region) by using Azure App Service.

  1. Sie erstellen über den Azure Marketplace eine Web-App-Ressource (osticket-eus2) in der primären Region (East US 2).They create a web app resource (osticket-eus2) in the primary region (East US 2) via Azure Marketplace.

  2. Sie fügen die Ressource der Produktionsressourcengruppe ContosoRG hinzu.They put the resource in the production resource group ContosoRG.

    Screenshot des Bereichs „Web-App“ zum Erstellen einer Web-App in Linux.

  3. Sie erstellen einen App Service-Plan, APP-SVP-EUS2, in der primären Region und verwenden die Standardgröße.They create an App Service plan, APP-SVP-EUS2, in the primary region, and they use the standard size.

    Screenshot des Bereichs „Neuer App Service-Plan“ zum Erstellen eines App Service-Plans.

  4. Sie entscheiden sich für ein Linux-Betriebssystem mit PHP 7.0-Laufzeitstapel. Dabei handelt es sich um einen Docker-Container.They select a Linux OS with PHP 7.0 runtime stack, which is a Docker container.

    Screenshot des Bereichs „Web-App“ mit Auswahl von Linux-Betriebssystem, dem Standort „USA, Osten 2“ und von PHP 7.0.

  5. Sie erstellen eine zweite Web-App (osticket-cus) und einen Azure App Service-Plan für die Region USA, Mitte.They create a second web app, osticket-cus, and an Azure App Service plan for Central US.

    Screenshot des Bereichs „Web-App“ mit dem Auswahl von Linux-Betriebssystem, dem Standort „USA, Osten 2“ und von PHP 7.0

Benötigen Sie weitere Hilfe?Need more help?

Schritt 2: Einrichten von Traffic ManagerStep 2: Set up Traffic Manager

Die Administratoren von Contoso richten Traffic Manager ein, um eingehende Webanforderungen an die Web-Apps weiterzuleiten, die auf der osTicket-Webebene ausgeführt werden.Contoso admins set up Traffic Manager to direct inbound web requests to the web apps that are running on the osTicket web tier.

  1. Sie erstellen in Azure Marketplace eine Traffic Manager-Ressource (osticket.trafficmanager.net).In Azure Marketplace, they create a Traffic Manager resource, osticket.trafficmanager.net. Sie nutzen das prioritätsbasierte Routing, sodass USA, Osten 2 der primäre Standort ist.They use priority routing so that East US 2 is the primary site. Sie platzieren die Ressource in ihrer vorhandenen Infrastrukturressourcengruppe (ContosoInfraRG).They place the resource in their existing infrastructure resource group, ContosoInfraRG. Beachten Sie, dass Traffic Manager global und nicht an einen bestimmten Standort gebunden ist.Note that Traffic Manager is global and not bound to a specific location.

    Screenshot des Bereichs „Traffic Manager-Profil erstellen“.

  2. Als Nächstes konfigurieren sie Traffic Manager mit Endpunkten.They configure Traffic Manager with endpoints. Die Web-App wird in „USA, Osten 2“ als primärer Standort (osticket-eus2) und die Web-App in „USA, Mitte“ als sekundärer Standort (osticket-cus) hinzugefügt.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 des Bereichs „Endpunkt hinzufügen“ in Traffic Manager.

  3. Nachdem die Administratoren die Endpunkte hinzugefügt haben, können sie sie überwachen.After they add the endpoints, the admins can monitor them.

    Screenshot des Bereichs „Endpunkte“ zum Überwachen von Endpunkten in Traffic Manager

Benötigen Sie weitere Hilfe?Need more help?

Schritt 3: Bereitstellen von Azure Database for MySQLStep 3: Provision Azure Database for MySQL

Die Administratoren von Contoso stellen eine MySQL-Datenbankinstanz in der primären Region (USA, Osten 2) bereit.Contoso admins provision a MySQL database instance in the primary region, East US 2.

  1. Im Azure-Portal erstellen die Verantwortlichen von Contoso eine Azure Database for MySQL-Ressource.In the Azure portal, they create an Azure Database for MySQL resource.

    Screenshot des Links „Azure Database for MySQL“ im Azure-Portal

  2. Sie fügen den Namen contosoosticket für die Azure-Datenbank hinzu.They add the name contosoosticket for the Azure database. Sie fügen die Datenbank zur Produktionsressourcengruppe ContosoRG hinzu, und geben Anmeldeinformationen für sie an.They add the database to the production resource group ContosoRG and then specify credentials for it.

  3. Die lokale MySQL-Datenbank ist in Version 5.7 vorhanden. Deshalb wählen sie diese Version für Kompatibilitätszwecke.The on-premises MySQL database is version 5.7, so they select this version for compatibility. Sie verwenden die Standardgrößen, die ihren Datenbankanforderungen entsprechen.They use the default sizes, which match their database requirements.

    Screenshot des Bereichs „MySQL-Server“ mit ausgewählter Version 5.7.

  4. Bei den Optionen für Sicherungsredundanz entscheiden sie sich für die Georedundanz.For Backup Redundancy Options, they select Geo-Redundant. Mit dieser Option können sie ihre Datenbank in der sekundären Region (USA, Mitte) wiederherstellen, wenn ein Ausfall auftritt.This option allows them to restore the database in their secondary region (Central US) if an outage occurs. Sie können diese Option nur konfigurieren, wenn sie die Datenbank zur Verfügung stellen.They can configure this option only when they provision the database.

    Screenshot des Bereichs „Optionen für Sicherungsredundanz“ mit der ausgewählten Option „Georedundant“.

  5. Sie richten die Verbindungssicherheit ein.They set up connection security. In der Datenbank wählen sie Verbindungssicherheit aus und richten Firewallregeln ein, um der Datenbank den Zugriff auf Azure-Dienste zu ermöglichen.In the database, they select Connection security and then set up firewall rules to allow the database to access Azure services.

  6. Sie fügen die Client-IP-Adresse der lokalen Arbeitsstation zu den Start- und End-IP-Adressen hinzu.They add the local workstation client IP address to the start and end IP addresses. Dadurch können die Web-Apps zusammen mit dem Datenbankclient, der die Migration durchführt, auf die MySQL-Datenbank zugreifen.This allows the web apps to access the MySQL database, along with the database client that's performing the migration.

    Screenshot des Bereichs „Verbindungssicherheit“, in dem der Zugriff auf die aktivierten Azure-Dienste und die ausgewählte Client-IP-Adresse angezeigt wird.

Schritt 4: Migrieren der DatenbankStep 4: Migrate the database

Es gibt mehrere Möglichkeiten, die MySQL-Datenbank zu verschieben.There are several ways to move the MySQL database. Bei jeder Option müssen die Contoso-Administratoren eine Azure Database for MySQL-Instanz für das Ziel erstellen.Each option requires Contoso admins to create an Azure Database for MySQL instance for the target. Nachdem die Instanz erstellt wurde, können sie die Datenbank mit einem von zwei Pfaden migrieren:After they create the instance, they can migrate the database by using either of two paths:

  • Schritt 4a: Azure Database Migration ServiceStep 4a: Azure Database Migration Service
  • Schritt 4b: Sicherung und Wiederherstellung von MySQL WorkbenchStep 4b: MySQL Workbench backup and restore

Schritt 4a: Migrieren der Datenbank mithilfe von Azure Database Migration ServiceStep 4a: Migrate the database via Azure Database Migration Service

Die Administratoren von Contoso migrieren die Datenbank mithilfe von Azure Database Migration Service, indem sie die Schritte im ausführlichen Migrationstutorial befolgen.Contoso admins migrate the database via Azure Database Migration Service by following the step-by-step migration tutorial. Sie können Online-, Offline- und Hybridmigrationen (Vorschauversion) von MySQL 5.6 oder 5.7 ausführen.They can perform online, offline, and hybrid (preview) migrations by using MySQL 5.6 or 5.7.

Hinweis

MySQL 8.0 wird in Azure Database for MySQL unterstützt, das Database Migration Service-Tool unterstützt diese Version jedoch noch nicht.MySQL 8.0 is supported in Azure Database for MySQL, but the Database Migration Service tool does not yet support this version.

Contoso geht im Wesentlichen wie folgt vor:In brief, Contoso does the following:

  • Das Unternehmen stellt sicher, dass alle Voraussetzungen für die Migration erfüllt sind:They ensure that all migration prerequisites are met:

    • Die Version der MySQL-Datenbankserverquelle muss der von Azure Database for MySQL unterstützten Version entsprechen.The MySQL database server source must match the version that Azure Database for MySQL supports. Azure Database for MySQL unterstützt die MySQL Community Edition, die InnoDB-Speicher-Engine sowie die Migration zwischen Quellen und Zielen mit derselben Version.Azure Database for MySQL supports MySQL Community Edition, the InnoDB storage engine, and migration across source and target with the same versions.

    • Es aktiviert die binäre Protokollierung in my.ini (Windows) oder my.cnf (Unix).They enable binary logging in my.ini (Windows) or my.cnf (Unix). Andernfalls wird im Migrations-Assistenten der folgende Fehler verursacht: Error in binary logging. Variable binlog_row_image has value 'minimal'. Please change it to 'full'. Weitere Informationen finden Sie in der MySQL-Dokumentation.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.

    • Der Benutzer muss über die Rolle ReplicationAdmin verfügen.The user must have the ReplicationAdmin role.

    • Migrieren Sie die Datenbankschemas ohne Fremdschlüssel und Trigger.Migrate the database schemas without foreign keys and triggers.

  • Sie erstellen ein virtuelles privates Netzwerk (VPN), das über ExpressRoute oder VPN mit dem lokalen Netzwerk verbunden ist.They create a virtual private network (VPN) that connects via ExpressRoute or VPN to the on-premises network.

  • Sie erstellen eine Azure Database Migration Service-Instanz mit einer Premium-SKU, die mit dem virtuellen Netzwerk verbunden ist.They create an Azure Database Migration Service instance with a Premium SKU that's connected to the virtual network.

  • Sie vergewissern sich, dass Azure Database Migration Service über das virtuelle Netzwerk auf die MySQL-Datenbank zugreifen kann.They ensure that Azure Database Migration Service can access the MySQL database via the virtual network. Dazu gehört auch, sicherzustellen, dass alle eingehenden Ports von Azure zu MySQL auf der virtuellen Netzwerkebene, dem Netzwerk-VPN und dem Computer, auf dem MySQL gehostet ist, zugelassen werden.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.

  • Sie führen das Database Migration Service-Tool aus und führen anschließend die folgenden Schritte durch:They run the Database Migration Service tool and then do the following:

    1. Sie erstellen auf der Grundlage der Premium-SKU ein Migrationsprojekt.Create a migration project that's based on the Premium SKU.

      Screenshot des MySQL-Bereichs „Übersicht“ mit einer Meldung, die angibt, dass der Migrationsdienst erfolgreich erstellt wurde

      Screenshot des MySQL-Bereichs „Neues Migrationsprojekt“.

    2. Fügen Sie eine Quelle (lokale Datenbank) hinzu.Add a source (on-premises database).

      Screenshot des Migrations-Assistenten-Bereichs „Quelldetails hinzufügen“.

    3. Wählen Sie ein Ziel aus.Select a target.

      Screenshot des Migrations-Assistenten-Bereichs „Zieldetails“.

    4. Wählen Sie die zu migrierenden Datenbanken aus.Select the databases to migrate.

      Screenshot des Migrations-Assistenten-Bereichs „Den Zieldatenbanken zuordnen“.

    5. Konfigurieren Sie die erweiterten Einstellungen.Configure advanced settings.

      Screenshot des Migrations-Assistenten-Bereichs „Migrationseinstellungen“.

    6. Starten Sie die Replikation, und beheben Sie alle Fehler.Start the replication and resolve any errors.

      Screenshot des Bereichs „Serverdetails“

    7. Führen Sie den abschließenden Cutover (Systemwechsel) durch.Perform the final cutover.

      Screenshot des Bereichs mit osTicket-Details

      Screenshot des Bereichs „Umstellung abschließen“.

      Screenshot der Statustabelle für Migrationsaktivitäten

    8. Setzen Sie alle Fremdschlüssel und Trigger wieder ein.Reinstate any foreign keys and triggers.

    9. Ändern Sie die Anwendungen so, dass sie die neue Datenbank verwenden.Modify applications to use the new database.

      Screenshot der Statustabelle „Migrationsaktivitäten“.

Schritt 4b: Migrieren der Datenbank (MySQL Workbench)Step 4b: Migrate the database (MySQL Workbench)

  1. Die Contoso-Administratoren überprüfen die Voraussetzungen und laden MySQL Workbench herunter.The Contoso admins check the prerequisites and downloads MySQL Workbench.

  2. Die Verantwortlichen bei Contoso installieren MySQL Workbench for Windows entsprechend den Installationsanweisungen.They install MySQL Workbench for Windows in accordance with the installation instructions. Der für die Installation von MySQL Workbench verwendete Computer muss für die VM osticketmysql und Azure über das Internet zugänglich sein.The machine that they install MySQL Workbench on must be accessible to the osticketmysql VM and to Azure via the internet.

  3. In MySQL Workbench erstellen sie eine MySQL-Verbindung mit osticketmysql.In MySQL Workbench, they create a MySQL connection to osticketmysql.

    Screenshot des Detailbereichs für die MySQL Workbench-Verbindung

  4. Sie exportieren die Datenbank als osticket in eine lokale, eigenständige Datei.They export the database as osticket to a local self-contained file.

    Screenshot des MySQL Workbench-Detailbereichs „Daten exportieren“.

  5. Nachdem die Datenbank lokal gesichert wurde, erstellen die Administratoren eine Verbindung mit der Azure Database for MySQL-Instanz.After they've backed up the database locally, the admins create a connection to the Azure Database for MySQL instance.

    Der MySQL Workbench-Bereich „Setup New Connection“ (Neue Verbindung einrichten).

  6. Nun können sie die Datenbank aus der eigenständigen Datei in die Azure Database for MySQL-Instanz importieren (wiederherstellen).Now, they can import (restore) the database in the Azure Database for MySQL instance from the self-contained file. Ein neues Schema (osticket) wird für die Instanz erstellt.A new schema, osticket, is created for the instance.

    Screenshot des MySQL Workbench-Detailbereichs „Daten importieren“.

  7. Nachdem die Daten wiederhergestellt wurden, können sie von den Administratoren mithilfe von MySQL Workbench abgefragt werden.After they've restored the data, the admins can query it by using MySQL Workbench. Die Daten werden im Azure-Portal angezeigt.The data is displayed in the Azure portal.

    Screenshot des Azure-Portals, in dem wiederhergestellte Daten angezeigt werden

    Screenshot des Blatts „Meine SQL-Datenbanken“ mit einem Pfeil, der auf die osticket-Datenbank zeigt.

  8. Die Administratoren aktualisieren die Datenbankinformationen in den Web-Apps.The admins update the database information on the web apps. In der MySQL-Instanz wird Verbindungszeichenfolge geöffnet.On the MySQL instance, they open Connection Strings.

    Screenshot des Links „Verbindungszeichenfolgen“ in der MySQL-Instanz.

  9. In der Liste mit Verbindungszeichenfolgen wählen sie die Web-App-Einstellungen aus und kopieren sie, indem sie Klicken Sie zum Kopieren. auswählen.In the connection strings list, they select the web app settings and then copy them by selecting Click to copy.

    Screenshot der Web-App-Einstellungen in der MySQL-Instanz

  10. Sie öffnen eine neue Datei in Editor und fügen die Zeichenfolge in die Datei ein. Anschließend aktualisieren sie die Zeichenfolge, damit sie mit der osTicket-Datenbank, der MySQL-Instanz und den Anmeldeinformationseinstellungen übereinstimmt.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 der in eine Editor-Datei eingefügten Verbindungszeichenfolge

  11. Im Azure-Portal können sie im Bereich Übersicht der MySQL-Instanz den Servernamen und die dazugehörigen Anmeldeinformationen überprüfen.They can verify the server name and sign-in via the Overview pane for the MySQL instance in the Azure portal.

    Screenshot: Bereich „Ressourcengruppe“, der den Servernamen und den Kontonamen des Serveradministrators zeigt

Schritt 5: Einrichten von GitHubStep 5: Set up GitHub

Die Administratoren von Contoso erstellen ein neues privates GitHub-Repository und stellen eine Verbindung mit der osTicket-Datenbank in Azure Database for MySQL her.Contoso admins create a new private GitHub repo and set up a connection to the osTicket database in Azure Database for MySQL. Anschließend laden sie die Web-App in Azure App Service.Then, they load the web app into Azure App Service.

  1. Sie durchsuchen das öffentliche GitHub-Repository der osTicket-Software und forken es an das GitHub-Konto von Contoso.They browse to the osTicket software public GitHub repo and fork it to the Contoso GitHub account.

    Screenshot der GitHub-Repositoryseite mit der hervorgehobenen Schaltfläche „Fork“

  2. Nachdem sie das Repository geforkt haben, wechseln sie zum Ordner include und wählen die Datei ost-config.php aus.After they fork the repo, they browse to the include folder and select the ost-config.php file.

    Screenshot der PHP-Datei in GitHub

  3. Die Datei wird im Browser geöffnet und bearbeitet.The file opens in the browser, and they edit it.

    Screenshot des Symbols für die Dateibearbeitung (Stift) in GitHub

  4. Im Editor aktualisieren die Administratoren die Datenbankdetails (insbesondere für DBHOST und DBUSER).In the editor, the admins update the database details, specifically for DBHOST and DBUSER.

    Screenshot des Bereichs für die Dateibearbeitung in GitHub

  5. Dann führen sie für die Änderungen einen Commit aus.They commit the changes.

    Screenshot mit der hervorgehobenen Schaltfläche „Commit für Änderungen ausführen“ im Bearbeitungsbereich.

  6. Sie wählen für jede Web-App (osticket-eus2 und osticket-cus) im Azure-Portal die Anwendungseinstellungen im linken Bereich aus und ändern anschließend die Einstellungen.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 mit dem hervorgehobenen Link „Anwendungseinstellungen“ im Azure-Portal.

  7. Sie geben die Verbindungszeichenfolge mit dem Namen osticket ein und kopieren die Zeichenfolge aus Editor in den Wertebereich.They enter the connection string with the name osticket, and copy the string from Notepad into the value area. Contoso wählt in der Dropdownliste neben der Zeichenfolge MySQL aus und speichert die Einstellungen.They select MySQL in the dropdown list next to the string, and save the settings.

    Screenshot des Bereichs „Verbindungszeichenfolgen“ mit der hervorgehobener osTicket-Verbindungszeichenfolge.

Schritt 6: Konfigurieren der Web-Apps:Step 6: Configure the web apps

Im letzten Schritt des Migrationsprozesses konfigurieren die Administratoren von Contoso die Web-Apps mit den osTicket-Websites.As the final step in the migration process, Contoso admins configure the web apps with the osTicket websites.

  1. In der primären Web-App (osticket-eus2) öffnen sie Bereitstellungsoption und legen dann die Quelle auf GitHub fest.In the primary web app, osticket-eus2, they open Deployment option and then set the source to GitHub.

    Screenshot des Bereichs „Bereitstellungsoption“, bei dem GitHub als Quelle ausgewählt ist.

  2. Contoso wählt die Bereitstellungsoptionen aus.They select the deployment options.

    Screenshot der Optionsdetails im Bereich „Bereitstellungsoption“.

  3. Nach dem Festlegen der Optionen wird die Konfiguration im Azure-Portal als Ausstehend angezeigt.After they set the options, the configuration shows as Pending in the Azure portal.

    Screenshot des Bereichs „Bereitstellungsoptionen“ mit dem Sitestatus „Ausstehend“.

  4. Nachdem die Konfiguration aktualisiert wurde und die osTicket-Web-App von GitHub in den Docker-Container mit Azure App Service geladen wurde, wird die Website als Aktiv angezeigt.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 des Bereichs „Bereitstellungsoptionen“.

  5. Sie wiederholen die obigen Schritte für die sekundäre Web-App osticket-cus.They repeat the preceding steps for the secondary web app, osticket-cus.

  6. Nachdem die Site konfiguriert wurde, ist sie über das Traffic Manager-Profil erreichbar.After the site is configured, it's accessible via the Traffic Manager profile. Der DNS-Name ist der neue Speicherort der Anwendung osTicket.The DNS name is the new location of the osTicket application. Weitere InformationenLearn more.

    Screenshot des Traffic Manager-Profilbereichs mit dem DNS-Namen

  7. Contoso möchte einen DNS-Namen, der leicht zu merken ist.Contoso wants to use a DNS name that's easy to remember. Im Bereich Neuer Ressourceneintrag erstellen sie einen Alias, CNAME und voll qualifizierten Domänennamen, osticket.contoso.com, der auf den Traffic Manager-Namen im DNS ihrer Domänencontroller verweist.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.

    Screenshot des Bereichs „Neuer Ressourceneintrag“, der den Aliasnamen und einen Zeiger auf Traffic Manager anzeigt.

  8. Die Administratoren konfigurieren die Web-Apps osticket-eus2 und osticket-cus, um die benutzerdefinierten Hostnamen zuzulassen.They configure both the osticket-eus2 and osticket-cus web apps to allow the custom host names.

    Screenshot des Bereichs „Hostnamen hinzufügen“ mit hervorgehobener Schaltfläche „Überprüfen“.

Einrichten der automatischen SkalierungSet up autoscaling

Zum Schluss richten die Administratoren von Contoso die automatische Skalierung für die Anwendung ein.Finally, the Contoso admins set up automatic scaling for the application. Mit der automatischen Skalierung wird sichergestellt, dass die Anwendungsinstanzen bei der Verwendung durch Agents den geschäftlichen Anforderungen entsprechend erweitert oder verkleinert werden.Automatic scaling ensures that, as agents use the application, the application instances increase and decrease according to business needs.

  1. In der App Service-Instanz APP-SVP-EUS2 öffnen sie Skalierungseinheit.In App Service APP-SVP-EUS2, they open Scale Unit.

  2. Sie konfigurieren eine neue Einstellung für die automatische Skalierung mit einer einzigen Regel, die die Anzahl von Instanzen um eins erhöht, wenn die CPU-Auslastung für die aktuelle Instanz zehn Minuten lang über 70 Prozent liegt.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 der Seite mit den Einstellungen für die automatische Skalierung für die erste Region

  3. Sie konfigurieren die gleiche Einstellung für APP-SVP-CUS, um sicherzustellen, dass bei einem Failover der Anwendung zur sekundären Region das gleiche Verhalten gilt.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. Der einzige Unterschied besteht darin, dass die Standardinstanz auf 1 gesetzt wird, da dies nur für Failover gilt.The only difference is that they set the default instance to 1, because this is for failovers only.

    Screenshot der Seite mit den Einstellungen für die automatische Skalierung für die zweite Region

Bereinigung nach der MigrationClean up after migration

Nach Abschluss der Migration wird die Anwendung osTicket in eine Azure App Service-Web-App mit Continuous Delivery mit einem privaten GitHub-Repository umgestaltet.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. Zur Verbesserung der Resilienz wird die Anwendung in zwei Regionen ausgeführt.The application runs in two regions for increased resilience. Nach der Migration zur PaaS-Plattform wird die osTicket-Datenbank in Azure Database for MySQL ausgeführt.The osTicket database runs in Azure Database for MySQL after migration to the PaaS platform.

Zum Bereinigen nach der Migration führt Contoso folgende Schritte aus:To clean up after the migration, Contoso does the following:

  • Das Unternehmen entfernt die VMware-VMs aus dem vCenter-Bestand.They remove the VMware VMs from the vCenter inventory.
  • Es entfernt die lokalen VMs aus lokalen Sicherungsaufträgen.They remove the on-premises VMs from local backup jobs.
  • Es aktualisiert die interne Dokumentation und zeigt neue Speicherorte und IP-Adressen an.They update internal documentation to show new locations and IP addresses.
  • Das Unternehmen überprüft sämtliche Ressourcen, die mit den lokalen VMs interagieren, und aktualisiert alle relevanten Einstellungen oder Dokumentationen, um die neue Konfiguration widerzuspiegeln.They review any resources that interact with the on-premises VMs, and update any relevant settings or documentation to reflect the new configuration.
  • Es konfiguriert die Überwachung neu, sodass sie auf die URL von osticket-trafficmanager.net zeigt, um nachzuverfolgen, ob die Anwendung ausgeführt wird.They reconfigure monitoring to point to the osticket-trafficmanager.net URL, to track that the application is up and running.

Überprüfen der BereitstellungReview the deployment

Da die Anwendung jetzt ausgeführt wird, muss Contoso seine neue Infrastruktur vollständig operationalisieren und sichern.With the application now running, Contoso needs to fully operationalize and secure their new infrastructure.

SicherheitSecurity

Das Sicherheitsteam von Contoso hat die Anwendung auf Sicherheitsprobleme überprüft.The Contoso security team reviews the application to determine any security issues. Dabei hat es festgestellt, dass die Kommunikation zwischen der Anwendung osTicket und der MySQL-Datenbankinstanz nicht für SSL konfiguriert ist.They identify that the communication between the osTicket application and the MySQL database instance isn't configured for SSL. Das Team muss dies tun, um sicherzustellen, dass der Datenbankverkehr nicht gehackt werden kann.They do all this to ensure that the database traffic can't be hacked. Weitere InformationenLearn more.

BackupsBackups

  • Die osTicket-Web-Apps enthalten keine Zustandsdaten und müssen daher auch nicht gesichert werden.The osTicket web apps don't contain state data and thus don't require backup.
  • Das Team von Contoso muss die Sicherung für die Datenbank nicht konfigurieren.The Contoso team doesn't need to configure backup for the database. Azure Database for MySQL erstellt automatisch Serversicherungen und -speicher.Azure Database for MySQL automatically creates server backups and stores. Das Team hat sich für die Georedundanz für die Datenbank entschieden, damit sie robust und einsatzbereit ist.The team elected to use geo-redundancy for the database, so it's resilient and production-ready. Sicherungen können verwendet werden, um für ihren Server den Stand zu einem bestimmten Zeitpunkt wiederherzustellen.Backups can be used to restore their server to a point-in-time. Weitere InformationenLearn more.

Lizenzierung und KostenoptimierungLicensing and cost optimization

  • Es gibt keine Lizenzierungsprobleme für die PaaS-Bereitstellung.There are no licensing issues for the PaaS deployment.
  • Contoso verwendet Azure Cost Management and Billing, um sicherzustellen, dass das von den IT-Führungskräften vorgegebene Budget nicht überschritten wird.Contoso will use Azure Cost Management + Billing to ensure that they stay within the budgets established by their IT leadership.