Развертывание и масштабирование Orleans приложения в Azure
В этом кратком руководстве описано, как развернуть и масштабировать приложение с сокращением Orleans URL-адресов в приложениях контейнеров Azure. Приложение позволяет пользователям отправлять полный URL-адрес в приложение, которое возвращает сокращенную версию, которую они могут поделиться с другими пользователями, чтобы направить их на исходный сайт. Orleans и Azure предоставляют возможности масштабируемости, необходимые для размещения приложений с высоким трафиком, таких как сокращение URL-адресов. Orleans также совместим с любой другой службой размещения, поддерживающей .NET.
В конце этого краткого руководства у вас есть масштабируемое приложение, работающее в Azure для предоставления возможностей сокращения URL-адресов. На этом пути вы узнаете:
- Шаблон командной строки разработчика Azure
- Развертывание приложения в Orleans Azure
- Масштабирование приложения до нескольких экземпляров
Необходимые компоненты
- Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .
- Интерфейс командной строки разработчика Azure
- .NET 8
- Docker
Получение и развертывание примера приложения
Пример приложения доступен в качестве шаблона интерфейса командной строки разработчика Azure. В этом кратком руководстве; Вы извлеките приложение шаблона, разверните шаблон и пример кода в Azure, измените шаблон, чтобы реализовать предпочтительное значение сохраняемости, развернуть необходимые ресурсы и развернуть окончательное приложение.
Откройте терминал в пустом каталоге.
Проверка подлинности в интерфейсе командной строки разработчика Azure с помощью
azd auth login
. Выполните действия, указанные средством для проверки подлинности в CLI с помощью предпочитаемых учетных данных Azure.azd auth login
Получите пример приложения с помощью шаблона
orleans-url-shortener
AZD иazd init
команды.azd init --template orleans-url-shortener
Во время инициализации настройте уникальное имя среды.
Совет
Имя среды также будет использоваться в качестве имени целевой группы ресурсов. В этом кратком руководстве рекомендуется использовать
msdocs-orleans-url-shortener
.Разверните учетную запись Azure Cosmos DB для NoSQL с помощью
azd up
. Шаблоны Bicep также развертывают пример веб-приложения.azd up
В процессе подготовки выберите подписку и нужное расположение. Дождитесь завершения процесса подготовки и развертывания. Процесс может занять около пяти минут.
После завершения подготовки ресурсов Azure в выходные данные будет включен URL-адрес работающего веб-приложения.
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.
Используйте URL-адрес консоли для перехода к веб-приложению в браузере.
В адресной строке браузера проверьте конечную точку
shorten
, добавив путь URL-адреса, например/shorten?url=https://www.microsoft.com
. Страница должна перезагрузить и указать новый URL-адрес с сокращенным путем в конце. Скопируйте новый URL-адрес в буфер обмена.{ "original": "https://www.microsoft.com", "shortened": "http://<container-app-name>.<deployment-name>.<region>.azurecontainerapps.io:<port>/go/<generated-id>" }
Вставьте сокращенный URL-адрес в адресную строку и нажмите клавишу "ВВОД". Страница должна перезагрузить и перенаправить вас по указанному URL-адресу.
Развертывание дополнительных служб
Исходное развертывание развернуло только минимальные службы, необходимые для размещения приложения с сокращением URL-адресов. Чтобы использовать службу данных Azure для сохраняемости, необходимо сначала настроить шаблон для развертывания предпочтительной службы.
С помощью терминала выполните настройку
azd env set
DEPLOY_AZURE_TABLE_STORAGE
переменной среды, чтобы включить развертывание Azure Cosmos DB для NoSQL.azd env set DEPLOY_AZURE_TABLE_STORAGE true
С помощью терминала выполните настройку
azd env set
DEPLOY_AZURE_COSMOS_DB_NOSQL
переменной среды, чтобы включить развертывание Azure Cosmos DB для NoSQL.azd env set DEPLOY_AZURE_COSMOS_DB_NOSQL true
Запустите
azd provision
, чтобы повторно развернуть архитектуру приложения с новой конфигурацией. Дождитесь завершения процесса подготовки. Процесс может занять около двух минут.azd provision
Совет
Кроме того, можно запустить
azd up
еще раз, что подготовит архитектуру и повторно разверните приложение.
Установка пакетов Nuget
Перед использованием зерна необходимо установить соответствующие Microsoft.Orleans.Clustering.*
пакеты и Microsoft.Orleans.Persistence.*
пакеты NuGet. Эти службы используют управление доступом на основе ролей для проверки подлинности без пароля, поэтому необходимо также импортировать Azure.Identity
пакет NuGet.
Измените текущий рабочий каталог на ./src/web/.
cd ./src/web
Azure.Identity
Импортируйте пакет из NuGet с помощьюdotnet add package
.dotnet add package Azure.Identity --version 1.*
Microsoft.Orleans.Clustering.AzureStorage
Импортируйте иMicrosoft.Orleans.Persistence.AzureStorage
пакеты.Пакет NuGet Кластеризация Microsoft.Orleans.Clustering.AzureStorage
Сохраняемость Microsoft.Orleans.Persistence.AzureStorage
dotnet add package Microsoft.Orleans.Clustering.AzureStorage --version 8.* dotnet add package Microsoft.Orleans.Persistence.AzureStorage --version 8.*
Azure.Identity
Импортируйте пакет из NuGet с помощьюdotnet add package
.dotnet add package Azure.Identity --version 1.*
Microsoft.Orleans.Clustering.Cosmos
Импортируйте иMicrosoft.Orleans.Persistence.Cosmos
пакеты.Пакет NuGet Кластеризация Microsoft.Orleans.Clustering.Cosmos
Сохраняемость Microsoft.Orleans.Persistence.Cosmos
dotnet add package Microsoft.Orleans.Clustering.Cosmos --version 8.* dotnet add package Microsoft.Orleans.Persistence.Cosmos --version 8.*
Настройка и повторное развертывание примера приложения
Пример приложения в настоящее время настроен для создания кластера localhost и сохранения зерн в памяти. При размещении в Azure Orleans можно настроить использование более масштабируемого централизованного состояния с помощью службы данных в Azure.
Затем добавьте следующие
using
директивы:using Azure.Identity; using Orleans.Configuration;
Найдите и удалите текущий
builder
код конфигурации в файле src/web/Program.cs .builder.Host.UseOrleans(static siloBuilder => { siloBuilder .UseLocalhostClustering() .AddMemoryGrainStorage("urls"); });
Замените конфигурацию примером
builder
, который реализует следующие основные понятия:- Добавлена проверка условной среды, чтобы обеспечить правильность работы приложения как в локальных сценариях разработки, так и в размещенных в Azure сценариях.
- Метод
UseAzureStorageClustering
настраивает Orleans кластер для использования хранилища таблиц Azure и выполняет проверку подлинности с помощью DefaultAzureCredential класса. Configure
Используйте метод, чтобы назначить идентификаторы для Orleans кластера.- Это
ClusterID
уникальный идентификатор кластера, который позволяет клиентам и силосам взаимодействовать друг с другом. - Это
ClusterID
может измениться в разных развертываниях. - Это
ServiceID
уникальный идентификатор приложения, который используется внутренне Orleans и должен оставаться согласованным в разных развертываниях.
- Это
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
, который реализует следующие основные понятия:- Добавлена проверка условной среды, чтобы обеспечить правильность работы приложения как в локальных сценариях разработки, так и в размещенных в Azure сценариях.
- Метод
UseCosmosClustering
настраивает Orleans кластер для использования Azure Cosmos DB для NoSQL и выполняет проверку подлинности с помощью DefaultAzureCredential класса. Configure
Используйте метод, чтобы назначить идентификаторы для Orleans кластера.- Это
ClusterID
уникальный идентификатор кластера, который позволяет клиентам и силосам взаимодействовать друг с другом. - Это
ClusterID
может измениться в разных развертываниях. - Это
ServiceID
уникальный идентификатор приложения, который используется внутренне Orleans и должен оставаться согласованным в разных развертываниях.
- Это
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"; }); }); }
Выполните повторное
azd deploy
развертывание кода приложения в качестве контейнера Docker. Дождитесь завершения процесса развертывания. Процесс может занять около одной минуты.azd deploy
Совет
Кроме того, можно запустить
azd up
еще раз, что подготовит архитектуру и повторно разверните приложение.
Проверка поведения приложения
Убедитесь, что обновленный код работает с помощью развернутого приложения еще раз и проверьте, где хранятся данные.
В адресной строке браузера проверьте
shorten
конечную точку еще раз, добавив путь URL-адреса, например/shorten?url=https://learn.microsoft.com/dotnet/orleans
. Страница должна перезагрузить и указать новый URL-адрес с сокращенным путем в конце. Скопируйте новый URL-адрес в буфер обмена.{ "original": "https://learn.microsoft.com/dotnet/orleans", "shortened": "http://<container-app-name>.<deployment-name>.<region>.azurecontainerapps.io:<port>/go/<generated-id>" }
Вставьте сокращенный URL-адрес в адресную строку и нажмите клавишу "ВВОД". Страница должна перезагрузить и перенаправить вас по указанному URL-адресу.
При необходимости можно убедиться, что данные кластера и состояния хранятся должным образом в созданной учетной записи хранения.
В портал Azure перейдите к группе ресурсов, развернутой в этом кратком руководстве.
Внимание
Имя среды, указанное ранее в этом кратком руководстве, также является именем целевой группы ресурсов.
Перейдите на страницу обзора учетной записи служба хранилища Azure.
В области навигации выберите браузер хранилища.
Разверните элемент навигации "Таблицы", чтобы обнаружить две таблицы, созданные следующими способамиOrleans:
OrleansGrainState: в этой таблице хранятся данные о постоянном состоянии, используемые приложением для обработки перенаправлений URL-адресов.
OrleansSiloInstances: эта таблица отслеживает важные данные silo для Orleans кластера.
Выберите таблицу OrleansGrainState . Таблица содержит запись строки для каждого перенаправления URL-адреса, сохраняемого приложением во время тестирования.
Перейдите на страницу обзора учетной записи Azure Cosmos DB для NoSQL.
В области навигации выберите Обозреватель данных.
Обратите внимание на следующие контейнеры, созданные ранее в этом руководстве:
OrleansХранилище: в этой таблице хранятся данные о постоянном состоянии, используемые приложением для обработки перенаправлений URL-адресов.
OrleansКластер: эта таблица отслеживает важные данные силона для Orleans кластера.
Масштабирование приложения
Orleans предназначен для распределенных приложений. Даже простое приложение, так как сокращение URL-адресов может воспользоваться масштабируемостью Orleans. Вы можете масштабировать и тестировать приложение в нескольких экземплярах, выполнив следующие действия.
Вернитесь к группе ресурсов, развернутой в этом кратком руководстве.
Перейдите на страницу обзора приложения "Приложения контейнеров Azure".
В области навигации выберите "Масштаб".
Выберите "Изменить" и "Развернуть", а затем перейдите на вкладку "Масштаб ".
Используйте ползунок, чтобы задать значения минимальной и максимальной реплики 4. Это значение гарантирует, что приложение работает на нескольких экземплярах.
Выберите "Создать", чтобы развернуть новую редакцию.
После завершения развертывания повторите шаги тестирования из предыдущего раздела. Приложение продолжает работать должным образом в нескольких экземплярах и теперь может обрабатывать большее количество запросов.
Связанный контент
Следующий шаг
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по