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
Спасибо
Поддержка опстеры