Создайте лазурную ВМ на моей локальной машине

Можно ли создать одну или несколько виртуальных машин Azure на моей локальной машине? Я хочу создать веб-приложение и загрузить его локально, без необходимости помещать его в облако. Я думаю о следующем сценарии: у меня есть локальная виртуальная машина, на которой запущен сервер IIS с моим веб-приложением; Я использую инструмент для генерации большой нагрузки; Мне нужно развернуть вторую виртуальную машину, содержащую те же вещи, что и первая виртуальная машина. Время простоя веб-приложения должно быть равно 0(надеюсь).

Пояснение (обновление): я хочу добиться следующего: создать веб-приложение и приложение мониторинга (ЦП, память) и развернуть их на одной виртуальной машине. На нагрузочном тесте, если виртуальная машина не может справиться с этим (например, загрузка процессора превышает 80%), я хочу программно развернуть новую виртуальную машину (с той же конфигурацией, имеющей как веб-приложение, так и приложение мониторинга), чтобы не происходило простоев,

2 ответа

Решение

В Azure есть несколько способов размещения сайтов.

  • Виртуальные машины - это просто обычные виртуальные машины. Вы можете создавать их локально и загружать их, но все зависит от вас, в том числе от того, как обрабатывать обновления. Если это то, что вам нужно сделать, то я не знаю, как вы будете обрабатывать обновления без простоя; Тем не менее, вы можете добавить несколько виртуальных машин в балансировщик нагрузки и затем обновлять их по одной за раз.
  • Похоже, что вы действительно хотите исследовать это облачные сервисы. Вы можете запускать одну или несколько виртуальных машин локально в эмуляторе, обновлять без простоев один раз в облаке, осуществлять автоматическое масштабирование (вам придется использовать инструмент или написать некоторый код).
  • В качестве альтернативы вы можете захотеть взглянуть на веб-сайты Azure, но это совершенно другая концепция, и вы не можете на самом деле тестировать нагрузку и балансировку нагрузки локально.

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

Фон

Облачные службы Azure предназначены для такого рода вещей; В действительности вы не работаете с виртуальными машинами так, как вы привыкли, вместо этого вы создаете пакет, который Azure затем развертывает на столько серверов, сколько вам нужно. После запуска вы можете вручную войти в консоль управления и увеличить или уменьшить количество активных серверов, просто переместив ползунок. Конечно, вы хотите сделать это автоматически, поэтому у вас есть несколько вариантов.

Существует API-интерфейс управления, который вы можете использовать для изменения количества серверов. Таким образом, было бы довольно просто написать немного кода, который вы раскручиваете в другом потоке из WebRole. Start, который просто сидит и контролирует ЦП на машине, а затем вызывает API управления, чтобы ускорить новый экземпляр сервера, если ваш Процессор выходит за определенный порог. Хорошо, локально вы можете только проверить, что сделан вызов API управления, вы не увидите, что новый сервер будет запущен. Но если вы возьмете бесплатную пробную версию Azure и просто попробуете ее, вы увидите, что вам действительно не нужно тестировать эту часть - она ​​просто работает.

Однако на практике автоматическое масштабирование намного больше. Вот некоторые вещи, которые вы должны рассмотреть;

  • Даже относительно бездействующие веб-серверы часто кратковременно набирают 100%, так что простого простого порога вряд ли будет достаточно; Вам нужно решить, как долго сервер должен превышать определенный порог, прежде чем раскрутить другой экземпляр сервера.
  • Что происходит, когда у вас более одного сервера? А в Azure у вас всегда должно быть как минимум два сервера для обеспечения устойчивости. Обратите внимание, что идея облачных сервисов заключается в том, чтобы иметь много небольших серверов, а не несколько больших серверов. Вы платите за ядро, а не за количество серверов.
    • Представьте, что у вас сейчас три сервера, и один по какой-то причине действительно занят, а два других простаивают. Хотите раскрутить четвертый сервер?
    • Представьте, что у вас есть два сервера, и они оба довольно заняты. Вы действительно хотите, чтобы они оба запустили новый сервер, чтобы у вас было четыре запущенных сервера?

Есть несколько способов справиться с этими проблемами. Начнем с того, что вместо того, чтобы программы мониторинга выполнялись локально на каждом сервере, вам лучше перенести этот мониторинг наружу; Azure поставляется с возможностью выгрузки метрик производительности в табличное хранилище с любым интервалом, который вы выберете. Затем вы можете запустить внешнюю программу, которая со временем будет получать данные о производительности со всех ваших текущих серверов, а затем определить общую нагрузку, прежде чем принять решение об ускорении или отключении дополнительных серверов. Теперь вы, конечно, можете разместить эту внешнюю программу мониторинга в отдельном потоке на каждой из ваших веб-ролей, чтобы обеспечить устойчивость вашего мониторинга - но ключевой момент заключается в том, что программа мониторинга не контролирует сервер, на котором она работает, она контролирует все серверы, Вам, конечно, все равно придется иметь дело с остановкой нескольких экземпляров программы мониторинга со всех запускающих и останавливающих серверов. Один из способов сделать это - поместить команды остановки / запуска в "очередь сообщений" Azure (есть несколько различных типов) и использовать встроенный "de-duper", который автоматически удалит идентичные команды, помещенные в очередь в определенное время (я просто перестал, но вы поняли).

Фактический ответ

Правда, вы хотите взглянуть на блок приложения автоматического масштабирования, который сделает большую часть этого за вас. Я полагаю, что это реальный ответ на ваш вопрос, но сначала я хотел дать немного контекста. Опять же, я узнаю, что вы спросили, как проверить это локально, но я считаю, что этот вопрос не имеет смысла в контексте Azure, и надеюсь, что приведенная выше информация поможет.

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

Другие вопросы по тегам