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

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

  • 列出连接信息
  • 使用 SSH 连接到单个实例

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

先决条件

  • Azure Cloud Shell中使用 Bash 环境。 有关详细信息,请参阅 Azure Cloud Shell中的 Bash 快速入门。

  • 如果您希望在本地运行 CLI 引用命令,请安装 Azure CLI。 如果在 Windows 或 macOS 上运行,请考虑在 Docker 容器中运行 Azure CLI。 有关详细信息,请参阅 如何在 Docker 容器中运行 Azure CLI。

    • 如果使用本地安装,请使用 az login 命令登录到 Azure CLI。 若要完成身份验证过程,请遵循终端中显示的步骤。 有关其他的登录方式,请参阅 使用 Azure CLI登录。

    • 出现提示时,请先安装 Azure CLI 扩展。 有关扩展的详细信息,请参阅 将扩展与 Azure CLI配合使用。

    • 运行 az version,查找已安装的版本和依赖库。 若要升级到最新版本,请输入命令 az upgrade

本文需要 Azure CLI 2.0.29 或更高版本。 如果使用 Azure Cloud Shell,则已安装最新版本。

列出规模集中的实例

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

列出虚拟机扩展集中的所有实例。

az vmss list-instances \
  --resource-group myResourceGroup \
  --name myScaleSet \
  --output table
Location    Name                 ResourceGroup
----------  -------------------  ---------------
eastus      myScaleSet_0e7d4d21  myResourceGroup
eastus      myScaleSet_39379fc3  myResourceGroup

获取 NIC 信息

使用 az vm nic list 和单个 VM 实例的名称查找 NIC 名称。

az vm nic list \
  --resource-group myResourceGroup
  --vm-name myScaleSet_0e7d4d21
[
  {
    "deleteOption": "Delete",
    "id": "/subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkInterfaces/mysca2215Nic-828c525a",
    "primary": true,
    "resourceGroup": "myResourceGroup"
  }
]

使用 VM 名称和 NIC 名称,使用 az vm nic show获取 NIC 的专用 IP 地址、入站 NAT 规则名称和负载均衡器名称。

az vm nic show --resource-group myResourceGroup --vm-name myScaleSet_0e7d4d21 --nic mysca2215Nic-828c525a
{
  "enableAcceleratedNetworking": false,
  "id": "/subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkInterfaces/mysca2215Nic-828c525a",
  "ipConfigurations": [
    {
      "id": "/subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkInterfaces/mysca2215Nic-828c525a/ipConfigurations/mysca2215IPConfig",
      "loadBalancerBackendAddressPools": [
        {
          "id": "/subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Network/loadBalancers/myScaleSetLB/backendAddressPools/myScaleSetLBBEPool",
        }
      ],
      "name": "mysca2215IPConfig",
      "primary": true,
      "privateIpAddress": "10.0.0.5",
      "privateIpAddressVersion": "IPv4",
      "privateIpAllocationMethod": "Dynamic",
      "provisioningState": "Succeeded",
      "resourceGroup": "myResourceGroup",
      "subnet": {
        "id": "/subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myScaleSetVNET/subnets/myScaleSetSubnet",
        "resourceGroup": "myResourceGroup",
      },
      "type": "Microsoft.Network/networkInterfaces/ipConfigurations",
    }
  ],
  "location": "eastus",
  "name": "mysca2215Nic-828c525a",
  "networkSecurityGroup": {
    "id": "/subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkSecurityGroups/myScaleSetNSG",
    "resourceGroup": "myResourceGroup",
  },
  "nicType": "Standard",
  "primary": true,
  "provisioningState": "Succeeded",
  "resourceGroup": "myResourceGroup",
  "tapConfigurations": [],
  "type": "Microsoft.Network/networkInterfaces",
  "virtualMachine": {
    "id": "/subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myScaleSet_0e7d4d21",
    "resourceGroup": "myResourceGroup"
  },
}

获取后端池详细信息

使用后端池名称和负载均衡器名称,获取要连接到 az network lb list-mapping实例的专用 IP 地址的端口。

az network lb list-mapping --backend-pool-name myScaleSetLBBEPool --resource-group myResourceGroup --name myScaleSetLB --request ip=10.0.0.5
{
  "inboundNatRulePortMappings": [
    {
      "backendPort": 22,
      "frontendPort": 50001,
      "inboundNatRuleName": "NatRule",
      "protocol": "Tcp"
    }
  ]
}

获取负载均衡器的公共 IP

使用 az network public-ip list获取负载均衡器的公共 IP。

az network public-ip list --resource-group myResourceGroup
[
  {
    "id": "/subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Network/publicIPAddresses/myScaleSetLBPublicIP",
    "idleTimeoutInMinutes": 4,
    "ipAddress": "20.172.211.239",
    "ipConfiguration": {
      "id": "/subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Network/loadBalancers/myScaleSetLB/frontendIPConfigurations/loadBalancerFrontEnd",
      "resourceGroup": "myResourceGroup"
    },
    "ipTags": [],
    "location": "eastus",
    "name": "myScaleSetLBPublicIP",
    "provisioningState": "Succeeded",
    "publicIPAddressVersion": "IPv4",
    "publicIPAllocationMethod": "Static",
    "resourceGroup": "myResourceGroup",
    "sku": {
      "name": "Standard",
      "tier": "Regional"
    },
    "tags": {},
    "type": "Microsoft.Network/publicIPAddresses"
  }
]

连接到实例

使用负载均衡器 IP 和要连接到的计算机的端口通过 SSH 连接到计算机。

ssh azureuser@20.172.211.239 -p 50000

后续步骤

在本教程中,您学习了如何列出扩展集中的实例并通过 SSH 连接到单个实例。

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