Bagikan melalui


Menyebarkan dan menskalakan Orleans aplikasi di Azure

Dalam mulai cepat ini, Anda menyebarkan dan menskalakan Orleans aplikasi perpendek URL di Azure Container Apps. Aplikasi ini memungkinkan pengguna untuk mengirimkan URL lengkap ke aplikasi, yang mengembalikan versi singkat yang dapat mereka bagikan dengan orang lain untuk mengarahkannya ke situs asli. Orleans dan Azure menyediakan fitur skalabilitas yang diperlukan untuk menghosting aplikasi lalu lintas tinggi seperti shortener URL. Orleans juga kompatibel dengan layanan hosting lain yang mendukung .NET.

Di akhir mulai cepat ini, Anda memiliki aplikasi yang dapat diskalakan yang berjalan di Azure untuk menyediakan fungsionalitas pemendek URL. Sepanjang cara Anda belajar untuk:

  • Templat CLI Pull dan Azure Developer
  • Menyebarkan Orleans aplikasi ke Azure
  • Menskalakan aplikasi ke beberapa instans

Prasyarat

Mendapatkan dan menyebarkan aplikasi sampel

Aplikasi sampel tersedia sebagai templat Azure Developer CLI. Melalui mulai cepat ini; Anda menarik aplikasi templat, menyebarkan templat dan kode sampel ke Azure, mengubah templat untuk mengimplementasikan butir persistensi pilihan Anda, menyebarkan sumber daya yang diperlukan, lalu menyebarkan aplikasi akhir.

  1. Buka terminal di direktori kosong.

  2. Autentikasi ke Azure Developer CLI menggunakan azd auth login. Ikuti langkah-langkah yang ditentukan oleh alat untuk mengautentikasi ke CLI menggunakan kredensial Azure pilihan Anda.

    azd auth login
    
  3. Dapatkan aplikasi sampel menggunakan templat orleans-url-shortener AZD dan azd init perintah .

    azd init --template orleans-url-shortener
    
  4. Selama inisialisasi, konfigurasikan nama lingkungan yang unik.

    Tip

    Nama lingkungan juga akan digunakan sebagai nama grup sumber daya target. Untuk mulai cepat ini, pertimbangkan untuk menggunakan msdocs-orleans-url-shortener.

  5. Sebarkan akun Azure Cosmos DB for NoSQL menggunakan azd up. Templat Bicep juga menyebarkan aplikasi web sampel.

    azd up
    
  6. Selama proses provisi, pilih langganan dan lokasi yang Anda inginkan. Tunggu hingga proses provisi dan penyebaran selesai. Prosesnya dapat memakan waktu sekitar lima menit.

  7. Setelah provisi sumber daya Azure Anda selesai, URL ke aplikasi web yang sedang berjalan disertakan dalam output.

    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. Gunakan URL di konsol untuk menavigasi ke aplikasi web Anda di browser.

    Cuplikan layar aplikasi web shortener URL yang sedang berjalan.

  9. Di bilah alamat browser, uji shorten titik akhir dengan menambahkan jalur URL seperti /shorten?url=https://www.microsoft.com. Halaman harus memuat ulang dan menyediakan URL baru dengan jalur yang dipersingkat di akhir. Salin URL baru ke clipboard Anda.

    {
      "original": "https://www.microsoft.com",
      "shortened": "http://<container-app-name>.<deployment-name>.<region>.azurecontainerapps.io:<port>/go/<generated-id>"
    }
    
  10. Tempelkan URL yang dipersingkat ke bilah alamat dan tekan enter. Halaman harus memuat ulang dan mengarahkan Anda ke URL yang Anda tentukan.

Menyebarkan layanan tambahan

Penyebaran asli hanya menyebarkan layanan minimal yang diperlukan untuk menghosting aplikasi shortener URL. Untuk menggunakan layanan data Azure untuk persistensi grain, Anda harus terlebih dahulu mengonfigurasi templat untuk menyebarkan layanan pilihan Anda.

  1. Menggunakan terminal, jalankan azd env set untuk mengonfigurasi DEPLOY_AZURE_TABLE_STORAGE variabel lingkungan untuk mengaktifkan penyebaran Azure Cosmos DB untuk NoSQL.

    azd env set DEPLOY_AZURE_TABLE_STORAGE true
    
  1. Menggunakan terminal, jalankan azd env set untuk mengonfigurasi DEPLOY_AZURE_COSMOS_DB_NOSQL variabel lingkungan untuk mengaktifkan penyebaran Azure Cosmos DB untuk NoSQL.

    azd env set DEPLOY_AZURE_COSMOS_DB_NOSQL true
    
  1. Jalankan azd provision untuk menyebarkan ulang arsitektur aplikasi Anda dengan konfigurasi baru. Tunggu hingga proses provisi selesai. Prosesnya dapat memakan waktu sekitar dua menit.

    azd provision
    

    Tip

    Atau, Anda dapat menjalankan azd up lagi yang akan menyediakan arsitektur Anda dan menyebarkan ulang aplikasi Anda.

