MS Azure Autoscaling - не распознает цель для реактивных правил

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

Я использую диагностику для регистрации всех сообщений от автоматического масштабирования (используя блок автоматического масштабирования 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>

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

3 ответа

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

С уважением,

Мин Сюй.

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

В каждой из ролей, которые вы определяете, вам нужно установить для 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 является хорошим числом).

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

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

Спасибо
Поддержка опстеры

Другие вопросы по тегам