Автомасштабирование MS Azure — не распознает цель для реактивных правил

Я пытаюсь настроить решение для автомасштабирования для своих приложений Azure. Я заставил его реагировать на ограниченияRules, но просто не могу заставить его реагировать на reactiveRules.

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

<TraceSource>Autoscaling General</TraceSource>
<Object>Rule match.
[BEGIN DATA]
{"EvaluationId":"67281173-085f-49a1-95f8-0b9c50a4de7d",
 "MatchingRules":
    [{"RuleName":"Default constraints for all roles",
      "RuleDescription":"SLA rule",
      "Targets":["JobsRole","RESTAPI","Web"]},
     {"RuleName":"scaleWebApi",
      "RuleDescription":"Scale up when cpu average over 5%",
      "Targets":[]},
     {"RuleName":"scaledownWebApi",
      "RuleDescription":"Scale down when cpu avg under 5%",
      "Targets":[]}]}
</Object>

Где реактивные правила определяются как:

<reactiveRules>
  <rule name="scaleWebApi"
      description="Scale up when cpu average over 5%" rank="2" enabled="true">
    <when>
       <any>
          <greater operand="RESTAPI_CPU_Avg" than="5" />
       </any>
    </when>
    <actions>
        <scale target="RESTAPI" by="1" />
    </actions>
  </rule>
  <rule name="scaledownWebApi" rank="2" enabled="true"
       description="Scale down when cpu avg under 5%">
    <when>
      <all>
        <lessOrEqual operand="RESTAPI_CPU_Avg" than="5" />
      </all>
    </when>
    <actions>
      <scale target="RESTAPI" by="-1" />
    </actions>
  </rule>
</reactiveRules>

Мои ограниченияПравила - они ДЕЙСТВИТЕЛЬНО работают

<constraintRules>
  <rule name="Default constraints for all roles"
       description="SLA rule" enabled="true" rank="0">
    <actions>
      <range target="JobsRole" min="1" max="5" />
      <range target="RESTAPI" min="1" max="5" />
      <range target="Web" min="1" max="5" />
    </actions>
  </rule>
</constraintRules>

и мой файл конфигурации службы (только часть ролей)

<services>
  <service dnsPrefix="<dns>" slot="Production" scalingMode="Scale">
    <roles>
      <role alias="JobsRole" roleName="JobsRole" wadStorageAccountName="<mystore>" />
      <role alias="RESTAPI" roleName="RESTAPI" wadStorageAccountName="<mystore>" />
    </roles>
  </service>
  <service dnsPrefix="<dns>" slot="Production" scalingMode="Scale">
    <roles>
      <role alias="Web" roleName="Web" wadStorageAccountName="<mystore>" />
    </roles>
  </service>
</services>

В чем может быть проблема и как я могу попытаться разобраться в этом?


person Roman    schedule 02.05.2012    source источник
comment
Где хранятся ваши точки данных? Эмулятор хранилища или реальный сервис хранения?   -  person ThomasWeiss    schedule 03.05.2012
comment
Все реальное хранилище. На эмуляторе ничего не работает.   -  person Roman    schedule 04.05.2012


Ответы (3)


Я не могу найти ничего плохого в вашей конфигурации. Но, пожалуйста, убедитесь, что имя цели указано правильно. Это должно быть имя роли. Я хотел бы предложить вам проверить http://msdn.microsoft.com/en-us/library/hh680945(v=PandP.50).aspx, чтобы узнать, поможет ли это.

С уважением,

Мин Сюй.

person Ming Xu - MSFT    schedule 03.05.2012
comment
Я проверял все это десятки раз... все в порядке. Кроме того, в моих ограничениях используются точно такие же имена, и это действительно работает. (остальную часть конфига я добавил в свой вопрос - может поможет) - person Roman; 03.05.2012

похоже, это проблема с хранилищем служебной информации (при условии, что операнды настроены правильно, но вы не скопировали их в вопросе).

В каждой из определяемых вами ролей необходимо задать для wadStorageAccountName «понятное» имя, а не фактическую строку подключения. Затем в том же XML-файле вы определяете, куда действительно указывает эта учетная запись хранения:

  <services>
    <service dnsPrefix="<dns>" slot="Production" scalingMode="Scale">
      <roles>
        <role alias="JobsRole" roleName="JobsRole" wadStorageAccountName="MyStorageFriendlyName" />
        <role alias="RESTAPI" roleName="RESTAPI" wadStorageAccountName="MyStorageFriendlyName" />
      </roles>
    </service>
    <service dnsPrefix="<dns>" slot="Production" scalingMode="Scale">
      <roles>
            <role alias="Web" roleName="Web" wadStorageAccountName="MyStorageFriendlyName" />
      </roles>
    </service>
  </services>
  <storageAccounts>
    <storageAccount alias="MyStorageFriendlyName" connectionString="DefaultEndpointsProtocol=https;AccountName=<accountName>;AccountKey=<accountKey>">
    </storageAccount>
  </storageAccounts>

Также обратите внимание, что эта учетная запись должна быть той, в которую целевое приложение (в данном случае роль RESTAPI) загружает свои счетчики производительности (часто), иначе оно не найдет никаких данных для агрегирования и сохранения их в виде точек данных.

Кроме того, убедитесь, что ваши операнды определяют агрегирование с временным окном НЕ МЕНЕЕ 10 минут, в противном случае из-за асинхронного характера всех этих процессов (загрузка данных счетчика производительности с одной стороны, затем агрегирование данных и генерация данных). баллы, а затем оценка правил в отдельном процессе), то при оценке правил вы можете не получить свежие данные новее 5 минут (поэтому не менее 10 — хорошее число).

Я надеюсь, что все это поможет прояснить, что происходит в васаби. Спасибо

person Julian Dominguez    schedule 04.05.2012
comment
Спасибо за серьезный ответ. Я все еще раз проверил - я использовал учетные записи хранения, как вы предлагаете - так что, вероятно, это не тот. - person Roman; 05.05.2012
comment
Но что я заметил, так это то, что я не настроил свой RESTAPI для отправки какой-либо производительности в этот магазин - так может быть это так? Не могли бы вы направить меня за информацией о настройке счетчиков производительности? - person Roman; 05.05.2012
comment
Это верно, вы должны настроить целевую роль для загрузки данных счетчика производительности. Вот как: msdn.microsoft.com/en -us/library/hh680886(v=pandp.50).aspx - person Julian Dominguez; 06.06.2013

Я мало что знаю о WASABi, но я хотел бы предложить SaaS-сервис AzureOps для управления и автоматического масштабирования — AzureOps от Opstera, который сделает это за вас с помощью простого и интуитивно понятного пользовательского интерфейса. Никакой дополнительной инфраструктуры или кодирования. Ознакомьтесь с нами здесь AzureOps

Спасибо
поддержка Opstera

person Opstera Support    schedule 02.05.2012
comment
Спасибо, но мое решение уже готово - только этот маленький последний шаг :) - person Roman; 02.05.2012