windows - Azure 通过 XML 文件实现的可扩展性

标签 windows azure cloud

以编程方式更改定义实例数量的 XML 文件的最佳实践解决方案是什么?我知道使用 Windows Azure API 的 csmanage.exe 可以实现这一点。 我如何衡量哪些辅助角色虚拟机正在实际工作?我也在 MSDN 社区论坛上提出了这个问题:http://social.msdn.microsoft.com/Forums/en-US/windowsazure/thread/02ae7321-11df-45a7-95d1-bfea402c5db1

最佳答案

要修改配置,您可能需要查看PowerShell Azure Cmdlets 。这确实简化了任务。例如,下面是一个 PowerShell 代码段,用于将生产中“WebRole1”的实例计数增加 1:

$cert = Get-Item cert:\CurrentUser\My\<YourCertThumbprint>
$sub = "<YourAzureSubscriptionId>"
$servicename = '<YourAzureServiceName>'
Get-HostedService $servicename -Certificate $cert -SubscriptionId $sub |
Get-Deployment -Slot Production |
Set-DeploymentConfiguration {$_.RolesConfiguration["WebRole1"].InstanceCount += 1}

现在,就实际监控系统负载和吞吐量而言:您将需要 Azure API 调用和性能计数器数据的组合。例如:您可以请求 Azure 队列中当前的消息数量:

http://yourstorageaccount.queue.core.windows.net/myqueue?comp=metadata

您还可以设置您的角色来捕获特定的性能计数器。例如:

 public override bool OnStart()
 {
    var diagObj= DiagnosticMonitor.GetDefaultInitialConfiguration();
    AddPerfCounter(diagObj,@"\Processor(*)\% Processor Time",60.0);
    AddPerfCounter(diagObj, @"\ASP.NET Applications(*)\Request Execution Time", 60.0);
    AddPerfCounter(diagObj,@"\ASP.NET Applications(*)\Requests Executing", 60.0);
    AddPerfCounter(diagObj, @"\ASP.NET Applications(*)\Requests/Sec", 60.0);

    //Set the service to transfer logs every minute to the storage account
    diagObj.PerformanceCounters.ScheduledTransferPeriod = TimeSpan.FromMinutes(1.0);

    //Start Diagnostics Monitor with the new storage account configuration
    DiagnosticMonitor.Start("DiagnosticsConnectionString",diagObj);
}

因此,此代码将一些性能计数器捕获到每个角色实例上的本地存储中,然后每分钟将这些值传输到表存储中。

现在的技巧是检索这些值,解析它们,评估它们,然后相应地调整您的角色实例。 Azure API 将允许您轻松地从表存储中提取性能计数器。然而,解析和评估需要一些时间来构建。

这让我建议您查看 Azure Dynamic Scaling Example在 MSDN 代码站点上。这是一个很棒的示例,它提供了:

  • 托管 WCF 服务的演示业务线应用
  • 一种负载生成工具,可以按照您指定的速率将消息推送到服务
  • 负载监控 Web UI
  • 可在本地运行或在 Azure 角色中运行的扩展引擎。

这是您要仔细查看的最后一项。它基于阈值,将性能计数器数据以及队列长度数据与这些阈值进行比较。根据比较,它会相应地扩大或缩小您的实例。

即使您最终不使用此引擎,您也可以看到如何从表存储中获取数据、进行处理以及如何用于驱动实例更改。

关于windows - Azure 通过 XML 文件实现的可扩展性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2700439/

相关文章:

linux - 使用 SAS EG 包含文件时如何指定本地目录?

ruby-on-rails - Bundler/eventmachine 安装问题 (Rails/Windows)

windows - NHibernate 和 Oracle 通过 Windows 身份验证连接

powershell - 在 powershell 上使用 Azure Active Directory 进行身份验证

azure - 如何为 MBrace 设置本地集群

Windows Server 上的 Azure 环境

xml - “事件查看器日志文件另存为 XML”仅保存 305 条记录

azure - 从 azure CLI 获取租户名称

azure - 使用 RavenDB 而不是 SQL Azure 时,在 Windows Azure 中存储数据是否更便宜?

android 备份服务与第三方服务提供商的集成