Развертывание веб-приложений на виртуальных машинах Azure с помощью групп развертывания

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022

В более ранних версиях Azure Pipelines развертывание приложений на нескольких серверах требует значительного планирования и обслуживания. Удаленное взаимодействие Windows PowerShell должно быть включено вручную, определенные порты должны быть открыты, а агенты развертывания должны быть установлены на каждом сервере. Управление развертываниями также требует ручного вмешательства. Введение групп развертывания значительно упростило эти проблемы.

Группа развертывания устанавливает агент развертывания на каждом целевом сервере в группе и позволяет конвейеру выпуска постепенно развертывать приложение на этих серверах. Вы можете создать несколько конвейеров для развертывания, чтобы разрешить поэтапное доставку обновлений приложений в разные группы пользователей.

Замечание

Группы развертывания используются в классических конвейерах. Если вы используете конвейеры YAML, см. статью "Создание и назначение сред Azure DevOps".

Предпосылки

Продукт Требования
Azure DevOps Организация Azure DevOps.
— проект Azure DevOps .
Демонстрационный генератор Azure DevOps - Настройте демонстрационный генератор.
— Создайте проект Azure DevOps и выберите шаблон DeploymentGroups .
Лазурный подписка Azure.

Настройка ресурсов в Azure

В этом разделе описано, как настроить ресурсы Azure с помощью шаблона Azure Resource Manager. Он подготавливает шесть веб-серверов виртуальных машин с настроенными службами IIS, виртуальной машиной SQL Server (сервером базы данных), подсистемой балансировки нагрузки Azure и всеми необходимыми сетевыми подключениями.

  1. Нажмите кнопку Развернуть в Azure, чтобы начать развертывание ресурсов в Azure.

  2. Введите необходимые сведения и нажмите кнопку "Проверить и создать".

    Вы можете использовать любое допустимое сочетание имен пользователей и паролей, так как они не будут использоваться повторно в этой статье. Значение префикса Env добавляется ко всем именам ресурсов, чтобы обеспечить глобальную уникальность. Используйте что-то личное или случайное. Если во время проверки или создания возникает конфликт именования, попробуйте изменить это значение и повторно развернуть. Подготовка обычно занимает от 10 до 15 минут.

    Снимок экрана: настройка ресурсов Azure.

  3. После завершения проверки выберите Создать, чтобы развернуть ресурсы.

  4. После завершения развертывания перейдите в группу ресурсов на портале Azure, чтобы просмотреть созданные ресурсы. Выберите виртуальную машину сервера базы данных с sqlSrv в его имени, чтобы просмотреть сведения.

    Снимок экрана: только что созданные ресурсы в Azure.

  5. Скопируйте значение DNS-имени , так как вам потребуется на следующем шаге.

    Снимок экрана: виртуальная машина сервера базы данных в Azure.

Создание группы развертывания

Группа развертывания — это коллекция компьютеров. На каждом компьютере установлен агент развертывания. Эти компьютеры взаимодействуют с Azure Pipelines для координации развертываний приложений.

  1. Перейдите в проект Azure DevOps, созданный ранее с помощью демонстрационного генератора.

  2. Выберитегруппы развертывания>.

  3. Выберите "Добавить группу развертывания".

  4. Введите "Выпуск " в качестве значения имени группы развертывания и нажмите кнопку "Создать".

Создается скрипт регистрации. Этот скрипт можно использовать для регистрации целевых серверов и установки агента развертывания вручную. Однако в этой статье целевые серверы автоматически регистрируются как часть конвейера выпуска.

Создание личного маркера доступа

  1. В проекте Azure DevOps щелкните значок "Параметры пользователя " и выберите личные маркеры доступа.

  2. Выберите новый маркер, введите имя личного маркера доступа (PAT), а затем выберите дату окончания срока действия.

  3. Выберите "Пользовательские " для областей, выберите "Показать все области", а затем проверьте следующие области:

    • Проект и команда>Чтение и запись
    • Пулы агентов>Чтение и управление ими
    • Группы развертывания>Чтение и управление
  4. По завершении нажмите кнопку "Создать". Скопируйте PAT, так как он понадобится вам в следующем разделе.

Настройка конвейера выпуска

Шаблон для классического конвейера выпуска включает одно задание агента, этап агента. Это задание выполняет задачи на агенте, находящемся в пуле агентов.

Шаблон также включает два задания группы развертывания: этап развертывания и этап развертывания IIS. Задания группы развертывания выполняют задачи на компьютерах, определенных в группе развертывания.

Чтобы настроить каждое задание, выполните следующие действия.

