Azure - события RoleEnvironement не запускаются, когда роль перезагружается или удаляется для исправления - PullRequest
3 голосов
/ 12 января 2012

Короче говоря, есть ли событие RoleEnvironment, которое я могу обработать в коде, когда любая другая роль в моем развертывании перезагружается или отключается для исправления?

У меня есть производственное приложение, которое имеет как веб-роли для веб-интерфейса, так и веб-роли, выполняющие службы WCF в качестве уровня приложения (бизнес-логика, доступ к данным и т. Д.). Веб-уровень связывается с уровнем WCF через внутреннюю конечную точку, поскольку мы не хотим показывать сервисы в данный момент времени. Таким образом, это означает, что невозможно использовать балансировщик нагрузки для вызова моего уровня обслуживания через один URL.

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

Я обрабатываю события RoleEnvironment.Changing и RoleEnvironment.Changed для настройки списка веб-ролей бэкэнда, с которыми я общаюсь, что хорошо работает при тестировании, когда я изменяю конфигурацию, чтобы увеличить или уменьшить количество экземпляров в моем развертывание. Но если я перезагружу роль через портал, это не вызовет события RoleEnvironment.

Спасибо, Rob

Ответы [ 3 ]

5 голосов
/ 13 января 2012

RoleEnvironment.Changing будет запущен "до изменения конфигурации службы " (мой акцент). В этом случае конфигурация не изменяется, ваша служба по-прежнему настроена на , чтобы иметь точно такое же количество экземпляров. AFAIK нет способа узнать, когда ваше развертывание переведено в автономный режим, и, очевидно, это случаи, когда уведомление не может быть отправлено заранее (например, аппаратный сбой). Поэтому вам нужно кодировать сбой связи, перехватить ошибку и попробовать другой экземпляр роли.

0 голосов
/ 12 января 2012

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

0 голосов
/ 12 января 2012

Я не верю, что вы можете легко перехватывать изменения RoleEnvironment из другой роли.

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

Обычно, если вы выполняете свою собственную внутреннюю балансировку нагрузки, вынужен механизм регистрации / разборки ваших экземпляров, чтобы вы могли управлять своими работниками wcf

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...