В этой статье описаны рекомендации по созданию на локальных виртуальных машинах Azure. Он включает в себя сценарий развертывания. Точечные виртуальные машины (точечные виртуальные машины) обеспечивают доступ к вычислительной емкости с более низкими ценами, чем обычные виртуальные машины. Эта скидка делает их хорошим вариантом для организаций, которые хотят оптимизировать затраты. Но экономия приходит с компромиссом. Точечные виртуальные машины можно вытеснить в любое время, что означает, что они теряют доступ к вычислительным ресурсам. Рабочие нагрузки, выполняемые на точечных виртуальных машинах, должны иметь возможность обрабатывать эти прерывания вычислений. Правильная рабочая нагрузка и гибкий механизм оркестрации являются ключами к успешному выполнению. В следующих рекомендациях описывается, как создать на точечных виртуальных машинах.
Общие сведения о точечных виртуальных машинах
На техническом уровне точечные виртуальные машины совпадают с обычными виртуальными машинами. Они используют одни и те же образы, оборудование и диски, которые преобразуются в ту же производительность. Ключевое различие между точечными виртуальными машинами и обычными виртуальными машинами — это их приоритет и доступность. Точечные виртуальные машины не имеют приоритета для доступа к вычислительной емкости, и они не имеют гарантий доступности после того, как они получают доступ к этой вычислительной емкости.
Нет доступа к приоритету. Обычные виртуальные машины имеют приоритет доступа к вычислительной емкости. Они получают доступ к вычислительной емкости при запросе. Однако точечные виртуальные машины развертываются только при наличии запасной вычислительной емкости. И они продолжают работать, только если обычная виртуальная машина не нуждается в базовом оборудовании.
Нет гарантии доступности. У точечных виртуальных машин нет гарантий доступности или соглашений об уровне обслуживания (соглашения об уровне обслуживания). Точечные виртуальные машины могут немедленно потерять доступ к вычислительной емкости или в любое время после развертывания или вытеснения. Точечные виртуальные машины дешевле, так как их можно вытеснить. Когда Azure нуждается в вычислительной емкости, уведомление о вытеснения отправляется и вытесняет точечные виртуальные машины. Azure предоставляет как минимум 30-секундное уведомление до фактического вытеснения. Дополнительные сведения см. в разделе Непрерывное отслеживаниевытеснения.
Общие сведения о ценах на точечные виртуальные машины
Точечные виртуальные машины могут быть до 90% дешевле, чем обычные виртуальные машины по мере использования. Скидка зависит от спроса, размера виртуальной машины, региона развертывания и операционной системы. Сведения о оценке экономии затрат см. в средстве ценообразования на виртуальных машинах Azure Spot Virtual Machines и обзоре цен на виртуальные машины spot virtual machines. Вы также можете запросить API розничных цен Azure , чтобы получить точечные цены на любой номер SKU.
Общие сведения о прерываниях рабочих нагрузок
Точечные виртуальные машины идеально подходят для прерываний рабочих нагрузок, которые имеют несколько общих характеристик. Прерывания рабочих нагрузок имеют минимальные ограничения времени, низкий приоритет организации и короткое время обработки. Они выполняют процессы, которые могут внезапно останавливаться и возобновляться позже без ущерба для важных организационных процессов. Примерами прерываний являются приложения пакетной обработки, аналитика данных и рабочие нагрузки, которые создают агент непрерывной интеграции и агента непрерывного развертывания для непроизводной среды. Эти функции сравниваются с обычными или критически важными рабочими нагрузками, которые имеют соглашения об уровне обслуживания, липкие сеансы и данные с отслеживанием состояния.
Вы можете использовать точечные виртуальные машины в не прерываемых рабочих нагрузках, но они не должны быть единственным источником вычислительной емкости. Используйте столько обычных виртуальных машин, сколько вам нужно для удовлетворения требований к времени простоя.
Общие сведения о вытеснениях
Точечные виртуальные машины не имеют соглашения об уровне обслуживания после создания, и они могут потерять доступ к вычислительным ресурсам в любое время. Мы называем эту потерю вычислений вытеснения. Вытеснения вычислительных ресурсов и дисков спроса. Когда спрос на определенный размер виртуальной машины превышает определенный уровень, Azure вытеснает виртуальные машины, чтобы сделать вычислительные ресурсы доступными для обычных виртуальных машин. Спрос зависит от конкретного расположения. Например, увеличение спроса в регионе A не влияет на точечные виртуальные машины в регионе B.
Точечные виртуальные машины имеют два варианта конфигурации, влияющие на вытеснение. Эти конфигурации представляют собой тип вытеснения и политику вытеснения точечных виртуальных машин. Эти конфигурации задаются при создании точечных виртуальных машин. Тип вытеснения определяет условия вытеснения. Политика вытеснения определяет, что делает вытеснение для вашей точечных виртуальных машин.
Тип вытеснения
Изменения емкости или изменения цен приводят к вытеснениям. Способ изменения емкости и цен на точечные виртуальные машины зависит от типа вытеснения, выбранного при создании виртуальной машины. Тип вытеснения определяет условия вытеснения. Типы вытеснения являются вытеснения только емкости и цену или вытеснение емкости.
вытеснение только емкости: этот тип вытеснения активирует вытеснение, если превышение емкости вычислений больше не доступно. По умолчанию цена ограничена тарифом по мере использования. Используйте этот тип вытеснения, если вы не хотите платить больше, чем цена на виртуальную машину по мере использования.
Вытеснение цен или емкости: этот тип вытеснения имеет два триггера. Azure вытесняет точечные виртуальные машины, если превышение пропускной способности вычислительных ресурсов больше недоступно или стоимость виртуальной машины превышает заданную вами максимальную цену. Этот тип вытеснения позволяет установить максимальную цену ниже цены по мере использования. Используйте этот тип вытеснения, чтобы задать собственную ценовую крышку.
Политика вытеснения
Политика вытеснения, выбранная для точечных виртуальных машин, влияет на его оркестрацию. Оркестрация — это процесс обработки вытеснения и рассматривается далее в этой статье. Политики вытеснения — это политика остановки и удаления и политика удаления .
Политика остановки и освобождения: политика stop/Deallocate идеально подходит, если рабочая нагрузка может ожидать емкости выпуска в том же расположении и типе виртуальной машины. Политика stop/Deallocate останавливает виртуальную машину и заканчивает аренду базовым оборудованием. Остановка и освобождение точечных виртуальных машин совпадает с остановкой и освобождением обычной виртуальной машины. Виртуальная машина остается доступной в Azure, и вы можете перезапустить ту же виртуальную машину позже. Виртуальная машина теряет вычислительные ресурсы и нестатические IP-адреса с политикой Stop/Deallocate. Однако диски данных виртуальной машины остаются и продолжают взимать плату. Виртуальная машина также занимает ядра в подписке. Виртуальные машины нельзя перемещать из региона или зоны, даже если они остановлены или освобождены. Дополнительные сведения см. в разделе состояния Power ивыставления счетов.
Удалить политику: Использовать политику удаления, если рабочая нагрузка может изменить расположение или размер виртуальной машины. Изменение расположения или размера виртуальной машины позволяет виртуальной машине быстрее развертываться. Политика удаления удаляет виртуальную машину и любой диск данных. Виртуальная машина не занимает ядра в подписках. Дополнительные сведения см. в политики вытеснения.
Проектирование гибкой оркестрации
Оркестрация — это процесс замены точечных виртуальных машин после вытеснения. Это основа для создания надежно прерываемой рабочей нагрузки. Хорошая система оркестрации имеет встроенную гибкость. Гибкость означает, что у оркестрации есть варианты, использование нескольких размеров виртуальных машин, развертывание в разных регионах, повышение осведомленности о вытеснения и учет различных сценариев вытеснения для повышения надежности и скорости рабочей нагрузки.
Проектирование для скорости
Для рабочей нагрузки, работающей на точечных виртуальных машинах, вычислительные ресурсы имеют решающее значение. Из-за возможности вытеснения убедитесь, что вы понимаете выделенное вычислительное время, чтобы вы могли принимать обоснованные решения по проектированию, определяющие скорость рабочей нагрузки. Как правило, следует оптимизировать время вычислений, которое у вас есть. Создайте образ виртуальной машины с предварительно установленным программным обеспечением. Предварительно установленное программное обеспечение помогает свести к минимуму время между вытеснениями и полностью операционным приложением. Избегайте использования вычислительного времени в процессах, которые не способствуют назначению рабочей нагрузки. Например, рабочая нагрузка для аналитики данных должна сосредоточить большую часть времени вычислений на обработке данных и как можно меньше времени на сбор метаданных вытеснения. Исключите из приложения никакие непредвиденные процессы.
Использование нескольких размеров и расположений виртуальных машин
Чтобы повысить гибкость, создайте оркестрацию для использования нескольких типов и размеров виртуальных машин. Цель — предоставить варианты оркестрации для замены вытеснённой виртуальной машины. Azure имеет разные типы и размеры виртуальных машин, которые предоставляют аналогичные возможности для примерно той же цены. Отфильтруйте минимальные виртуальные ЦП или ядра, минимальную ОЗУ для виртуальных машин и максимальную цену. Этот процесс помогает найти несколько виртуальных машин, которые соответствуют бюджету и имеют достаточно мощности для выполнения рабочей нагрузки.
Каждый тип виртуальной машины имеет частоту вытеснения, выраженную как процентный диапазон, например 0%–5%, 5%–10%, 10%–15%, 15%–20%или 20+%. Ставки вытеснения могут различаться в разных регионах. Вы можете найти более высокую скорость вытеснения для одного типа виртуальной машины в другом регионе. Вы можете найти тарифы вытеснения для каждого типа виртуальной машины на портале на вкладке Основные сведения. Рядом с Размервыберите Просмотреть журнал цен или Просмотреть все размеры. Вы также можете программно получить данные о точечных виртуальных машинах с помощью Azure Resource Graph.
В системе оркестрации рекомендуется использовать функцию оценки размещения мест, чтобы оценить вероятность успешного выполнения отдельных развертываний.
Дополнительные сведения см. в следующих ресурсах:
- тарифы на вытеснение
- графа ресурсов
- оценка размещения месте
Использование самой гибкой политики вытеснения
Политика вытеснения вытеснения вытеснила точечных виртуальных машин влияет на процесс замены. Например, политика удаления является более гибкой, чем политика Stop/Deallocate.
Сначала рассмотрим политику удаления: использовать политику удаления, если рабочая нагрузка может обработать ее. Удаление позволяет оркестрации развертывать точечные виртуальные машины замены в новых зонах и регионах. Эта гибкость развертывания может помочь рабочей нагрузке найти резервную емкость вычислительных ресурсов быстрее, чем остановленная или освобожденная виртуальная машина. Остановленные или освобожденные виртуальные машины должны ожидать свободного вычислительного потенциала в той же зоне, в которую они были созданы. Для политики удаления требуется внешний процесс для отслеживания вытеснений и оркестрации развертываний в разных регионах, использования разных номеров SKU виртуальных машин или обоих.
Понять политику stop/Deallocate: политика Stop/Deallocate имеет меньше гибкости, чем политика delete. Точечные виртуальные машины должны оставаться в одном регионе и зоне. Вы не можете переместить остановленную или освобожденную виртуальную машину в другое расположение. Так как виртуальные машины имеют фиксированное расположение, вам потребуется что-то, чтобы перераспределить виртуальную машину, когда вычислительные ресурсы становятся доступными. Нет способа предсказать доступность вычислительной емкости. Поэтому вы должны использовать автоматизированный конвейер расписания для попытки повторного развертывания после вытеснения. Вытеснение должно активировать конвейер расписания, а попытки повторного развертывания должны постоянно проверять вычислительные мощности, пока она не станет доступной.
Политика | Когда следует использовать политику |
---|---|
Удаление политики | — Эфемерные вычисления и данные — Не требуется платить за диски данных - Минимальный бюджет |
Политика stop/Deallocate | — требуется определенный размер виртуальной машины — Не удается изменить расположение — длительный процесс установки приложения — неопределенное время ожидания - Не обусловлено экономией затрат только |
Непрерывный мониторинг для вытеснения
Мониторинг — это ключ к надежности рабочей нагрузки на точечных виртуальных машинах. Точечные виртуальные машины не имеют соглашение об уровне обслуживания после создания и могут быть вытесны в любое время. Лучший способ повысить надежность рабочей нагрузки на точечных виртуальных машинах — предвидеть, когда они будут вытеснированы. Если у вас есть эти сведения, вы можете попытаться завершить работу рабочей нагрузки и активировать автоматизацию для оркестрации замены.
использовать запланированные события: использовать службу запланированных событий для каждой виртуальной машины. Azure отправляет сигналы виртуальным машинам, когда обслуживание инфраструктуры повлияет на них. Вытеснения считаются обслуживанием инфраструктуры. Azure отправляет сигнал
Preempt
всем виртуальным машинам не менее 30 секунд до их вытеснения. Служба запланированных событий позволяет записывать этот сигналPreempt
путем запроса конечной точки на статическом, неизменяемом IP-адресе169.254.169.254
.использовать частые запросы: запрашивать конечную точку запланированных событий достаточно часто для оркестрации корректного завершения работы. Вы можете запрашивать конечную точку запланированных событий до каждой секунды, но для всех вариантов использования может потребоваться одна секунда. Эти запросы должны поступать из приложения, которое выполняется на точечных виртуальных машинах. Запрос не может поступать из внешнего источника. В результате запросы используют вычислительные мощности виртуальной машины и украсть мощность обработки из основной рабочей нагрузки. Для удовлетворения конкретной ситуации необходимо сбалансировать эти конкурирующие приоритеты.
Автоматизация оркестрации: После сбора сигнала
Preempt
оркестрация должна действовать по такому сигналу. Учитывая ограничения времени, сигналPreempt
должен попытаться выполнить правильное завершение работы рабочей нагрузки и запустить автоматизированный процесс, заменяющий точечный виртуальную машину. Дополнительные сведения см. в следующих ресурсах:- запланированных событий
- запланированных типов событий
- частота запросов конечной точки
- запланированных событий
Создание системы развертывания
Оркестрация требует автоматического конвейера для развертывания новых точечных виртуальных машин после вытеснения. Конвейер должен выполняться вне прерываемой рабочей нагрузки, чтобы обеспечить непрерывность. Конвейер развертывания должен работать в соответствии с политикой вытеснения, выбранной для точечных виртуальных машин.
Для политики удаления рекомендуется создать конвейер, использующий разные размеры виртуальных машин и развертывающийся в разных регионах. Для политики Stop/Deallocate конвейер развертывания должен выполнять два отдельных действия. Для первоначального создания виртуальной машины конвейер должен развернуть нужные виртуальные машины размера в нужном расположении. Для вытеснения виртуальной машины конвейер должен попытаться перезапустить виртуальную машину, пока она не будет работать. Сочетание оповещений Azure Monitor и функций Azure — один из способов автоматизации системы развертывания. Конвейер может использовать шаблоны bicep. Они декларативны и идемпотентны и представляют собой рекомендации по развертыванию инфраструктуры.
Подготовка к немедленному вытеснениям
Azure может вытеснить точечные виртуальные машины сразу после его создания и до запуска рабочей нагрузки. В некоторых случаях может быть достаточно емкости для создания точечных виртуальных машин, но она не будет длиться. Точечные виртуальные машины не имеют гарантий доступности или соглашения об уровне обслуживания после создания. Оркестрация должна учитывать немедленные вытеснения. Сигнал Preempt
предоставляет как минимум 30-секундное уведомление о вытеснения.
Включите проверки работоспособности виртуальной машины в оркестрацию, чтобы подготовиться к немедленному вытеснениям. Оркестрация для немедленного вытеснения не может зависеть от сигнала запланированных событий Preempt
. Только сама виртуальная машина может запрашивать сигнал Preempt
, и недостаточно времени для запуска приложения, запроса конечной точки запланированных событий и корректного завершения работы. Поэтому проверка работоспособности должна находиться вне среды рабочей нагрузки. Проверки работоспособности должны отслеживать состояние точечных виртуальных машин и запускать конвейер развертывания, чтобы заменить точечный виртуальную машину при изменении состояния на освобождении или остановке.
Планирование нескольких одновременных вытеснений
Если вы запускаете кластер точечных виртуальных машин, создайте рабочую нагрузку, чтобы выдержать несколько одновременных вытеснений. Одновременно можно вытеснить несколько точечных виртуальных машин в рабочей нагрузке. Одновременное вытеснение нескольких виртуальных машин может повлиять на пропускную способность приложения. Чтобы предотвратить эту ситуацию, конвейер развертывания должен иметь возможность собирать сигналы из нескольких виртуальных машин и развертывать несколько виртуальных машин замены одновременно.
Проектирование для корректного завершения работы
Процесс завершения работы виртуальной машины должен составлять менее 30 секунд и позволить виртуальной машине завершить работу до вытеснения. Время завершения работы зависит от частоты запросов рабочей нагрузки к конечной точке запланированных событий. Чем чаще запрашивать конечную точку, тем больше времени может занять процесс завершения работы. Процесс завершения работы должен освободить ресурсы, подключения к утечке и журналы событий очистки. Необходимо регулярно создавать и сохранять контрольные точки, чтобы сохранить контекст и создать более эффективную стратегию восстановления. Контрольная точка — это просто информация о том, какие процессы или транзакции необходимо запустить на следующей виртуальной машине. Они должны указать, должна ли виртуальная машина возобновить работу, где предыдущая виртуальная машина ушла, или если новая виртуальная машина должна вернуть изменения и запустить весь процесс снова. Сохраните контрольные точки за пределами точечных виртуальных машин, например в учетной записи хранения.
Тестирование оркестрации
Имитация событий вытеснения для тестирования оркестрации в средах разработки и тестирования. Дополнительные сведения см. в разделе Имитация вытеснения.
Проектирование идемпотентной рабочей нагрузки
Рекомендуется разработать идемпотентную рабочую нагрузку. Результат обработки события должен совпадать с результатом обработки события один раз. Вытеснения могут привести к принудительному завершению работы, несмотря на усилия по обеспечению корректного завершения работы. Принудительное завершение работы может завершить процессы до завершения. Идемпотентные рабочие нагрузки могут получать одно и то же сообщение несколько раз, не изменяя результат. Дополнительные сведения см. в разделе Idempotency.
Использование периода прогрева приложения
Большинство прерванных рабочих нагрузок запускают приложения. Приложениям требуется время для установки и запуска. Кроме того, им нужно время для подключения к внешнему хранилищу и сбора информации из контрольных точек. У вас есть период прогрева приложения, прежде чем разрешить его начать обработку. В течение периода прогрева приложение должно запускаться, устанавливать подключения и готовиться к работе. Только разрешите приложению начать обработку данных после проверки работоспособности приложения.
Настройка управляемых удостоверений, назначаемых пользователем
Назначьте управляемые удостоверения, назначаемые пользователем, чтобы упростить процесс проверки подлинности и авторизации. Назначаемые пользователем управляемые удостоверения позволяют избежать размещения учетных данных в коде и не привязаны к одному ресурсу, например управляемым удостоверениям, назначаемым системой. Управляемые удостоверения, назначаемые пользователем, содержат разрешения и маркеры доступа из идентификатора Microsoft Entra, которые можно повторно использовать и назначать для точечных виртуальных машин во время оркестрации. Согласованность маркеров между точечными виртуальными машинами помогает упростить оркестрацию и упрощает доступ к ресурсам рабочей нагрузки, имеющимся на точечных виртуальных машинах.
При использовании управляемых удостоверений, назначаемых системой, новая точечные виртуальная машина может получить другой маркер доступа от идентификатора Microsoft Entra. Если необходимо использовать управляемые удостоверения, назначаемые системой, сделайте рабочие нагрузки устойчивыми к 403 Forbidden Error
ответам. Оркестрация должна получить маркеры из идентификатора Microsoft Entra с правильными разрешениями. Дополнительные сведения см. в управляемых удостоверений.
Пример сценария
В примере сценария развертывается приложение обработки очередей, которое квалифицируется как прерванная рабочая нагрузка. Скрипты в сценарии служат примерами. Сценарий поможет вам выполнить однократную отправку вручную для развертывания ресурсов. Эта реализация не имеет конвейера развертывания. Однако конвейер развертывания необходим для автоматизации процесса оркестрации. На следующей схеме показана архитектура примера сценария.
Скачать файл Visio этой архитектуры.
Следующий рабочий процесс соответствует предыдущей схеме:
определение приложения виртуальной машины: Определение приложения виртуальной машины создается в коллекции вычислений Azure. Он определяет имя приложения, расположение, операционную систему и метаданные. Версия приложения — это нумерованная версия определения приложения виртуальной машины. Версия приложения представляет приложение виртуальной машины. Он должен находиться в том же регионе, что и точечные виртуальные машины. Версия приложения ссылается на пакет исходного приложения в учетной записи хранения.
учетная запись хранения: учетная запись хранения хранит пакет исходного приложения. В этой архитектуре это сжатый tar-файл с именем
worker-0.1.0.tar.gz
. Он содержит два файла. Один из файлов — это скриптorchestrate.sh
bash, который устанавливает рабочую роль .NET.точечные виртуальные машины: развертывается точечный виртуальный машина. Он должен находиться в том же регионе, что и версия приложения. Он загружает
worker-0.1.0.tar.gz
на виртуальную машину после развертывания. Шаблон bicep развертывает образ Ubuntu на стандартной семейной виртуальной машине. Эти конфигурации соответствуют потребностям этого приложения и не являются общими рекомендациями для приложений.очередь хранилища : другая служба, которая выполняется в рабочей роли .NET, содержит логику очереди сообщений. Идентификатор Microsoft Entra предоставляет точечный доступ виртуальной машины к очереди хранилища в хранилище очередей Azure с удостоверением, назначаемым пользователем, с помощью управления доступом на основе ролей.
рабочем приложении .NET: скрипт
orchestrate.sh
устанавливает рабочую программу .NET, которая выполняет две фоновые службы. Первая служба запрашивает конечную точку запланированных событий, ищет сигналPreempt
и отправляет этот сигнал второй службе. Вторая служба обрабатывает сообщения из очереди хранилища и прослушивает сигналPreempt
от первой службы. Когда вторая служба получает сигнал, она прерывает обработку очередей хранилища и начинает завершать работу.Конечная точка запланированных событий запроса : запрос API отправляется в статический неуправляемый IP-адрес
169.254.169.254
. Запрос API запрашивает конечную точку запланированных событий для сигналов обслуживания инфраструктуры.Application Insights: архитектура использует Application Insights только для целей обучения. Это не важный компонент оркестрации прерываний рабочей нагрузки, но позволяет проверить данные телеметрии из рабочего приложения .NET. Рабочий приложение .NET отправляет данные телеметрии в Application Insights. Дополнительные сведения см. в разделе Включение динамических метрик изприложения .NET.
Развертывание этого сценария
Есть репозиторий GitHub с именем прерываемой рабочей нагрузки на месте с шаблонами, скриптами и пошаговые инструкции по развертыванию этой архитектуры.