MS Azure Autoscaling - 无法识别被动规则的目标

时间:2012-05-02 13:23:24

标签: azure azure-worker-roles autoscaling azure-autoscaling-block

我正在尝试为我的Azure应用设置自动扩展解决方案。我已经让它对constraintRules做出反应,但却无法让它对reactiveRules做出反应。

我正在使用诊断程序记录来自Autoscaling的所有消息(使用P& P Autoscaling Block) - 所以我可以看到autoscaler看到了我的被动规则,但目标未被识别。比如这个:

<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 个答案:

答案 0 :(得分:0)

我的配置中找不到任何错误。但请确保目标名称正确无误。它应该是角色名称。我建议您查看http://msdn.microsoft.com/en-us/library/hh680945(v=PandP.50).aspx以查看是否有帮助。

最诚挚的问候,

徐明。

答案 1 :(得分:0)

它似乎是服务信息存储的问题(假设操作数已正确设置,但您没有复制问题中的那些)。

在您定义的每个角色中,您需要将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分钟的时间窗口发生,否则由于所有这些过程的异步性质发生(在一侧上传perf计数器数据,然后聚合数据和生成数据点,然后在单独的流程上评估规则),然后在评估规则时,您可能无法获得超过5分钟的新数据(这就是为什么至少10个是一个好的数字)。

我希望所有这些都有助于澄清芥末的情况。感谢

答案 2 :(得分:-1)

我对WASABi了解不多,但我想建议一个天蓝色的管理和自动扩展SaaS服务 - 来自Opstera的AzureOps,它将通过简单直观的UI为您完成。没有其他基础设施或编码。请在这里查看AzureOps

谢谢你 Opstera支持