Udostępnij za pośrednictwem


Wdrażanie i skalowanie Orleans aplikacji na platformie Azure

W tym przewodniku Szybki start wdrożysz i przeprowadź skalowanie Orleans aplikacji skracającego adres URL w usłudze Azure Container Apps. Aplikacja umożliwia użytkownikom przesyłanie pełnego adresu URL do aplikacji, co zwraca skróconą wersję, którą mogą udostępnić innym osobom, aby przekierowali je do oryginalnej witryny. Orleans platforma Azure udostępnia funkcje skalowalności niezbędne do hostowania aplikacji o dużym natężeniu ruchu, takich jak skracacze adresów URL. Orleans jest również zgodny z dowolną inną usługą hostingową, która obsługuje platformę .NET.

Na końcu tego przewodnika Szybki start masz skalowalną aplikację działającą na platformie Azure w celu zapewnienia funkcji skracania adresów URL. Po drodze nauczysz się:

  • Szablon interfejsu wiersza polecenia ściągania i interfejsu wiersza polecenia dla deweloperów platformy Azure
  • Orleans Wdrażanie aplikacji na platformie Azure
  • Skalowanie aplikacji do wielu wystąpień

Wymagania wstępne

Pobieranie i wdrażanie przykładowej aplikacji

Przykładowa aplikacja jest dostępna jako szablon interfejsu wiersza polecenia dla deweloperów platformy Azure. W tym przewodniku Szybki start; Ściągasz aplikację szablonu, wdrażasz szablon i przykładowy kod na platformie Azure, zmieniasz szablon, aby zaimplementować preferowany ziarno trwałości, wdrożyć niezbędne zasoby, a następnie wdrożyć ostateczną aplikację.

  1. Otwórz terminal w pustym katalogu.

  2. Uwierzytelnianie w interfejsie wiersza polecenia dla deweloperów platformy Azure przy użyciu polecenia azd auth login. Wykonaj kroki określone przez narzędzie, aby uwierzytelnić się w interfejsie wiersza polecenia przy użyciu preferowanych poświadczeń platformy Azure.

    azd auth login
    
  3. Pobierz przykładową aplikację przy użyciu szablonu orleans-url-shortener AZD i azd init polecenia .

    azd init --template orleans-url-shortener
    
  4. Podczas inicjowania skonfiguruj unikatową nazwę środowiska.

    Napiwek

    Nazwa środowiska będzie również używana jako nazwa docelowej grupy zasobów. W tym przewodniku Szybki start rozważ użycie polecenia msdocs-orleans-url-shortener.

  5. Wdróż konto usługi Azure Cosmos DB for NoSQL przy użyciu polecenia azd up. Szablony Bicep wdrażają również przykładową aplikację internetową.

    azd up
    
  6. Podczas procesu aprowizacji wybierz subskrypcję i żądaną lokalizację. Poczekaj na ukończenie procesu aprowizacji i wdrażania. Proces może potrwać około pięciu minut.

  7. Po zakończeniu aprowizacji zasobów platformy Azure adres URL uruchomionej aplikacji internetowej zostanie uwzględniony w danych wyjściowych.

    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. Użyj adresu URL w konsoli, aby przejść do aplikacji internetowej w przeglądarce.

    Zrzut ekranu przedstawiający uruchomioną aplikację internetową skracającego adres URL.

  9. Na pasku adresu przeglądarki przetestuj shorten punkt końcowy, dodając ścieżkę adresu URL, taką jak /shorten?url=https://www.microsoft.com. Strona powinna zostać ponownie załadowana i podać nowy adres URL ze skróconą ścieżką na końcu. Skopiuj nowy adres URL do schowka.

    {
      "original": "https://www.microsoft.com",
      "shortened": "http://<container-app-name>.<deployment-name>.<region>.azurecontainerapps.io:<port>/go/<generated-id>"
    }
    
  10. Wklej skrócony adres URL na pasku adresu i naciśnij Enter. Strona powinna zostać ponownie załadowana i przekierowana do określonego adresu URL.

Wdrażanie dodatkowych usług

Oryginalne wdrożenie wdrożyło tylko minimalne usługi niezbędne do hostowania aplikacji skracającego adres URL. Aby użyć usługi danych platformy Azure na potrzeby trwałości ziarna, należy najpierw skonfigurować szablon w celu wdrożenia preferowanej usługi.

  1. Za pomocą terminalu uruchom polecenie azd env set , aby skonfigurować zmienną DEPLOY_AZURE_TABLE_STORAGE środowiskową w celu włączenia wdrożenia usługi Azure Cosmos DB for NoSQL.

    azd env set DEPLOY_AZURE_TABLE_STORAGE true
    
  1. Za pomocą terminalu uruchom polecenie azd env set , aby skonfigurować zmienną DEPLOY_AZURE_COSMOS_DB_NOSQL środowiskową w celu włączenia wdrożenia usługi Azure Cosmos DB for NoSQL.

    azd env set DEPLOY_AZURE_COSMOS_DB_NOSQL true
    
  1. Uruchom polecenie azd provision , aby ponownie wdrożyć architekturę aplikacji przy użyciu nowej konfiguracji. Poczekaj na zakończenie procesu aprowizacji. Proces może potrwać około dwóch minut.

    azd provision
    

    Napiwek

    Alternatywnie możesz uruchomić azd up ponownie, co spowoduje aprowizację architektury i ponowne wdrożenie aplikacji.

