4

Azure キューの長さに基づいて、Azure ワーカー ロールを自動スケーリングしたいと考えています。私が見たすべてのドキュメントによると、queueLength オペランドを使用すると、これは非常に簡単なはずです。

オートスケーラーを実装し、それをサービスにアップロードして、一連の要素をキューに追加しましたが、インスタンスの数が増えていません。

トラブルシューティングの最善の方法は何ですか? 役割にリモート デスクトップで接続しましたが、イベント ログに何もありません。確認できる自動スケーリング イベント/エラーのログはありますか?

編集: 開発環境でアプリを実行すると、オートスケーラーが ServiceInfo.xml を正常に読み込んだことがわかります。キュー エントリとロール エントリがあります。ただし、ルールは rules.xml ファイルからロードされていないようです。

詳細編集: rules.xml ファイルから reactrules ノードとオペランド ノードを削除すると、制約ルールが正常に読み込まれます。したがって、問題はそれらのノードの 1 つにあります。

私のserviceinfo xmlファイル:

<?xml version="1.0" encoding="utf-8"?>
<serviceModel xmlns="http://schemas.microsoft.com/practices/2011/entlib/autoscaling/serviceModel">
  <subscriptions>
<subscription name="MySubscription" subscriptionId="blah" certificateThumbprint="‎blah" certificateStoreName="My" certificateStoreLocation="CurrentUser">
      <storageAccounts>
        <storageAccount alias="targetstorage" connectionString="DefaultEndpointsProtocol=https;AccountName=blah; AccountKey="blah">
          <queues>
            <queue alias="auditqueue" queueName="auditqueue"/>
          </queues>
        </storageAccount>
      </storageAccounts>
      <services>
        <service dnsPrefix="blah" slot="Production" scalingMode="Scale">
          <roles>
            <role alias="ScalingWebRole" roleName="ScalingWebRole" wadStorageAccountName="targetstorage" />
          </roles>
        </service>
      </services>
    </subscription>
  </subscriptions>
</serviceModel>

私のルールxmlファイル:

  <constraintRules>

    <rule name="Default" enabled="true" rank="1">
      <actions>
        <range target="ScalingWebRole" min="1" max="10" />
      </actions>
    </rule>

  </constraintRules>

  <reactiveRules>

    <rule name="Scale up when queue is long" enabled="true">
      <actions>
        <scale target="ScalingWebRole" by="1" />
      </actions>
      <when>
        <greaterOrEqual operand="QueueLength_Avg" than="5" />
      </when>
    </rule>

    <rule name="Scale down when queue is short" enabled="true">
      <actions>
        <scale target="ScalingWebRole" by="-1" />
      </actions>
      <when>
        <less operand="QueueLength_Avg" than="5" />
      </when>
    </rule>

  </reactiveRules>

  <operands>
    <queueLength alias="QueueLength_Avg" aggregate="Average" queue="auditqueue" timespan="00:01:00" />
  </operands>

</rules>
4

2 に答える 2

4

Wasabi は多くの診断情報を公開しますが、有効にする必要があります。オートスケーラーをホストしているロールで、app.config を更新して以下を含めます。

  <system.diagnostics>
    <sources>
      <source name="Autoscaling General" switchValue="All">
        <listeners>
          <add name="AzureDiag" />
        </listeners>
      </source>
      <source name="Autoscaling Updates" switchValue="All">
        <listeners>
         <add name="AzureDiag" />
        </listeners>
      </source>
    </sources>
    <sharedListeners>
      <add type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
          name="AzureDiag"/>
    </sharedListeners>
    <trace>
      <listeners>
        <add type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
            name="AzureDiagnostics">
          <filter type="" />
        </add>
      </listeners>
    </trace>
  </system.diagnostics>

次に、ロールがログ エントリを WAD テーブル (Windows Azure Diagnostic テーブル) にアップロードするように構成されている場合は、そこにエントリが表示されます。

Wasabi が生成するログ エントリの詳細については、こちらをご覧ください。

于 2012-11-29T00:14:26.250 に答える
1

診断 (@Julian Dominguez に感謝) によって提供された支援により、自動スケーリング ブロックが (キューの長さを確認するために) サービスを初めてヒットしようとしたときに、失敗していたことが明らかになりました。これは、システムが LocalMachine ストアではなく CurrentUser ストアで証明書を探していたためです。

構成でその設定を変更すると、機能し始めました。

于 2012-12-03T05:22:48.143 に答える