1

我正在尝试为我的 Azure 应用程序设置自动缩放解决方案。我让它对约束规则做出反应,但不能让它对反应规则做出反应。

我正在使用诊断记录来自自动缩放的所有消息(使用 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>

可能是什么问题,我该如何尝试并理解它?

4

3 回答 3

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 分钟的时间窗口内发生,否则由于所有这些进程的异步性发生(在一侧上传性能计数器数据,然后聚合数据并生成数据点,然后在单独的过程中评估规则),然后在评估规则时,您可能不会获得超过 5 分钟的新数据(这就是为什么至少 10 是一个好数字的原因)。

我希望所有这些都有助于澄清 Wasabi 中发生的事情。谢谢

于 2012-05-04T21:01:52.363 回答
0

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

此致,

明旭。

于 2012-05-03T06:49:14.523 回答
-1

我对 WASABi 了解不多,但我想推荐一个 azure 管理和自动缩放 SaaS 服务 - Opstera 的 AzureOps,它将通过简单直观的 UI 为您完成这项工作。无需额外的基础设施或编码。请在此处查看我们AzureOps

感谢
Opstera 支持

于 2012-05-02T13:38:26.393 回答