Cvičení – ruční navýšení kapacity webové aplikace

Dokončeno

Pokud očekáváte nárůst provozu, je dobré horizontálně navýšit kapacitu systému. Také to může být vhodné v případě, že dochází k poklesu výkonu.

V příkladu hotelového rezervačního systému zvýšíte počet instancí webové aplikace, když očekáváte dodatečný provoz kvůli zvláštní události, speciální nabídce nebo sezónním výkyvům. Jakmile poptávka poklesne, kapacitu systému opět horizontálně snížíte.

V tomto cvičení vytvoříte plán služby App Service a nasadíte webovou aplikaci pomocí tohoto plánu. Monitorujete výkon webové aplikace při zatížení. Pak vertikálně navýšíte kapacitu aplikace a ověřte, že plán zlepšil výkon aplikace.

V tomto cvičení se používá ukázková webová aplikace, která implementuje webové rozhraní API. To zpřístupňuje operace HTTP POST a GET, které vytvářejí a načítají rezervace zákazníků pro hotelový rezervační web. Rezervace se neuloží. Operace GET jednoduše načte fiktivní data.

Ve cvičení se také spouští klientská aplikace, která simuluje několik uživatelů vydávajících současně operace POST a GET. Tato aplikace poskytuje úlohu, kterou používáte k otestování výkonu webové aplikace před a po škálování.

Vytvoření plánu služby App Service a webové aplikace

Důležité

K provedení tohoto cvičení potřebujete vlastní předplatné Azure a mohou se vám účtovat poplatky. Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet, než začnete.

  1. Přihlaste se k portálu Azure.

  2. V nabídce webu Azure Portal nebo na domovské stránce vyberte Vytvořit prostředek. Zobrazí se podokno Vytvořit prostředek .

  3. V levém podokně nabídek v části Kategorie vyberte Web, vyhledejte a vyberte Webovou aplikaci a pak vyberte Vytvořit. Zobrazí se podokno Vytvořit webovou aplikaci .

  4. Na kartě Základy zadejte pro každé nastavení následující hodnoty.

    Poznámka:

    Webová aplikace musí mít jedinečný název. Doporučujeme použít něco jako <vaše jméno nebo iniciály>hotelsystem. Tento název použijte vždy, když v tomto cvičení uvidíte <your-webapp-name>.

    Nastavení Hodnota
    Podrobnosti projektu
    Předplatné Vyberte předplatné Azure, které chcete použít pro toto cvičení.
    Skupina prostředků Vyberte odkaz Vytvořit nový a zadejte novou skupinu prostředků s názvem mslearn-scale.
    Podrobnosti o instanci
    Název Viz Poznámka před tabulkou. Zadejte jedinečný název, který si můžete zapamatovat později v tomto cvičení.
    Publikování Kód
    Zásobník modulu runtime .NET 6 (LTS)
    Operační systém Okna
    Oblast Přijmout výchozí
    Plán služby App Service
    Plán Windows Přijmout výchozí
    Cenový plán Přijmout výchozí
  5. Vyberte Zkontrolovat a vytvořit>Vytvořit. Počkejte, až se webová aplikace vytvoří a nasadí.

Sestavení a nasazení webové aplikace

  1. Na hlavním panelu Azure výběrem ikony Cloud Shellu otevřete AzureCloud Shell a spuštěním následujícího příkazu stáhněte zdrojový kód pro hotelový rezervační systém.

    Screenshot of Cloud Shell icon in taskbar.

    git clone https://github.com/MicrosoftDocs/mslearn-hotel-reservation-system.git
    
  2. Přejděte do složky mslearn-hotel-reservation-system/src .

    cd mslearn-hotel-reservation-system/src
    
  3. Sestavte aplikace pro hotelový systém. Existují dvě aplikace: webová aplikace, která implementuje webové rozhraní API pro systém, a klientskou aplikaci, kterou používáte k zátěžovém testování webové aplikace.

    dotnet build
    
  4. Připravte webovou aplikaci HotelReservationSystem k publikování.

    cd HotelReservationSystem
    dotnet publish -o website
    
  5. Přejděte do složky website, která obsahuje publikované soubory. Zkomprimujte soubory do archivu ZIP a nasaďte je do webové aplikace, kterou jste vytvořili v předchozím úkolu. Zkopírujte následující kód, který Poznámkový blok a nahradí <your-webapp-name> názvem vaší webové aplikace, vložte upravený blok kódu do Cloud Shellu a spusťte ho.

    cd website
    zip website.zip *
    az webapp deployment source config-zip --src website.zip --name <your-webapp-name> --resource-group mslearn-scale
    
  6. Ve webovém prohlížeči přejděte na adresu http://<your-webapp-name>.azurewebsites.net/api/reservations/1. Zobrazí se dokument JSON, který obsahuje podrobnosti pro číslo rezervace 1.

    Screenshot of the running web app, showing the details for reservation number 1 in JSON format.