Instalowanie pakietów NuGet

Przed użyciem ziarna należy zainstalować odpowiednie Microsoft.Orleans.Clustering.* i Microsoft.Orleans.Persistence.* pakiety NuGet. Te usługi korzystają z kontroli dostępu opartej na rolach na potrzeby uwierzytelniania bez hasła, dlatego należy również zaimportować Azure.Identity pakiet NuGet.

  1. Zmień bieżący katalog roboczy na ./src/web/.

    cd ./src/web
    
  2. Zaimportuj Azure.Identity pakiet z pakietu NuGet przy użyciu polecenia dotnet add package.

    dotnet add package Azure.Identity --version 1.*
    
  3. Zaimportuj Microsoft.Orleans.Clustering.AzureStorage pakiety i Microsoft.Orleans.Persistence.AzureStorage .

    Pakiet NuGet
    Klastrowanie Microsoft.Orleans.Clustering.AzureStorage
    Trwałość Microsoft.Orleans.Persistence.AzureStorage
    dotnet add package Microsoft.Orleans.Clustering.AzureStorage --version 8.*
    dotnet add package Microsoft.Orleans.Persistence.AzureStorage --version 8.*
    
  1. Zaimportuj Azure.Identity pakiet z pakietu NuGet przy użyciu polecenia dotnet add package.

    dotnet add package Azure.Identity --version 1.*
    
  2. Zaimportuj Microsoft.Orleans.Clustering.Cosmos pakiety i Microsoft.Orleans.Persistence.Cosmos .

    Pakiet NuGet
    Klastrowanie Microsoft.Orleans.Clustering.Cosmos
    Trwałość Microsoft.Orleans.Persistence.Cosmos
    dotnet add package Microsoft.Orleans.Clustering.Cosmos --version 8.*
    dotnet add package Microsoft.Orleans.Persistence.Cosmos --version 8.*
    

Konfigurowanie i ponowne wdrażanie przykładowej aplikacji

Przykładowa aplikacja jest obecnie skonfigurowana do tworzenia klastra localhost i utrwalania ziarna w pamięci. W przypadku hostowania na platformie Azure Orleans można skonfigurować sposób używania bardziej skalowalnego, scentralizowanego stanu przy użyciu usługi danych na platformie Azure.

  1. Dodaj następujące using dyrektywy:

    using Azure.Identity;
    using Orleans.Configuration;
    
  2. Znajdź i usuń bieżący builder kod konfiguracji w pliku src/web/Program.cs .

    builder.Host.UseOrleans(static siloBuilder =>
    {
        siloBuilder
            .UseLocalhostClustering()
            .AddMemoryGrainStorage("urls");
    });
    
  1. Zastąp konfigurację builder przykładem, który implementuje następujące kluczowe pojęcia:

    • Dodano kontrolę środowiska warunkowego, aby upewnić się, że aplikacja działa prawidłowo zarówno w scenariuszach programowania lokalnego, jak i hostowanego na platformie Azure.
    • Metoda UseAzureStorageClustering konfiguruje Orleans klaster tak, aby używał usługi Azure Table Storage i uwierzytelnia się przy użyciu DefaultAzureCredential klasy .
    • Configure Użyj metody , aby przypisać identyfikatory dla klastraOrleans.
      • Jest ClusterID to unikatowy identyfikator klastra, który umożliwia klientom i silosom rozmowę ze sobą.
      • Element ClusterID może ulec zmianie we wszystkich wdrożeniach.
      • Jest ServiceID to unikatowy identyfikator aplikacji, która jest używana wewnętrznie Orleans i powinna pozostać spójna we wszystkich wdrożeniach.
    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. Zastąp konfigurację builder przykładem, który implementuje następujące kluczowe pojęcia:

    • Dodano kontrolę środowiska warunkowego, aby upewnić się, że aplikacja działa prawidłowo zarówno w scenariuszach programowania lokalnego, jak i hostowanego na platformie Azure.
    • Metoda UseCosmosClustering konfiguruje Orleans klaster tak, aby używał usługi Azure Cosmos DB dla noSQL i uwierzytelnia się przy użyciu DefaultAzureCredential klasy .
    • Configure Użyj metody , aby przypisać identyfikatory dla klastraOrleans.
      • Jest ClusterID to unikatowy identyfikator klastra, który umożliwia klientom i silosom rozmowę ze sobą.
      • Element ClusterID może ulec zmianie we wszystkich wdrożeniach.
      • Jest ServiceID to unikatowy identyfikator aplikacji, która jest używana wewnętrznie Orleans i powinna pozostać spójna we wszystkich wdrożeniach.
    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. Uruchom polecenie azd deploy , aby ponownie wdrożyć kod aplikacji jako kontener platformy Docker. Poczekaj na zakończenie procesu wdrażania. Proces może potrwać około minuty.

    azd deploy
    

    Napiwek

    Alternatywnie możesz uruchomić azd up ponownie, co spowoduje aprowizację architektury i ponowne wdrożenie aplikacji.