Instal paket NuGet

Sebelum menggunakan biji-bijian, Anda harus menginstal paket yang sesuai Microsoft.Orleans.Clustering.* dan Microsoft.Orleans.Persistence.* NuGet. Layanan ini menggunakan kontrol akses berbasis peran untuk autentikasi tanpa kata sandi, jadi Anda juga harus mengimpor Azure.Identity paket NuGet.

  1. Ubah direktori kerja Anda saat ini menjadi ./src/web/.

    cd ./src/web
    
  2. Azure.Identity Impor paket dari NuGet menggunakan dotnet add package.

    dotnet add package Azure.Identity --version 1.*
    
  3. Microsoft.Orleans.Clustering.AzureStorage Impor paket dan Microsoft.Orleans.Persistence.AzureStorage .

    Paket NuGet
    Pengklusteran Microsoft.Orleans.Clustering.AzureStorage
    Persistensi Microsoft.Orleans.Persistence.AzureStorage
    dotnet add package Microsoft.Orleans.Clustering.AzureStorage --version 8.*
    dotnet add package Microsoft.Orleans.Persistence.AzureStorage --version 8.*
    
  1. Azure.Identity Impor paket dari NuGet menggunakan dotnet add package.

    dotnet add package Azure.Identity --version 1.*
    
  2. Microsoft.Orleans.Clustering.Cosmos Impor paket dan Microsoft.Orleans.Persistence.Cosmos .

    Paket NuGet
    Pengklusteran Microsoft.Orleans.Clustering.Cosmos
    Persistensi Microsoft.Orleans.Persistence.Cosmos
    dotnet add package Microsoft.Orleans.Clustering.Cosmos --version 8.*
    dotnet add package Microsoft.Orleans.Persistence.Cosmos --version 8.*
    

Mengonfigurasi dan menyebarkan ulang aplikasi sampel

Aplikasi sampel saat ini dikonfigurasi untuk membuat kluster localhost dan mempertahankan biji-bijian dalam memori. Saat dihosting di Azure, Orleans dapat dikonfigurasi untuk menggunakan status yang lebih dapat diskalakan dan terpusat menggunakan layanan data di Azure.

  1. Tambahkan instruksi using berikut:

    using Azure.Identity;
    using Orleans.Configuration;
    
  2. Temukan dan hapus kode konfigurasi saat ini builder di file src/web/Program.cs .

    builder.Host.UseOrleans(static siloBuilder =>
    {
        siloBuilder
            .UseLocalhostClustering()
            .AddMemoryGrainStorage("urls");
    });
    
  1. builder Ganti konfigurasi dengan contoh di sini, yang mengimplementasikan konsep utama ini:

    • Pemeriksaan lingkungan bersyarat ditambahkan untuk memastikan aplikasi berjalan dengan benar dalam skenario pengembangan lokal dan yang dihosting Azure.
    • Metode ini UseAzureStorageClustering mengonfigurasi Orleans kluster untuk menggunakan Azure Table Storage dan mengautentikasi menggunakan DefaultAzureCredential kelas .
    • Configure Gunakan metode untuk menetapkan ID untuk Orleans kluster.
      • ClusterID adalah ID unik untuk kluster yang memungkinkan klien dan silo untuk berbicara satu sama lain.
      • ClusterID dapat berubah di seluruh penyebaran.
      • ServiceID adalah ID unik untuk aplikasi yang digunakan secara internal oleh Orleans dan harus tetap konsisten di seluruh penyebaran.
    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 Ganti konfigurasi dengan contoh di sini, yang mengimplementasikan konsep utama ini:

    • Pemeriksaan lingkungan bersyarat ditambahkan untuk memastikan aplikasi berjalan dengan benar dalam skenario pengembangan lokal dan yang dihosting Azure.
    • Metode ini UseCosmosClustering mengonfigurasi Orleans kluster untuk menggunakan Azure Cosmos DB untuk NoSQL dan mengautentikasi menggunakan DefaultAzureCredential kelas .
    • Configure Gunakan metode untuk menetapkan ID untuk Orleans kluster.
      • ClusterID adalah ID unik untuk kluster yang memungkinkan klien dan silo untuk berbicara satu sama lain.
      • ClusterID dapat berubah di seluruh penyebaran.
      • ServiceID adalah ID unik untuk aplikasi yang digunakan secara internal oleh Orleans dan harus tetap konsisten di seluruh penyebaran.
    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. Jalankan azd deploy untuk menyebarkan ulang kode aplikasi Anda sebagai kontainer Docker. Tunggu hingga proses penyebaran selesai. Prosesnya dapat memakan waktu sekitar satu menit.

    azd deploy
    

    Tip

    Atau, Anda dapat menjalankan azd up lagi yang akan menyediakan arsitektur Anda dan menyebarkan ulang aplikasi Anda.