Monitorování výkonu webové aplikace před horizontálním navýšením kapacity

  1. Vraťte se do Cloud Shellu a přejděte do složky ~/mslearn-hotel-reservation-system/src/HotelReservationSystemTestClient .

    cd ~/mslearn-hotel-reservation-system/src/HotelReservationSystemTestClient
    
  2. Upravte soubor App.config v této složce pomocí editoru kódu.

    code App.config
    
  3. Odkomentujte řádek, který určuje ReservationsServiceURIhodnotu , a nahraďte hodnotu NÁZEV WEBU názvem vaší webové aplikace. Soubor by měl vypadat jako v tomto příkladu.

    <?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>
    

    Poznámka:

    Nastavení NumClients v tomto souboru určuje počet klientů, kteří se mohou současně pokusit připojit k webové aplikaci a provádět práci. Práce se skládá z vytvoření rezervace a následného spuštění dotazu, který načte podrobnosti o rezervaci. Veškerá použitá data jsou falešná. Nikam se neukládají. Nechte tuto hodnotu nastavenou na 100.

  4. Soubor uložte tak, že vyberete Ctrl+S.

  5. Upravte soubor HotelReservationSystemTestClient.csproj v této složce pomocí editoru kódu.

    code HotelReservationSystemTestClient.csproj
    
  6. Upravte řádek, který určuje , aby odpovídal zásobníku TargetFrameworkmodulu runtime, který jste vybrali pro webovou aplikaci. TargetFramework Změňte hodnotu na netcoreapp7.0. Soubor by měl vypadat jako v tomto příkladu.

    <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>
    
  7. Uložte soubor tak, že vyberete Ctrl+S a zavřete editor kódu stisknutím kláves Ctrl+Q.

  8. Znovu sestavte testovací klientskou aplikaci doplněnou o novou konfiguraci.

    dotnet build
    
  9. Spusťte klientskou aplikaci. Když klienti začnou spouštět, zadávat rezervace a spouštět dotazy, zobrazí se několik zpráv. Nechte systém několik minut běžet. Odpovědi jsou pomalé a brzy začnou požadavky klientů selhávat s chybami HTTP 408 (Timeout).

    dotnet run
    

    Screenshot of a running client app, showing the responses and error messages that occur.

  10. Na webu Azure Portal vyberte Přejít k prostředku a otevřete webovou aplikaci.

  11. V levém podokně nabídek vyberte Monitorování a pak vyberte Metriky.

  12. Na pravé straně řádku nabídek podokna webové aplikace vyberte místní čas: Posledních 24 hodin (automatický) časový rozsah, pak vyberte Posledních 30 minut a pak vyberte Použít.

  13. V podokně pod nadpisem grafu přidejte do grafu následující metriky:

    • Vyberte Přidat metriku a v rozevíracím seznamu Metrika vyberte Čas procesoru. V případě agregace vyberte Součet.
    • Vyberte Přidat metriku a v rozevíracím seznamu Metrika vyberte Chyby serveru HTTP. V případě agregace vyberte Součet.
    • Vyberte Přidat metriku a v rozevíracím seznamu Metrika vyberte Http 4xx. V případě agregace vyberte Součet.
    • Vyberte Přidat metriku a v rozevíracím seznamu Metrika vyberte Doba odezvy. V případě agregace vyberte Průměr.
  14. V pravém řádku nabídek vyberte Připnout na řídicí panel. Zobrazí se podokno Připnout na řídicí panel . Vyberte kartu Vytvořit nový .

  15. V rozevíracím seznamu Název řídicího panelu zadejte název webové aplikace a pak vyberte Vytvořit a připnout.

  16. Počkejte, než se systém pět minut stabilizuje, a poznamenejte si čas procesoru, počet chyb HTTP 4xx a průměrnou dobu odezvy. Měl by se zobrazit velký počet chyb HTTP 4xx. Tyto chyby jsou chyby časového limitu HTTP 408. Průměrná doba odezvy je několik sekund. V závislosti na tom, jak server zvládá zatížení, můžete vidět občasnou chybu HTTP serveru.

    Screenshot showing the performance metrics for the web app before scaling out.

  17. Nechte klientskou aplikaci běžet a mezitím proveďte následující úlohu.

Horizontální navýšení kapacity webové aplikace a kontrola zlepšení výkonu

  1. Na webu Azure Portal vyberte název webové aplikace (App Service) a v levém podokně nabídek v části Nastavení vyberte Škálovat na více instancí (plán služby App Service). Zobrazí se podokno Horizontální navýšení kapacity (plán služby App Service).

  2. Na kartě Konfigurovat vyberte ruční škálování a nastavte počet instancí na 5. Zvolte Uložit.

    Screenshot of the Configure page for the App Service plan, scaling out to five instances.

  3. Přepněte do Cloud Shellu, na kterém běží klientská aplikace. Měli byste vidět méně neúspěšných požadavků s chybami, i když některé stále vyprší časový limit.

  4. Nechcete aplikaci spuštěnou dalších 5 minut. Dále přejděte do grafu, který zobrazuje metriky aplikace na řídicím panelu na webu Azure Portal. Měli byste vidět, že se čas procesoru výrazně zvyšuje, protože teď je k dispozici pětkrát více výkonu procesoru. Průměrná doba odezvy by se měla snížit a také by se měl snížit počet chyb HTTP 4xx. Následující graf zobrazuje typický soubor výsledků. Bod, v němž došlo k horizontálnímu navýšení kapacity, je zvýrazněn.

    Screenshot showing the performance metrics for the web app after scaling out to five instances.

  5. Pokud chcete dále experimentovat, zkuste zvýšit počet instancí plánu služby App Service na 10. Maximální počet instancí podporovaných úrovní S1 je 10. Měli byste si všimnout dalšího nárůstu času procesoru a odpovídajícího zkrácení doby odezvy a poklesu počtu chyb HTTP 4xx.

  6. Vraťte se do Cloud Shellu, na kterém běží klientská aplikace. Stisknutím klávesy Enter aplikaci zastavte.

  7. Na webu Azure Portal nastavte počet instancí zpět na 1. Vyberte webovou aplikaci a v levém podokně nabídek vyberte Horizontální navýšení kapacity (plán služby App Service). Na kartě Konfigurace nastavte počet instancí na 1 a vyberte Uložit.