Weryfikowanie zachowania aplikacji

Sprawdź, czy zaktualizowany kod działa ponownie przy użyciu wdrożonej aplikacji i sprawdź, gdzie przechowuje dane.

  1. Na pasku adresu przeglądarki ponownie przetestuj shorten punkt końcowy, dodając ścieżkę adresu URL, taką jak /shorten?url=https://learn.microsoft.com/dotnet/orleans. Strona powinna zostać ponownie załadowana i podać nowy adres URL ze skróconą ścieżką na końcu. Skopiuj nowy adres URL do schowka.

    {
      "original": "https://learn.microsoft.com/dotnet/orleans",
      "shortened": "http://<container-app-name>.<deployment-name>.<region>.azurecontainerapps.io:<port>/go/<generated-id>"
    }
    
  2. Wklej skrócony adres URL na pasku adresu i naciśnij Enter. Strona powinna zostać ponownie załadowana i przekierowana do określonego adresu URL.

Opcjonalnie możesz sprawdzić, czy dane klastra i stanu są przechowywane zgodnie z oczekiwaniami na utworzonym koncie magazynu.

  1. W witrynie Azure Portal przejdź do grupy zasobów wdrożonej w tym przewodniku Szybki start.

    Ważne

    Nazwa środowiska określona wcześniej w tym przewodniku Szybki start jest również nazwą docelowej grupy zasobów.

  1. Przejdź do strony przeglądu konta usługi Azure Storage.

  2. W obszarze nawigacji wybierz pozycję Przeglądarka magazynu.

  3. Rozwiń element nawigacji Tabele, aby odnaleźć dwie tabele utworzone przez Orleansprogram :

    • OrleansGrainState: ta tabela przechowuje trwałe dane ziarna stanu używane przez aplikację do obsługi przekierowań adresów URL.

    • OrleansSiloInstances: ta tabela śledzi podstawowe dane silosu dla klastra Orleans .

  4. Wybierz tabelę OrleansGrainState . Tabela zawiera wpis wiersza dla każdego przekierowania adresu URL utrwalonego przez aplikację podczas testowania.

    Zrzut ekranu przedstawiający dane w usłudze Orleans Azure Table Storage.

  1. Przejdź do strony przeglądu konta usługi Azure Cosmos DB for NoSQL.

  2. W obszarze nawigacji wybierz pozycję Eksplorator danych.

  3. Zapoznaj się z następującymi kontenerami utworzonymi wcześniej w tym przewodniku:

    • OrleansStorage: ta tabela przechowuje trwałe dane ziarna stanu używane przez aplikację do obsługi przekierowań adresów URL.

    • OrleansCluster: Ta tabela śledzi podstawowe dane silosu dla klastra Orleans .

Wykonaj skalowanie aplikacji

Orleans jest przeznaczony dla aplikacji rozproszonych. Nawet aplikacja tak prosta, jak skrócenie adresu URL może korzystać ze skalowalności .Orleans Aplikację można skalować i testować w wielu wystąpieniach, wykonując następujące kroki:

  1. Wróć do grupy zasobów wdrożonej w tym przewodniku Szybki start.

  2. Przejdź do strony przeglądu aplikacji Azure Container Apps.

  3. W obszarze nawigacji wybierz pozycję Skaluj.

  4. Wybierz pozycję Edytuj i wdróż, a następnie przejdź do karty Skalowanie .

  5. Użyj kontrolki suwaka, aby ustawić minimalną i maksymalną wartość repliki na 4. Ta wartość gwarantuje, że aplikacja działa w wielu wystąpieniach.

  6. Wybierz pozycję Utwórz , aby wdrożyć nową wersję.

    Zrzut ekranu przedstawiający sposób skalowania aplikacji Azure Container Apps.

  7. Po zakończeniu wdrażania powtórz kroki testowania z poprzedniej sekcji. Aplikacja nadal działa zgodnie z oczekiwaniami w kilku wystąpieniach i może teraz obsługiwać większą liczbę żądań.

Następny krok