Настройка задания агента

  1. Перейдите в ваш проект Azure DevOps и выберите Пайплайны>Релизы.

  2. Выберите определение выпуска групп развертывания и нажмите кнопку "Изменить".

  3. Перейдите на вкладку "Задачи ", чтобы просмотреть задачи развертывания в конвейере.

  4. Выберите этап этапа агента , а затем выберите пул Azure Pipelines и последнюю спецификацию Windows.

    Снимок экрана: этап агента в классическом конвейере выпуска.

  5. Выберите задачу развертывания группы ресурсов Azure , выберите значение подписки Azure , используемое ранее для создания ресурсов, а затем нажмите кнопку "Авторизовать", чтобы авторизовать подключение. После авторизации подключения выберите значение группы ресурсов , созданное для этой статьи.

    Снимок экрана: настройка группы ресурсов в задаче развертывания.

  6. Эта задача будет выполняться на виртуальных машинах в Azure и должна быть в состоянии подключиться к конвейеру для выполнения требований группы развертывания. Чтобы защитить подключение, необходимо настроить подключение службы с помощью созданного ранее PAT. Прокрутите вниз в той же задаче и выберите "Создать" в разделе "Подключение службы Azure Pipelines".

  7. В области "Создание подключения службы" введите значение URL-адреса подключения для организации Azure DevOps: https://dev.azure.com/organizationName Вставьте значение персонального маркера доступа, созданное ранее, укажите значение имя подключения службы и установите флажок "Предоставить доступ ко всем конвейерам". По завершении нажмите кнопку "Проверить и сохранить".

    Снимок экрана, на котором показано, как настроить новое подключение службы для задачи развертывания.

  8. Прокрутите вниз в задаче развертывания группы ресурсов Azure . В раскрывающихся меню выберите значение проекта группы и значение группы развертывания , созданное ранее.

    Снимок экрана: настройка командного проекта и группы развертывания для задачи развертывания.

Настройка заданий группы развертывания

  1. В определении выпуска групп развертывания выберите задание для фазы группы развертывания.

    Это задание выполняет задачи на компьютерах, определенных в группе развертывания. Это задание использует тег SQL-Svr-DB для развертывания в подмножестве целевых объектов в группе развертывания.

    В раскрывающемся списке группы развертывания выберите созданную ранее группу развертывания выпуска .

    Снимок экрана: настройка задания для этапа группы развертывания.

  2. Выберите задание этапа развертывания IIS . Это задание использует тег WebSrv для развертывания веб-приложения в подмножестве веб-серверов. В раскрывающемся списке выберите значение группы развертывания , созданное ранее.

  3. Не рекомендуется использовать задачи "Отключить сетевуюподсистему балансировки нагрузки Azure" и подключить задачи Azure Network Load Balancer . Вы можете отключить их сейчас, щелкнув правой кнопкой мыши задачи и выбрав "Отключить выбор задач".

  4. Задачи "Управление веб-приложениями IIS " и " Развертывание веб-приложений IIS " предварительно заполнены и не требуют изменений.

  5. Перейдите на вкладку "Переменные", выберите "Переменные конвейера" и укажите следующие значения. Замените заполнитель в переменной DefaultConnectionString DNS-именем SQL Server, скопированным ранее.

    Имя переменной Значение переменной
    DatabaseName PartsUnlimited-Dev
    DBPassword xxxxxxxx
    DBUserName xxxxxxxx
    DefaultConnectionString Data Source=[YOUR_DNS_NAME];Initial Catalog=PartsUnlimited-Dev;User ID=xxxxxxxx;Password=xxxxxxxx;MultipleActiveResultSets=False;Connection Timeout=30;
    ServerName localhost
  6. Нажмите кнопку "Сохранить", добавьте комментарий, если хотите, и нажмите кнопку "ОК".

Подсказка

Если вы получите сообщение об ошибке, что DefaultConnectionString переменная должна быть сохранена в виде секрета, щелкните значок блокировки рядом со значением, чтобы защитить его.

Создание выпуска и развертывание приложения

Теперь, когда определение выпуска настроено и сохранено, можно перейти к созданию выпуска для развертывания веб-приложения в Azure.

Перед началом выпуска необходимо убедиться, что поток сборки был выполнен по крайней мере один раз. Это действие создает артефакт конвейера, необходимый для развертывания. Если вы попытаетесь запустить конвейер выпуска перед конвейером сборки, раздел Артефакты на панели Выпуска будет пустым.

