Вопрос по – Как проверить несколько экземпляров веб-роли в Windows Azure?

0

Предыстория. Я развернул приложение MVC3 на 2 экземплярах веб-роли Azure, но меня смущает вопрос о том, как можно проверить возможность сбоя одного из этих экземпляров.

Можно ли проверить, чтобы мой код веб-роли работал без перебоев, когда один из моих экземпляров переведен в автономный режим?

Могу ли я вручную остановить один из них? Или как-то настроить балансировщик нагрузки, чтобы заставить весь трафик на один из серверов?

Спасибо!

Учитывая, что веб-сервер по существу параллелен, есть небольшая разница в наличии одного экземпляра. У вас, скорее всего, возникнут проблемы, связанные с наличием более одного экземпляра, обычно потому, что у вас могут быть глобальные переменные, которые служат для координации запросов. Oliver Bock

Ваш Ответ

3   ответа
0

Стив Маркс (он же Smarx) разработал инструмент под названиемWazMonkey, Это лазурный аналог инструментаChaos Monkey разработанный командой netflix для симуляции разбитых экземпляров в Amazon AWS. WazMonkey случайным образом закрывает экземпляры облачной службы Windows Azure для проверки устойчивости облачных приложений.

0

Если вы используете событие StatusCheck, чтобы установить статус Busy, ваш экземпляр больше не будет получать запросы от loadbalancer. Возможно, вы захотите написать некоторый код для отправки сообщений вашим экземплярам, который на некоторое время установит их как занятые (например, с использованием очередей).

public override bool OnStart()
{
   RoleEnvironment.StatusCheck += RoleEnvironmentStatusCheck;

   return base.OnStart();
}

// Use the busy object to indicate that the status of the role instance must be Busy
private volatile bool busy = true;

private void RoleEnvironmentStatusCheck(object sender, RoleInstanceStatusCheckEventArgs e)
{
   If (this.busy)
   {
      // Sets the status of the role instance to Busy for a short interval.
      // If you want the role instance to remain busy, add code to 
      // continue to call the SetBusy method
      e.SetBusy();
   }
}

Ссылка:http://msdn.microsoft.com/en-us/library/microsoft.windowsazure.serviceruntime.roleenvironment.statuscheck.aspx

Кроме того, вы также можете просто перезагрузить свой экземпляр (используя портал Windows Azure или удаленный рабочий стол).

1

Если у вас есть доступ RDP к вашим экземплярам, вы можете очень легко удалить один или несколько экземпляров из LoadBalancer, даже если экземпляр работает исправно, без написания какой-либо строки кода. Вам просто нужно RDP к вашему экземпляру, а затем использовать сценарии PowerShell, чтобы снять экземпляр с loadbalancer. В моем следующем блоге я описал точную процедуру:

http://blogs.msdn.com/b/avkashchauhan/archive/2012/01/27/windows-azure-troubleshooting-taking-specific-windows-azure-instance-offline.aspx

Приведенные выше данные также помогают запустить нагрузочное тестирование, удаляя N экземпляров из общего числа M экземпляров.

Похожие вопросы