Как да рестартирам екземпляри на локалния емулатор на Azure?

Работя върху решение за преход при срив на работна роля и трябва да мога да тествам и отстранявам грешки в механизма за преодоляване при срив чрез изключване или рестартиране на екземпляри, както и създаване на нови.

Как да рестартирам или изключа конкретни екземпляри на локалния емулатор на Azure? Използвам 1.7 SDK

Благодаря,


person Jonas Stawski    schedule 24.08.2012    source източник


Отговори (2)


Трябва да не се съглася с отговора на Дейвид тук. Има няколко неща, които можете да направите, за да затворите екземпляри или да създадете нови екземпляри.

Изключване/убиване на екземпляри

Когато стартирате приложението си в емулатора, той стартира 1 процес на уеб роля (WaIISHost.exe) / работна роля (WaWorkerHost.exe) на екземпляр:

въведете описание на изображението тук

Когато убиете един от тези процеси, все едно сте убили екземпляр. След като превключите обратно към емулатора, ще видите, че иконата на този конкретен екземпляр, който сте убили, е променила цвета си и регистрационните файлове ще показват, че състоянието на екземпляра е Неизвестно/Унищожено:

въведете описание на изображението тук

Когато дебъгерът е прикачен, ще видите това да се случва и екземплярът никога няма да се рестартира, което ви позволява да тествате сценарии, при които внезапно губите един или повече екземпляри. Ако дебъгерът не е прикачен, всичко това ще се случи много бързо и екземплярът ще се рестартира веднага (в Visual Studio можете да изберете да стартирате без отстраняване на грешки).

Увеличаване или намаляване на броя на инстанциите

С помощта на csrun.exe (обикновено се намира в C:\Program Files\Microsoft SDKs\Windows Azure\Emulator) можете да актуализирате конфигурацията на вашата услуга в емулатора, включително брой инстанции. Да кажем, че искам да добавя 6 инстанции към 4-те инстанции, които имам в момента.

Отварям файла ServiceConfiguration.cscfg, намиращ се в моята папка за отстраняване на грешки на вашия проект в Azure (..\Some\Path\MultipleInstancesDemo\MultipleInstancesDemo\bin\Debug) и променям броя на екземплярите на 10:

<ServiceConfiguration serviceName="MultipleInstancesDemo" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration" osFamily="1" osVersion="*" schemaVersion="2012-05.1.7">
  <Role name="MyWebRole">
    <Instances count="10" />
    <ConfigurationSettings>
      <Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="UseDevelopmentStorage=true" />
    </ConfigurationSettings>
  </Role>
</ServiceConfiguration>

След това е възможно да изпратите това към емулатора, като предоставите csrun.exe с идентификатора за разполагане и пътя до конфигурационния файл. Ще намерите идентификатора за внедряване в емулатора. В предишната екранна снимка ще видите deployment17(20), това означава, че идентификаторът на внедряване е 20. Ето как бихте извикали csrun.exe: csrun /update:20;"..\Some\Path\MultipleInstancesDemo\MultipleInstancesDemo\bin\Debug\SeviceConfiguration.cscfg"

След няколко секунди ще видите новите екземпляри в емулатора:

въведете описание на изображението тук

Забележка!: Тук също изглежда, че това работи само когато стартирате проекта без отстраняване на грешки.

person Sandrino Di Mattia    schedule 24.08.2012
comment
Страхотен отговор. Следващата версия трябва да позволява лесно щракване с десния бутон върху екземпляра и извършване на действия като рестартиране или изключване. По този начин можем да тестваме за неочаквани събития, като хардуерни повреди или корекции на актуализация. - person Jonas Stawski; 25.08.2012

Не можете да изключите конкретни екземпляри; можете само да намалите общия брой работещи екземпляри.

Ако искате да рестартирате работещ екземпляр, можете да извикате:

RoleEnvironment.RequestRecycle();
person David Makogon    schedule 24.08.2012