教程:使用 Azure PowerShell 连接到虚拟机规模集实例

虚拟机规模集允许部署和管理一组虚拟机。 在虚拟机规模集的整个生命周期中,可能需要运行一个或多个管理任务。 在本教程中,您将学习如何:

  • 列出连接信息
  • 使用远程桌面连接来连接到各个实例

如果没有 Azure 订阅,请在开始之前创建 免费帐户

Azure Cloud Shell

Azure 托管 Azure Cloud Shell,这是一个可以通过浏览器使用的交互式 shell 环境。 可以将 Bash 或 PowerShell 与 Cloud Shell 配合使用,以使用 Azure 服务。 可以使用 Cloud Shell 预安装命令运行本文中的代码,而无需在本地环境中安装任何内容。

若要启动 Azure Cloud Shell,请执行以下操作:

选择 示例/链接
选择 试用 在代码或命令块右上角。 选择 “试用” 不会自动将代码或命令复制到 Cloud Shell 中。 屏幕截图,其中显示了“试用 Azure Cloud Shell”的示例。
转到 https://shell.azure.com,或选择“启动 Cloud Shell”按钮,在浏览器中打开 Cloud Shell。 按钮启动 Azure Cloud Shell。
Azure 门户的右上角菜单栏上选择“Cloud Shell”按钮。 显示 Azure 门户中的 Cloud Shell 按钮的屏幕截图

若要使用 Azure Cloud Shell,请执行以下操作:

  1. 启动 Cloud Shell。

  2. 选择代码块(或命令块)上的 复制 按钮以复制代码或命令。

  3. 通过在 Windows 和 Linux 上选择 CtrlShiftV,或者在 macOS 上 选择 CmdShiftV,将代码或命令粘贴到 Cloud Shell 会话中。

  4. 选择 Enter 以运行代码或命令。

列出规模设置中的实例

如果尚未创建规模集,请参阅 教程:使用 Azure PowerShell 创建和管理虚拟机规模集

使用 Get-AzVM列出虚拟机规模集组中的所有实例。

Get-AzVM -ResourceGroup myResourceGroup
ResourceGroupName Name                  Location    VmSize             OsType    NIC 
----------------- ----                  --------    ------             ------    --- 
myResourceGroup   myScaleSet_Instance1   eastus     Standard_DS1_v2    Windows    myScaleSet-instance1-nic      
myResourceGroup   myScaleSet_Instance2   eastus     Standard_DS1_v2    Windows    myScaleSet-instance2-nic    

获取 NIC 信息

使用 NIC 名称,获取 NIC 的专用 IP 地址、Get-AzNetworkInterface的后端地址池名称和负载均衡器名称。

Get-AzNetworkInterface -Name myScaleSet-instance1-nic
Name                        : myScaleSet-instance1-nic
ResourceGroupName           : myResourceGroup
Location                    : eastus
Id                          : /subscriptions//resourceGroups/myResourceGroup/providers/Microsoft.Network/networkInterfaces/myScaleSet-instance1-nic
ProvisioningState           : Succeeded
Tags                        : 
VirtualMachine              : {
                                "Id": "/subscriptions//resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myScaleSet_Instance1"
                              }
IpConfigurations            : [
                                {
                                  "Name": "myScaleSet",
                              "/subscriptions//resourceGroups/myResourceGroup/providers/Microsoft.Network/networkInterfaces/myScaleSet-instance1-nic/ipConfigurations/myScaleSet",
                                  "PrivateIpAddress": "192.168.1.5",
                                  "PrivateIpAllocationMethod": "Dynamic",
                                  "Subnet": {
                                    "Id": "/subscriptions//resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myScaleSet/subnets/myScaleSet",
                                    "IpAllocations": []
                                  },
                                  "ProvisioningState": "Succeeded",
                                  "PrivateIpAddressVersion": "IPv4",
                                  "LoadBalancerBackendAddressPools": [
                                    {
                                      "Id": 
                              40.88.43.135"/subscriptions//resourceGroups/myResourceGroup/providers/Microsoft.Network/loadBalancers/myScaleSet/backendAddressPools/myScaleSet",
                                      "LoadBalancerBackendAddresses": []
                                    }
                                  ],
                                  "LoadBalancerInboundNatRules": [],
                                  "Primary": true,
                                  "ApplicationGatewayBackendAddressPools": [],
                                  "ApplicationSecurityGroups": [],
                                  "VirtualNetworkTaps": []
                                }
                              ]

获取后端池详细信息

使用后端池名称、负载均衡器名称和专用 IP 地址,通过 Get-AzLoadBalancerBackendAddressInboundNatRulePortMapping命令获取与要连接实例的专用 IP 地址关联的端口。

Get-AzLoadBalancerBackendAddressInboundNatRulePortMapping `
  -ResourceGroupName myResourceGroup `
  -LoadBalancerName myScaleSet `
  -Name myScaleSet `
  -IpAddress 192.168.1.5

如果运行上述命令并发现负载均衡器没有任何入站 NAT 规则,则可以使用 Add-AzLoadBalancerInboundNatRuleConfig添加入站 NAT 规则。 完成后,再次运行 Get-AzLoadBalancerBackendAddressInboundNatRulePortMapping

$slb = Get-AzLoadBalancer -Name "myScaleSet" -ResourceGroupName "MyResourceGroup"
$slb | Add-AzLoadBalancerInboundNatRuleConfig -Name "myNatRule" -FrontendIPConfiguration $slb.FrontendIpConfigurations[0] -Protocol "Tcp" -IdleTimeoutInMinutes 10 -FrontendPortRangeStart 50000 -FrontendPortRangeEnd 50099 -BackendAddressPool $slb.BackendAddressPools[0] -BackendPort 3389
$slb | Set-AzLoadBalancer
InboundNatRuleName : myNatRule
Protocol           : Tcp
FrontendPort       : 50001
BackendPort        : 3389

获取负载均衡器的公共 IP

使用 GetAzPublicIpAddress获取负载均衡器的公共 IP。

Get-AzPublicIpAddress -ResourceGroup myResourceGroup    
Name                     : myScaleSet
ResourceGroupName        : myResourceGroup
Location                 : eastus
Id                       : /subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Network/publicIPAddresses/myScaleSet
ProvisioningState        : Succeeded
PublicIpAllocationMethod : Static
IpAddress                : 40.88.43.135
PublicIpAddressVersion   : IPv4
IdleTimeoutInMinutes     : 4
IpConfiguration          : {
                             "Id": "/subscriptions//resourceGroups/myResourceGroup/providers/Microsoft.Network/loadBalancers/myScaleSet/frontendIPConfigurations/myScaleSet"
                           }
DnsSettings              : {
                             "DomainNameLabel": "myscaleset-Instance1",
                             "Fqdn": "myscaleset-Instance1.eastus.cloudapp.azure.com"
                           }
Zones                    : {}
Sku                      : {
                             "Name": "Standard",
                             "Tier": "Regional"
                           }

连接到实例

使用负载均衡器的公共 IP 地址和要连接到的计算机实例的端口映射,通过远程桌面连接到计算机。

Windows 计算机中远程桌面应用程序的屏幕截图。

后续步骤

本教程中,你学习了如何列出你的规模集中的实例,并通过 SSH 连接到单个实例。

  • 列出和查看规模集中的实例
  • 收集规模集中各个实例的网络信息
  • 连接到规模集中的各个 VM 实例