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
- Účet Azure s aktivním předplatným. Vytvoření účtu zdarma
- Azure Developer CLI
- .NET 8
- Docker
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.
Otevřete terminál v prázdném adresáři.
Ověřte se v Rozhraní příkazového řádku Azure Developer CLI pomocí
azd auth login
rozhraní 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
Získejte ukázkovou aplikaci pomocí šablony
orleans-url-shortener
AZD aazd init
příkazu.azd init --template orleans-url-shortener
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
Nasaďte účet Azure Cosmos DB for NoSQL pomocí
azd up
. Šablony Bicep také nasazují ukázkovou webovou aplikaci.azd up
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.
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.
Pomocí adresy URL v konzole přejděte do webové aplikace v prohlížeči.
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>" }
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.
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
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
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.
Změňte aktuální pracovní adresář na ./src/web/.
cd ./src/web
Importujte
Azure.Identity
balíček z NuGetu pomocídotnet add package
.dotnet add package Azure.Identity --version 1.*
Importujte balíčky
Microsoft.Orleans.Clustering.AzureStorage
aMicrosoft.Orleans.Persistence.AzureStorage
balíčky.Balíček NuGet Shlukování 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.*
Importujte
Azure.Identity
balíček z NuGetu pomocídotnet add package
.dotnet add package Azure.Identity --version 1.*
Importujte balíčky
Microsoft.Orleans.Clustering.Cosmos
aMicrosoft.Orleans.Persistence.Cosmos
balíčky.Balíček NuGet Shlukování 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.
Přidejte následující
using
direktivy:using Azure.Identity; using Orleans.Configuration;
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"); });
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.
- Jedná se
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"; }); }); }
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.
- Jedná se
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"; }); }); }
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.
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>" }
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.
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ů.
Přejděte na stránku přehledu účtu Azure Storage.
V navigaci vyberte Prohlížeč úložiště.
Rozbalte položku Navigace tabulky a zjistěte dvě tabulky vytvořenéOrleans:
OrleansGrainState: V této tabulce jsou uložena trvalá data o agregačním 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.
Vyberte tabulku OrleansGrainState. Tabulka obsahuje položku řádku pro každé přesměrování adresy URL, které aplikace uchovává během testování.
Přejděte na stránku přehledu účtu Azure Cosmos DB for NoSQL.
V navigaci vyberte Průzkumník dat.
Podívejte se na následující kontejnery, které jste vytvořili dříve v této příručce:
OrleansStorage: V této tabulce jsou uložena trvalá data o podrobnostech 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:
Vraťte se do skupiny prostředků nasazené v tomto rychlém startu.
Přejděte na stránku přehledu aplikace Azure Container Apps.
V navigaci vyberte Škálovat.
Vyberte Upravit a nasaďte a pak přepněte na kartu Měřítko .
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.
Výběrem možnosti Vytvořit nasadíte novou revizi.
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ů.