Oefening: Een web-app handmatig schalen
U moet een systeem uitbreiden als u verwacht dat er meer verkeer gaat komen. U kunt ook uitbreiden in reactie op afnemende prestaties.
In het voorbeeld van het hotelreserveringssysteem verhoogt u het aantal exemplaren van de web-app wanneer u extra verkeer verwacht vanwege een speciale gebeurtenis, een speciale aanbieding of seizoensgebonden schommelingen. Het systeem werd weer omlaag geschaald bij afname van de vraag.
In deze oefening maakt u een App Service-plan en implementeert u een web-app met behulp van dit plan. U bewaakt de prestaties van de web-app die wordt geladen. Schaal vervolgens de app uit en controleer of het plan de prestaties van de app heeft verbeterd.
In de oefening wordt een voorbeeldweb-app gebruikt waarmee een web-API wordt geïmplementeerd. Via de web-API worden de HTTP POST- en GET-bewerkingen beschikbaar gemaakt waarmee klantreserveringen voor een hotelreserveringswebsite worden gemaakt en opgehaald. De boekingen worden niet opgeslagen. Met de GET-bewerking worden eenvoudig dummygegevens opgehaald.
In de oefening wordt ook een client-app uitgevoerd die simuleert dat verschillende gebruikers gelijktijdig POST- en GET-bewerkingen uitvoeren. Deze app biedt de workload die u gebruikt om de prestaties van de web-app vóór en na het schalen te testen.
Een App Service-plan en web-app maken
Belangrijk
U hebt uw eigen Azure-abonnement nodig om deze oefening te kunnen uitvoeren. Dit kan kosten met zich meebrengen. Als u nog geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.
Meld u aan bij het Azure-portaal.
Selecteer in het menu van Azure Portal of op de startpagina de optie Een resource maken. Het deelvenster Een resource maken wordt weergegeven.
Selecteer in het linkermenuvenster onder Categorieën de optie Web, zoek en selecteer Web-app en selecteer vervolgens Maken. Het deelvenster Web-app maken wordt weergegeven.
Voer op het tabblad Basisinformatie de volgende waarden in voor elke instelling.
Notitie
De web-app moet een unieke naam hebben. We raden u aan iets als <uw naam of initialen>hotelsysteem te gebruiken. Gebruik deze naam overal in deze oefening waar u
<your-webapp-name>
ziet staan.Instelling Weergegeven als Projectgegevens Abonnement Selecteer het Azure-abonnement dat u wilt gebruiken voor deze oefening Resourcegroep Selecteer de koppeling Nieuwe maken en voer een nieuwe resourcegroep in met de naam mslearn-scale Exemplaardetails Naam Zie Notitie voor tabel. Voer een unieke naam in die u later in deze oefening kunt onthouden Publiceren Code Runtimestack .NET 6 (LTS) Besturingssysteem Windows Regio Standaard accepteren App Service-plan Windows-abonnement Standaard accepteren Prijsoverzicht Standaard accepteren Selecteer Beoordelen en maken>Maken. Wacht totdat de web-app is gemaakt en geïmplementeerd.
De web-app ontwikkelen en implementeren
Selecteer in de Azure-taakbalk het Cloud Shell-pictogram om AzureCloud Shell te openen en voer de volgende opdracht uit om de broncode voor het hotelreserveringssysteem te downloaden.
git clone https://github.com/MicrosoftDocs/mslearn-hotel-reservation-system.git
Ga naar de map mslearn-hotel-reservation-system/src .
cd mslearn-hotel-reservation-system/src
Maak de apps voor het hotelsysteem. Er zijn twee apps: een web-app die de web-API implementeert voor het systeem en een client-app die u gebruikt om de web-app te laden.
dotnet build
Bereid de web-app HotelReservationSystem voor op publicatie.
cd HotelReservationSystem dotnet publish -o website
Ga naar de map website, die de gepubliceerde bestanden bevat. Zip de bestanden en implementeer ze naar de web-app die u hebt gemaakt in de vorige taak. Kopieer de volgende code naar Kladblok en vervang deze door
<your-webapp-name>
de naam van uw web-app, plak het bewerkte codeblok in Cloud Shell en voer het uit.cd website zip website.zip * az webapp deploy --src-path website.zip --name <your-webapp-name> --resource-group mslearn-scale
Ga in de webbrowser naar
http://<your-webapp-name>.azurewebsites.net/api/reservations/1
. Er wordt een JSON-document weergegeven met de details voor reserveringsnummer 1.
De prestaties van de web-app bewaken vóór het uitbreiden
Ga terug naar Cloud Shell en ga naar de map ~/mslearn-hotel-reservation-system/src/HotelReservationSystemTestClient .
cd ~/mslearn-hotel-reservation-system/src/HotelReservationSystemTestClient
Bewerk het Bestand App.config in deze map met behulp van de code-editor.
code App.config
Verwijder opmerkingen bij de regel die de
ReservationsServiceURI
waarde UW WEBSITENAAM aangeeft en vervang deze door de naam van uw web-app. Het bestand moet eruitzien zoals in dit voorbeeld.<?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <add key="NumClients" value="100" /> <add key="ReservationsServiceURI" value="https://<your-webapp-name>.azurewebsites.net/" /> <add key="ReservationsServiceCollection" value="api/reservations" /> </appSettings> </configuration>
Notitie
De
NumClients
instelling in dit bestand geeft het aantal clients op dat tegelijkertijd verbinding kan maken met de web-app en werk kan uitvoeren. Het werk bestaat uit het maken van een reservering en het uitvoeren van een query om de details van de reservering op te halen. Alle gebruikte gegevens zijn namaak. Ze worden nergens behouden. Laat deze waarde op100
staan.Sla het bestand op door Ctrl+ te selecteren.
Bewerk het bestand HotelReservationSystemTestClient.csproj in deze map met behulp van de code-editor.
code HotelReservationSystemTestClient.csproj
Bewerk de regel die de
TargetFramework
regel opgeeft, zodat deze overeenkomt met de Runtime-stack die u hebt geselecteerd voor uw web-app. Wijzig deTargetFramework
waarde innetcoreapp7.0
. Het bestand moet eruitzien zoals in dit voorbeeld.<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp7.0</TargetFramework> </PropertyGroup> <ItemGroup> <PackageReference Include="Newtonsoft.Json" Version="12.0.1" /> <PackageReference Include="System.Configuration.ConfigurationManager" Version="4.5.0" /> </ItemGroup> <ItemGroup> <ProjectReference Include="..\HotelReservationSystemTypes\HotelReservationSystemTypes.csproj" /> </ItemGroup> </Project>
Sla het bestand op door Ctrl+ te selecteren en de code-editor te sluiten door op Ctrl+ te drukken.
Maak de testclient-app opnieuw met de nieuwe configuratie.
dotnet build
Voer de clienttoepassing uit. Er worden verschillende berichten weergegeven wanneer de clients worden uitgevoerd, reserveringen maken en query's uitvoeren. Laat het systeem een aantal minuten draaien. De antwoorden zijn traag en binnenkort mislukken de clientaanvragen met HTTP 408-fouten (time-out).
dotnet run
Selecteer In Azure Portal de optie Ga naar de resource om uw web-app te openen.
Selecteer Bewaking in het linkermenuvenster en selecteer vervolgens Metrische gegevens.
Selecteer aan de rechterkant van de menubalk van het deelvenster van uw web-app het lokale tijdsbereik: Laatste 24 uur (automatisch) en selecteer Vervolgens Laatste 30 minuten en selecteer Toepassen.
Voeg in het deelvenster onder Grafiektitel de volgende metrische gegevens toe aan de grafiek:
- Selecteer Metrische gegevens toevoegen en selecteer onder de vervolgkeuzelijst Metrische gegevens de OPTIE CPU-tijd. Selecteer Som voor Aggregatie.
- Selecteer Metrische gegevens toevoegen en selecteer onder de vervolgkeuzelijst Metrische gegevens http-serverfouten. Selecteer Som voor Aggregatie.
- Selecteer Metrische gegevens toevoegen en selecteer onder de vervolgkeuzelijst Metrische gegevens http 4xx. Selecteer Som voor Aggregatie.
- Selecteer Metrische gegevens toevoegen en selecteer onder de vervolgkeuzelijst Metrische gegevens de reactietijd. Selecteer Gem bij Aggregatie.
Selecteer In de rechtermenubalk de optie Vastmaken aan dashboard. Het deelvenster Vastmaken aan dashboard wordt weergegeven. Selecteer het tabblad Nieuw maken.
Voer in de vervolgkeuzelijst Dashboardnaam de naam van uw web-app in en selecteer vervolgens Maken en vastmaken.
Laat het systeem vijf minuten draaien om te stabiliseren en noteer vervolgens de CPU-tijd, het aantal HTTP 4xx-fouten en de gemiddelde reactietijd. Er wordt een aanzienlijk aantal HTTP 4xx-fouten weergegeven. Deze fouten zijn HTTP 408 Time-outfouten. De gemiddelde reactietijd is enkele seconden. Er kan een incidentele HTTP-serverfout optreden, afhankelijk van hoe de webserver omgaat met de belasting.
Houd de client-app actief terwijl u de volgende taak uitvoert.
De web-app uitbreiden en de verbetering in de prestaties controleren
Selecteer in Azure Portal de naam van uw web-app (App Service) en selecteer in het linkermenuvenster onder Instellingen de optie Uitschalen (App Service-plan). Het deelvenster Uitschalen (App Service-plan) wordt weergegeven.
Selecteer op het tabblad Configureren de optie Handmatig schalen en stel het aantal exemplaren in op 5. Selecteer Opslaan.
Schakel over naar Cloud Shell waarop de client-app wordt uitgevoerd. Als het goed is, ziet u dat er minder aanvragen mislukken met fouten, hoewel er nog steeds een time-out optreedt.
Voer de app nog vijf minuten langer uit. Ga vervolgens naar de grafiek met de metrische gegevens voor de app op het dashboard in Azure Portal. U ziet dat de CPU-tijd aanzienlijk toeneemt, omdat er nu vijf keer meer CPU-vermogen beschikbaar is. De gemiddelde reactietijd moet dalen en het aantal HTTP 4xx-fouten moet ook afnemen. De volgende grafiek toont een typische set resultaten. Het punt waarop uitbreiding is opgetreden, wordt aangegeven.
Als u wat meer wilt experimenteren, kunt u het aantal exemplaren voor het App Service-plan verhogen naar 10. Het maximum aantal exemplaren dat wordt ondersteund door de S1-laag is 10. U ziet dan een verdere toename in CPU-tijd en een bijbehorende afname in de reactietijd en het aantal HTTP 4xx-fouten.
Ga terug naar Cloud Shell waarop de client-app wordt uitgevoerd. Selecteer Enter om de app te stoppen.
Stel in Azure Portal het aantal exemplaren in op 1. Selecteer uw web-app en selecteer in het linkermenuvenster Uitschalen (App Service-plan). Stel op het tabblad Configureren het aantal exemplaren in op 1 en selecteer Opslaan.