Sdílet prostřednictvím


Nasazení a škálování aplikace v Orleans Azure

V tomto rychlém startu nasadíte a škálujete Orleans aplikaci pro zkrácení adresy URL ve službě Azure Container Apps. Aplikace umožňuje uživatelům odeslat úplnou adresu URL do aplikace, která vrací zkrácenou verzi, kterou můžou sdílet s ostatními, aby je nasměrovali na původní web. Orleans a Azure poskytují funkce škálovatelnosti potřebné k hostování aplikací s vysokým provozem, jako jsou zkrácené adresy URL. Orleans je také kompatibilní s jakoukoli jinou hostingovou službou, která podporuje .NET.

Na konci tohoto rychlého startu máte škálovatelnou aplikaci spuštěnou v Azure, která poskytuje funkci zkrácení adresy URL. V rámci toho, jak se naučíte:

  • Stažení a šablona Rozhraní příkazového řádku azure pro vývojáře
  • Orleans Nasazení aplikace do Azure
  • Škálování aplikace na více instancí

Požadavky

Získání a nasazení ukázkové aplikace

Ukázková aplikace je k dispozici jako šablona Azure Developer CLI. Prostřednictvím tohoto rychlého startu; Stáhněte si aplikaci šablony, nasadíte šablonu a ukázkový kód do Azure, změníte šablonu tak, aby implementovala preferované agregační intervaly, nasadíte potřebné prostředky a pak nasadíte konečnou aplikaci.

  1. Otevřete terminál v prázdném adresáři.

  2. Ověřte se v Rozhraní příkazového řádku Azure Developer CLI pomocí azd auth loginrozhraní příkazového řádku . Postupujte podle kroků určených nástrojem k ověření v rozhraní příkazového řádku pomocí vašich upřednostňovaných přihlašovacích údajů Azure.

    azd auth login
    
  3. Získejte ukázkovou aplikaci pomocí šablony orleans-url-shortener AZD a azd init příkazu.

    azd init --template orleans-url-shortener
    
  4. Během inicializace nakonfigurujte jedinečný název prostředí.

    Tip

    Název prostředí se také použije jako název cílové skupiny prostředků. Pro účely tohoto rychlého startu zvažte použití .msdocs-orleans-url-shortener

  5. Nasaďte účet Azure Cosmos DB for NoSQL pomocí azd up. Šablony Bicep také nasazují ukázkovou webovou aplikaci.

    azd up
    
  6. Během procesu zřizování vyberte své předplatné a požadované umístění. Počkejte na dokončení procesu zřizování a nasazení. Proces může trvat přibližně pět minut.

  7. Po dokončení zřizování prostředků Azure se do výstupu zahrne adresa URL spuštěné webové aplikace.

    Deploying services (azd deploy)
    
      (✓) Done: Deploying service web
    - Endpoint: <https://[container-app-sub-domain].azurecontainerapps.io>
    
    SUCCESS: Your application was provisioned and deployed to Azure in 5 minutes 0 seconds.
    
  8. Pomocí adresy URL v konzole přejděte do webové aplikace v prohlížeči.

    Snímek obrazovky se spuštěnou webovou aplikací pro zkrácení adresy URL

  9. Na adresním řádku prohlížeče otestujte shorten koncový bod přidáním cesty URL, například /shorten?url=https://www.microsoft.com. Stránka by se měla znovu načíst a zadat novou adresu URL s zkrácenou cestou na konci. Zkopírujte novou adresu URL do schránky.

    {
      "original": "https://www.microsoft.com",
      "shortened": "http://<container-app-name>.<deployment-name>.<region>.azurecontainerapps.io:<port>/go/<generated-id>"
    }
    
  10. Vložte zkrácenou adresu URL do adresního řádku a stiskněte enter. Stránka by se měla znovu načíst a přesměrovat vás na zadanou adresu URL.

Nasazení dalších služeb

Původní nasazení nasadí jenom minimální služby potřebné k hostování aplikace pro zkrácení adresy URL. Pokud chcete použít datovou službu Azure pro trvalost zrnitosti, musíte nejprve nakonfigurovat šablonu pro nasazení preferované služby.

  1. Spuštěním terminálu nakonfigurujte azd env set DEPLOY_AZURE_TABLE_STORAGE proměnnou prostředí tak, aby umožňovala nasazení služby Azure Cosmos DB for NoSQL.

    azd env set DEPLOY_AZURE_TABLE_STORAGE true
    
  1. Spuštěním terminálu nakonfigurujte azd env set DEPLOY_AZURE_COSMOS_DB_NOSQL proměnnou prostředí tak, aby umožňovala nasazení služby Azure Cosmos DB for NoSQL.

    azd env set DEPLOY_AZURE_COSMOS_DB_NOSQL true
    
  1. Spusťte azd provision opětovné nasazení architektury aplikace s novou konfigurací. Počkejte na dokončení procesu zřizování. Proces může trvat přibližně dvě minuty.

    azd provision
    

    Tip

    Alternativně můžete spustit azd up znovu, což zřídí vaši architekturu i znovu nasadí vaši aplikaci.