Используйте следующие шаги, чтобы запустить конвейер, создать артефакт конвейера и затем создать новый выпуск:

  1. В проекте Azure DevOps выберите Pipeline и выберите конвейер сборки групп развертывания .

  2. Выберите "Запустить конвейер". На панели "Запуск конвейера " выберите значение спецификации агента и нажмите кнопку "Выполнить".

    Снимок экрана, показывающий, как настроить запуск конвейера.

  3. После успешного завершения конвейера создается артефакт конвейера. Его можно просмотреть из сводки конвейера.

    Снимок экрана: созданный артефакт конвейера.

  4. Перейдите к Разделу Pipelines>, Выпуск, выберите определение выпуска. Затем нажмите кнопку "Создать выпуск ", чтобы запустить конвейер развертывания.

  5. На панели "Создание нового выпуска " нажмите кнопку "Создать".

    Снимок экрана, показывающий как создать новый релиз.

  6. Выберите запуск конвейера, чтобы открыть обзор. Конвейер должен иметь состояние "Выполняется". Выберите этап для просмотра подробных журналов развертывания.

    Снимок экрана: обзор конвейера выпуска.

  7. В сводке по выпуску можно отслеживать состояние каждого этапа развертывания.

    Снимок экрана, показывающий сводку о выпуске.

Troubleshoot

Ошибка подключения или входа

При выполнении задачи "Развертывание Sql Dacpac на группе компьютеров " может возникнуть одна из следующих ошибок:

  • "Не удается подключиться к главному или целевому серверу"
  • "Соединение было успешно установлено с сервером, но в процессе входа произошла ошибка".

Если вы столкнулись с любой из этих ошибок, выполните следующие действия.

  1. Убедитесь, что база данных успешно создана во время развертывания ресурсов. Вы можете подтвердить это создание с помощью Azure CLI или sqlcmd:

    sqlcmd -S <server-name> -U <username> -P <password> -Q "SELECT name FROM sys.databases"
    

    Если база данных отсутствует в списке, ее можно создать с помощью следующей команды:

    sqlcmd -S <server-name> -U <username> -P <password> -Q "CREATE DATABASE [YourDatabaseName]"
    
  2. Убедитесь, что проверка подлинности SQL Server включена. Развертывание SQL Server должно быть настроено, чтобы разрешить проверку подлинности SQL Server и проверку подлинности Windows (смешанный режим). Чтобы включить проверку подлинности SQL Server, выполните приведенные действия.

    a. Подключитесь с помощью SQL Server Management Studio или sqlcmd.

    б. Выполните следующий запрос:

    EXEC xp_instance_regwrite 
        N'HKEY_LOCAL_MACHINE',
        N'Software\\Microsoft\\MSSQLServer\\MSSQLServer',
        N'LoginMode',
        REG_DWORD,
        2;
    

    c. Перезапустите службу SQL Server, чтобы изменения вступили в силу:

    net stop MSSQLSERVER
    net start MSSQLSERVER
    

Агенты отображаются оффлайн

Если один или несколько агентов отображаются как оффлайн, даже если они работают на вашей виртуальной машине, вы можете попробовать сделать следующее. Во-первых, войдите на виртуальную машину, где выполняется агент, и выполните следующую команду, чтобы проверить, разрешается ли ваша виртуальная машина на тот же набор IP-адресов.

nslookup dev.azure.com

Если все виртуальные машины разрешаются в одном наборе IP-адресов, убедитесь, что балансировщик нагрузки настроен с правильным правилом исходящего трафика. Вы можете добавить серверный пул в подсистему балансировки нагрузки в Azure, добавить сетевые адаптеры виртуальных машин в внутренний пул, а затем связать внутренний пул с правилом исходящего трафика подсистемы балансировки нагрузки. Чтобы выполнить эту задачу, сделайте следующее:

  1. Перейдите в Azure и найдите подсистему балансировки нагрузки.

  2. Выберите серверные пулы и выберите существующий пул или создайте новый. В разделе IP-конфигураций добавьте веб-серверы.

  3. Перейдите к правилам балансировки нагрузки и выберите правило балансировки нагрузки. В раскрывающемся списке внутреннего пула выберите серверный пул.

Очистите ресурсы

В этой статье вы создали проект Azure DevOps и развернули ресурсы в Azure. Если они больше не нужны, выполните следующие действия, чтобы очистить их.

Шаг 1. Удаление проекта Azure DevOps

Перейдите в "Параметры проекта", а затем выберите Обзор>Удалить.

Шаг 2. Удаление группы ресурсов Azure

Все ресурсы Azure, созданные в этой статье, находятся в одной группе ресурсов. При удалении группы ресурсов удаляются все связанные ресурсы.

Чтобы удалить группу ресурсов с помощью Azure CLI, выполните следующую команду:

az group delete --name <RESOURCE_GROUP_NAME> --yes --no-wait

Чтобы удалить группу ресурсов с помощью портала Azure, выполните следующие действия.

  1. На портале Azure перейдите к группам ресурсов.

  2. Выберите группу ресурсов, которую вы использовали в статье.

  3. Выберите "Удалить группу ресурсов", подтвердите имя и нажмите кнопку "Удалить".