2012-11-28 32 views
3

我想基於蔚藍隊列的長度自動調整我的azure輔助角色。根據所有documentation我已經看到這應該是非常簡單的,使用queueLength操作數。基於隊列長度的Azure自動調整

我已經實現了autoscaler,將其上傳到我的服務中,並向我的隊列中添加了一堆元素,但實例的數量沒有增加。

故障排除的最佳方式是什麼?我已遠程桌面化到角色,事件日誌中沒有任何內容。是否有可以檢查的自動縮放事件/錯誤日誌?

編輯: 當我在我的開發環境中運行應用程序時,我看到autscaler已成功加載ServiceInfo.xml。有一個隊列條目和一個角色條目。但是,規則似乎沒有從rules.xml文件中加載。

更多編輯: 當我從rules.xml文件中刪除了reactiverules和operands節點時,約束規則成功加載。所以問題出現在其中一個節點上。

我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> 

回答

1

在診斷提供的幫助下(謝謝@Julian Dominguez),很明顯第一次自動調節功能塊嘗試啓動服務(檢查隊列長度)時,它失敗了。這是因爲系統正在CurrentUser商店而不是LocalMachine商店中查找證書。

一旦我在配置中更改了該設置,它就開始工作。

4

芥末出版了大量的診斷信息,但你必須啓用它。在角色你在哪裏託管的自動配置器,更新的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> 

然後,如果你的角色配置上傳日誌條目的沃茲表(Windows Azure的診斷表)你會看到那裏的條目。

有關Wasabi生成的日誌條目的更多信息here

+0

感謝您的建議。我已經添加到我的配置,但它仍然不會編寫診斷(據我所知,無論如何)。任何其他想法? – Mac