Instalace balíčků NuGet

Před použitím agregačního intervalu je nutné nainstalovat odpovídající Microsoft.Orleans.Clustering.* balíčky NuGet.Microsoft.Orleans.Persistence.* Tyto služby používají řízení přístupu na základě role pro ověřování bez hesla, takže musíte také importovat Azure.Identity balíček NuGet.

  1. Změňte aktuální pracovní adresář na ./src/web/.

    cd ./src/web
    
  2. Importujte Azure.Identity balíček z NuGetu pomocí dotnet add package.

    dotnet add package Azure.Identity --version 1.*
    
  3. Importujte balíčky Microsoft.Orleans.Clustering.AzureStorage a Microsoft.Orleans.Persistence.AzureStorage balíčky.

    Balíček NuGet
    Clustering Microsoft.Orleans.Clustering.AzureStorage
    Uchování Microsoft.Orleans.Persistence.AzureStorage
    dotnet add package Microsoft.Orleans.Clustering.AzureStorage --version 8.*
    dotnet add package Microsoft.Orleans.Persistence.AzureStorage --version 8.*
    
  1. Importujte Azure.Identity balíček z NuGetu pomocí dotnet add package.

    dotnet add package Azure.Identity --version 1.*
    
  2. Importujte balíčky Microsoft.Orleans.Clustering.Cosmos a Microsoft.Orleans.Persistence.Cosmos balíčky.

    Balíček NuGet
    Clustering Microsoft.Orleans.Clustering.Cosmos
    Uchování Microsoft.Orleans.Persistence.Cosmos
    dotnet add package Microsoft.Orleans.Clustering.Cosmos --version 8.*
    dotnet add package Microsoft.Orleans.Persistence.Cosmos --version 8.*
    

Konfigurace a opětovné nasazení ukázkové aplikace

Ukázková aplikace je aktuálně nakonfigurovaná tak, aby vytvořila cluster localhost a zachovala zrnka v paměti. Při hostování v Azure Orleans je možné nakonfigurovat použití škálovatelného centralizovaného stavu pomocí datové služby v Azure.

  1. Přidejte následující using direktivy:

    using Azure.Identity;
    using Orleans.Configuration;
    
  2. Vyhledejte a odeberte aktuální builder konfigurační kód v souboru src/web/Program.cs .

    builder.Host.UseOrleans(static siloBuilder =>
    {
        siloBuilder
            .UseLocalhostClustering()
            .AddMemoryGrainStorage("urls");
    });
    
  1. builder Nahraďte konfiguraci příkladem, který implementuje tyto klíčové koncepty:

    • Přidá se kontrola podmíněného prostředí, která zajistí správné fungování aplikace ve scénářích místního vývoje i hostovaných v Azure.
    • Tato UseAzureStorageClustering metoda nakonfiguruje Orleans cluster tak, aby používal Službu Azure Table Storage a ověřila se pomocí DefaultAzureCredential třídy.
    • Configure Pomocí metody přiřaďte ID clusteruOrleans.
      • Jedná se ClusterID o jedinečné ID clusteru, které umožňuje klientům a sila vzájemně komunikovat.
      • Může ClusterID se změnit napříč nasazeními.
      • Jedná se ServiceID o jedinečné ID aplikace, které interně Orleans používá a které by měly zůstat konzistentní napříč nasazeními.
    if (builder.Environment.IsDevelopment())
    {
        builder.Host.UseOrleans(static siloBuilder =>
        {
            siloBuilder
                .UseLocalhostClustering()
                .AddMemoryGrainStorage("urls");
        });
    }
    else
    {
        builder.Host.UseOrleans(siloBuilder =>
        {
            var endpoint = new Uri(builder.Configuration["AZURE_TABLE_STORAGE_ENDPOINT"]!);
            var credential = new DefaultAzureCredential();
    
            siloBuilder
                .UseAzureStorageClustering(options =>
                {
                    options.ConfigureTableServiceClient(endpoint, credential);
                })
                .AddAzureTableGrainStorage(name: "urls", options =>
                {
                    options.ConfigureTableServiceClient(endpoint, credential);
                })
                .Configure<ClusterOptions>(options =>
                {
                    options.ClusterId = "url-shortener";
                    options.ServiceId = "urls";
                });
        });
    }
    
  1. builder Nahraďte konfiguraci příkladem, který implementuje tyto klíčové koncepty:

    • Přidá se kontrola podmíněného prostředí, která zajistí správné fungování aplikace ve scénářích místního vývoje i hostovaných v Azure.
    • Tato UseCosmosClustering metoda nakonfiguruje Orleans cluster tak, aby používal službu Azure Cosmos DB for NoSQL a ověřila se pomocí DefaultAzureCredential této třídy.
    • Configure Pomocí metody přiřaďte ID clusteruOrleans.
      • Jedná se ClusterID o jedinečné ID clusteru, které umožňuje klientům a sila vzájemně komunikovat.
      • Může ClusterID se změnit napříč nasazeními.
      • Jedná se ServiceID o jedinečné ID aplikace, které interně Orleans používá a které by měly zůstat konzistentní napříč nasazeními.
    if (builder.Environment.IsDevelopment())
    {
        builder.Host.UseOrleans(static siloBuilder =>
        {
            siloBuilder
                .UseLocalhostClustering()
                .AddMemoryGrainStorage("urls");
        });
    }
    else
    {
        builder.Host.UseOrleans(siloBuilder =>
        {
            var endpoint = builder.Configuration["AZURE_COSMOS_DB_NOSQL_ENDPOINT"]!;
            var credential = new DefaultAzureCredential();
    
            siloBuilder
                .UseCosmosClustering(options =>
                {
                    options.ConfigureCosmosClient(endpoint, credential);
                })
                .AddCosmosGrainStorage(name: "urls", options =>
                {
                    options.ConfigureCosmosClient(endpoint, credential);
                })
                .Configure<ClusterOptions>(options =>
                {
                    options.ClusterId = "url-shortener";
                    options.ServiceId = "urls";
                });
        });
    }
    
  1. Spusťte azd deploy opětovné nasazení kódu aplikace jako kontejneru Dockeru. Počkejte na dokončení procesu nasazení. Proces může trvat přibližně jednu minutu.

    azd deploy
    

    Tip

    Alternativně můžete spustit azd up znovu, což zřídí vaši architekturu i znovu nasadí vaši aplikaci.