Memverifikasi perilaku aplikasi

Validasi bahwa kode yang diperbarui berfungsi dengan menggunakan aplikasi yang disebarkan lagi dan memeriksa untuk melihat di mana kode tersebut menyimpan data.

  1. Di bilah alamat browser, uji shorten titik akhir lagi dengan menambahkan jalur URL seperti /shorten?url=https://learn.microsoft.com/dotnet/orleans. Halaman harus memuat ulang dan menyediakan URL baru dengan jalur yang dipersingkat di akhir. Salin URL baru ke clipboard Anda.

    {
      "original": "https://learn.microsoft.com/dotnet/orleans",
      "shortened": "http://<container-app-name>.<deployment-name>.<region>.azurecontainerapps.io:<port>/go/<generated-id>"
    }
    
  2. Tempelkan URL yang dipersingkat ke bilah alamat dan tekan enter. Halaman harus memuat ulang dan mengarahkan Anda ke URL yang Anda tentukan.

Secara opsional, Anda dapat memverifikasi bahwa kluster dan data status disimpan seperti yang diharapkan di akun penyimpanan yang Anda buat.

  1. Di portal Azure, navigasikan ke grup sumber daya yang disebarkan dalam mulai cepat ini.

    Penting

    Nama lingkungan yang ditentukan sebelumnya dalam mulai cepat ini juga merupakan nama grup sumber daya target.

  1. Navigasikan ke halaman gambaran umum akun Azure Storage.

  2. Di dalam navigasi, pilih Browser penyimpanan.

  3. Perluas item navigasi Tabel untuk menemukan dua tabel yang dibuat oleh Orleans:

    • OrleansGrainState: Tabel ini menyimpan data butir status persisten yang digunakan oleh aplikasi untuk menangani pengalihan URL.

    • OrleansSiloInstances: Tabel ini melacak data silo penting untuk Orleans kluster.

  4. Pilih tabel OrleansGrainState . Tabel menyimpan entri baris untuk setiap pengalihan URL yang dipertahankan oleh aplikasi selama pengujian Anda.

    Cuplikan layar memperlihatkan Orleans data di Azure Table Storage.

  1. Navigasi ke halaman gambaran umum akun Azure Cosmos DB for NoSQL.

  2. Di dalam navigasi, pilih Data Explorer.

  3. Amati kontainer berikut yang Anda buat sebelumnya dalam panduan ini:

    • OrleansStorage: Tabel ini menyimpan data butir status persisten yang digunakan oleh aplikasi untuk menangani pengalihan URL.

    • OrleansCluster: Tabel ini melacak data silo penting untuk Orleans kluster.

Menskalakan aplikasi

Orleans dirancang untuk aplikasi terdistribusi. Bahkan aplikasi sesingkat pemenci URL dapat memperoleh manfaat dari skalabilitas Orleans. Anda dapat menskalakan dan menguji aplikasi di beberapa instans menggunakan langkah-langkah berikut:

  1. Navigasikan kembali ke grup sumber daya yang disebarkan dalam mulai cepat ini.

  2. Navigasi ke halaman gambaran umum aplikasi Azure Container Apps.

  3. Di dalam navigasi, pilih Skalakan.

  4. Pilih Edit dan sebarkan, lalu beralihlah ke tab Skala .

  5. Gunakan kontrol penggeser untuk mengatur nilai replika min dan maks ke 4. Nilai ini memastikan aplikasi berjalan pada beberapa instans.

  6. Pilih Buat untuk menyebarkan revisi baru.

    Cuplikan layar yang menunjukkan cara menskalakan aplikasi Azure Container Apps.

  7. Setelah penyebaran selesai, ulangi langkah-langkah pengujian dari bagian sebelumnya. Aplikasi terus berfungsi seperti yang diharapkan di beberapa instans dan sekarang dapat menangani jumlah permintaan yang lebih tinggi.

Langkah selanjutnya