Обработка события RoleEntryPoint.OnStart() Azure Webrole на втором веб-сайте

Во-первых, почему я это делаю:
у меня есть служба WCF, развернутая как Azure Webrole, использующая HTTPS в качестве конечной точки. Мне нужно установить для этой службы настраиваемый «зонд балансировщика нагрузки». Балансировщики нагрузки Azure не поддерживают HTTPS, поэтому я развернул второй веб-сайт с конечной точкой http, чтобы использовать его в качестве «пробы балансировщика нагрузки».

Так в чем моя проблема?!
У меня есть веб-роль с двумя веб-сайтами, такими как:

<WebRole name="WebRole1" vmsize="Medium">
 <Sites>
   <Site name="Web" physicalDirectory="roles\WebRole1">
     <Bindings>
       <Binding name="Web" endpointName="WebRoleEndpoint" />
     </Bindings>
   </Site>
   <Site name="Web2" physicalDirectory="roles\HealthProb">
     <Bindings>
       <Binding name="Web" endpointName="HealthProbEndpoint" />
     </Bindings>
   </Site>
 </Sites>
 ...

рекомендуется обрабатывать RoleEntryPoint.OnStop(), чтобы убедиться, что вы возвращаете балансировщику нагрузки правильный код состояния работоспособности (http://blog.mdavies.net/2013/04/27/custom-load-балансировка-конечныеточки-azure-web-worker-vm-role/)
моя проблема заключается в том, как я могу обработать RoleEntryPoint.OnStop() на моем втором веб-сайте. хотя на веб-сайте я могу легко сделать это, расширив и переопределив RoleEntryPoint.OnStop(), на втором веб-сайте я не могу обработать это событие.

Есть ли способ, которым я могу обработать OnStop или какое-то подобное событие на втором веб-сайте?!


person hra    schedule 14.08.2014    source источник


Ответы (1)


Любой процесс, запущенный на виртуальной машине, может подписаться на события RoleEnvironment. Просто добавьте ссылку на Microsoft.WindowsAzure.ServiceRuntime.DLL в проект веб-сайта, а затем добавьте обработчик события RoleEnvironment.Stopping.

Но вместо использования специального зонда балансировщика нагрузки я бы рекомендовал просто использовать событие RoleEnvironment.StatusCheck на вашем веб-сайте. Цель пользовательского зонда подсистемы балансировки нагрузки — позволить вам отслеживать работоспособность вашего процесса w3wp, поскольку среда выполнения Azure обычно не отслеживает этот процесс. Но если вы развертываете отдельный сайт для реализации пользовательского зонда LB, вы действительно не контролируете свой основной процесс w3wp. В этом случае вам лучше просто использовать событие StatusCheck, которое может реализовать вашу логику LB, и тогда вы получите поведение Stopping/OnStop бесплатно.

person kwill    schedule 14.08.2014