Ověření chování aplikace

Ověřte, že aktualizovaný kód funguje znovu pomocí nasazené aplikace, a zkontrolujte, kde se ukládají data.

  1. Na adresním řádku prohlížeče znovu otestujte shorten koncový bod přidáním cesty URL, například /shorten?url=https://learn.microsoft.com/dotnet/orleans. Stránka by se měla znovu načíst a zadat novou adresu URL s zkrácenou cestou na konci. Zkopírujte novou adresu URL do schránky.

    {
      "original": "https://learn.microsoft.com/dotnet/orleans",
      "shortened": "http://<container-app-name>.<deployment-name>.<region>.azurecontainerapps.io:<port>/go/<generated-id>"
    }
    
  2. Vložte zkrácenou adresu URL do adresního řádku a stiskněte enter. Stránka by se měla znovu načíst a přesměrovat vás na zadanou adresu URL.

Volitelně můžete ověřit, že data clusteru a stavu jsou uložená podle očekávání v účtu úložiště, který jste vytvořili.

  1. Na webu Azure Portal přejděte do skupiny prostředků nasazené v tomto rychlém startu.

    Důležité

    Název prostředí zadaný dříve v tomto rychlém startu je také názvem cílové skupiny prostředků.

  1. Přejděte na stránku přehledu účtu Azure Storage.

  2. V navigaci vyberte Prohlížeč úložiště.

  3. Rozbalte položku Navigace tabulky a zjistěte dvě tabulky vytvořenéOrleans:

    • OrleansGrainState: V této tabulce jsou uložena trvalá data agregační intervalu stavu, která aplikace používá ke zpracování přesměrování adresy URL.

    • OrleansSiloInstances: Tato tabulka sleduje základní data sil pro Orleans cluster.

  4. OrleansVyberte tabulku GrainState. Tabulka obsahuje položku řádku pro každé přesměrování adresy URL, které aplikace uchovává během testování.

    Snímek obrazovky znázorňující Orleans data ve službě Azure Table Storage

  1. Přejděte na stránku přehledu účtu Azure Cosmos DB for NoSQL.

  2. V navigaci vyberte Průzkumník dat.

  3. Podívejte se na následující kontejnery, které jste vytvořili dříve v této příručce:

    • OrleansÚložiště: V této tabulce jsou uložená trvalá data agregačního intervalu stavu, která aplikace používá ke zpracování přesměrování adresy URL.

    • OrleansCluster: Tato tabulka sleduje základní data sil pro Orleans cluster.

Škálujte aplikaci.

Orleans je určená pro distribuované aplikace. Dokonce i aplikace stejně jednoduchá jako zkrácení adresy URL může těžit ze škálovatelnosti Orleans. Aplikaci můžete škálovat a testovat napříč několika instancemi pomocí následujícího postupu:

  1. Vraťte se do skupiny prostředků nasazené v tomto rychlém startu.

  2. Přejděte na stránku přehledu aplikace Azure Container Apps.

  3. V navigaci vyberte Škálovat.

  4. Vyberte Upravit a nasaďte a pak přepněte na kartu Měřítko .

  5. Pomocí posuvníku nastavte minimální a maximální hodnoty repliky na 4. Tato hodnota zajišťuje, že aplikace běží na více instancích.

  6. Výběrem možnosti Vytvořit nasadíte novou revizi.

    Snímek obrazovky znázorňující, jak škálovat aplikaci Azure Container Apps

  7. Po dokončení nasazení zopakujte testovací kroky z předchozí části. Aplikace bude dál fungovat podle očekávání v několika instancích a může teď zpracovávat vyšší počet požadavků.

Další krok