【问题标题】:azure management libraries virtual machine state天蓝色管理库虚拟机状态
【发布时间】:2014-10-11 17:27:20
【问题描述】:

已经使用 Azure 管理库几周了,但在获取同一云服务中多个虚拟机的状态(或状态)时遇到问题。我可以获取虚拟机列表,但找不到显示单个 vm 状态的属性。到目前为止,我只能找到父云服务的状态。

var deployment=GetAzureDeyployment("mvwVM",DeploymentSlot.Production);
            if (deployment.Roles.Count>0)
            {
                foreach (var role in deployment.Roles)
                    if (role.RoleType == VirtualMachineRoleType.PersistentVMRole.ToString())
                    {
                        Console.WriteLine(role.RoleName);
                        Console.WriteLine(role.AvailabilitySetName);
                    }

如何让单个 vm 状态与 vm 名称一起使用?

谢谢。

【问题讨论】:

  • This SO 帖子可能会有所帮助

标签: c# api azure


【解决方案1】:

这里有一些代码可以代替(我使用的是管理库的 2.0):

var deployment=GetAzureDeyployment("mvwVM",DeploymentSlot.Production);

foreach (var instance in deployment.RoleInstances)
{
   Console.WriteLine("Name: {0}, State: {1}", instance.InstanceName, instance.InstanceStatus);
}

这里的区别在于它直接进入 RoleInstances 并且状态是在实例上。这有点令人困惑,因为云服务容器可以有一个云服务(如 web 或工作角色),也可以有一个或多个虚拟机。通常云服务(网络/工作人员角色)具有“角色”,然后是一个角色中的一个或多个实例。由于云服务部署可以同时支持这两种部署,因此对象模型会有些混乱,因为它需要同时支持这两种部署。

您使用的代码仅达到角色级别。在虚拟机部署中,每个 VM 都是对象模型中的一个角色,而在 Web/工作者角色部署中不一定是这种情况。这也是为什么 RoleName 是您要查找的 VM 的名称。

我提供的代码假定我只查看此部署中的虚拟机(因为您无法在同一部署中混合和匹配 Web/工作者角色和虚拟机)并且直接进入 RoleInstances 属性。这是部署中每个单独 VM 的列表。

希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-10
    • 1970-01-01
    • 2014-03-30
    • 1970-01-01
    • 1970-01-01
    • 2017-05-14
    • 2017-12-05
    相关资源
    最近更新 更多