使用 PowerShell 创建具有静态公共 IP 地址的 VM

可以在 Azure 中创建虚拟机 (VM),然后通过使用公共 IP 地址向公共 Internet 公开这些虚拟机。 默认情况下,公共 IP 是动态的,并且在删除 VM 时,关联到它们的地址可能会更改。 若要确保 VM 始终使用同一公共 IP 地址,需要创建一个静态公共 IP。

在 VM 中实现静态公共 IP 之前,有必要了解何时可以使用静态公共 IP,以及如何使用它们。 阅读 IP 寻址概述,了解有关 Azure 中 IP 寻址的详细信息。

Note

Azure 具有用于创建和处理资源的两个不同的部署模型:Resource Manager 和经典。 本文介绍如何使用 Resource Manager 部署模型。Azure 建议对大多数新的部署使用该模型,而不是经典部署模型。

方案

本文档将指导完成使用分配给虚拟机 (VM) 的静态公共 IP 地址的部署。 在此方案中,你有一个具有自己的静态公共 IP 地址的 VM。 VM 属于名为 FrontEnd 的子网,并且在该子网中还具有一个静态专用 IP 地址 (192.168.1.101)。

需要 SSL 连接并且其中的 SSL 证书链接到 IP 地址的 Web 服务器可能需要静态 IP 地址。

图像说明

你可以按照以下步骤来部署上图中所示的环境。

先决条件:安装 Azure PowerShell 模块

若要执行本文中的步骤,需要安装和配置 Azure PowerShell 模块。 请务必完成所有指令。 安装完成后,请登录到 Azure,然后选择订阅。

Note

需要一个 Azure 帐户来完成这些步骤。 如果没有 Azure 帐户,可以注册试用帐户

启动脚本

可在 此处下载所用的完整 PowerShell 脚本。 请按以下步骤更改要在环境中使用的脚本。

根据需要用于部署的值更改以下变量的值。 以下值映射到本文中使用的方案:

# Set variables resource group
$rgName                = "IaaSStory"
$location              = "China North"

# Set variables for VNet
$vnetName              = "WTestVNet"
$vnetPrefix            = "192.168.0.0/16"
$subnetName            = "FrontEnd"
$subnetPrefix          = "192.168.1.0/24"

# Set variables for storage
$stdStorageAccountName = "iaasstorystorage"

# Set variables for VM
$vmSize                = "Standard_A1"
$diskSize              = 127
$publisher             = "MicrosoftWindowsServer"
$offer                 = "WindowsServer"
$sku                   = "2012-R2-Datacenter"
$version               = "latest"
$vmName                = "WEB1"
$osDiskName            = "osdisk"
$nicName               = "NICWEB1"
$privateIPAddress      = "192.168.1.101"
$pipName               = "PIPWEB1"
$dnsName               = "iaasstoryws1"

为 VM 创建必要的资源

在创建 VM 之前,需要可供 VM 使用的资源组、VNet、公共 IP 和 NIC。

  1. 创建新的资源组。

    New-AzureRmResourceGroup -Name $rgName -Location $location
    
  2. 创建 VNet 和子网。

    $vnet = New-AzureRmVirtualNetwork -ResourceGroupName $rgName -Name $vnetName `
        -AddressPrefix $vnetPrefix -Location $location
    
    Add-AzureRmVirtualNetworkSubnetConfig -Name $subnetName `
        -VirtualNetwork $vnet -AddressPrefix $subnetPrefix
    
    Set-AzureRmVirtualNetwork -VirtualNetwork $vnet
    
  3. 创建公共 IP 资源。

    $pip = New-AzureRmPublicIpAddress -Name $pipName -ResourceGroupName $rgName `
        -AllocationMethod Static -DomainNameLabel $dnsName -Location $location
    
  4. 使用公共 IP 为上面创建的子网中的 VM 创建网络接口 (NIC)。请注意第一个用于从 Azure 检索 VNet 的 cmdlet。该 cmdlet 是必需的,因为现有 VNet 是通过执行 Set-AzureRmVirtualNetwork 进行更改的。

    $vnet = Get-AzureRmVirtualNetwork -Name $vnetName -ResourceGroupName $rgName
    $subnet = Get-AzureRmVirtualNetworkSubnetConfig -VirtualNetwork $vnet -Name $subnetName
    $nic = New-AzureRmNetworkInterface -Name $nicName -ResourceGroupName $rgName `
        -Subnet $subnet -Location $location -PrivateIpAddress $privateIPAddress `
        -PublicIpAddress $pip
    
  5. 创建存储帐户,以托管 VM OS 驱动器。

    $stdStorageAccount = New-AzureRmStorageAccount -Name $stdStorageAccountName `
    -ResourceGroupName $rgName -Type Standard_LRS -Location $location
    

步骤 3 - 创建 VM

现在,所有必需的资源均已就绪,你可以创建新的 VM 了。

  1. 创建 VM 配置对象。

    $vmConfig = New-AzureRmVMConfig -VMName $vmName -VMSize $vmSize
    
  2. 获取 VM 本地管理员帐户的凭据。

    $cred = Get-Credential -Message "Type the name and password for the local administrator account."
    
  3. 创建 VM 配置对象。

    $vmConfig = Set-AzureRmVMOperatingSystem -VM $vmConfig -Windows -ComputerName $vmName `
        -Credential $cred -ProvisionVMAgent -EnableAutoUpdate
    
  4. 设置 VM 的操作系统映像。

    $vmConfig = Set-AzureRmVMSourceImage -VM $vmConfig -PublisherName $publisher `
        -Offer $offer -Skus $sku -Version $version
    
  5. 配置 OS 磁盘。

    $osVhdUri = $stdStorageAccount.PrimaryEndpoints.Blob.ToString() + "vhds/" + $osDiskName + ".vhd"
    $vmConfig = Set-AzureRmVMOSDisk -VM $vmConfig -Name $osDiskName -VhdUri $osVhdUri -CreateOption fromImage
    
  6. 将 NIC 添加到 VM。

    $vmConfig = Add-AzureRmVMNetworkInterface -VM $vmConfig -Id $nic.Id -Primary
    
  7. 创建 VM。

    New-AzureRmVM -VM $vmConfig -ResourceGroupName $rgName -Location $location
    
  8. 保存脚本文件。

运行脚本

进行任何必要的更改后,运行前面的脚本。 几分钟后会创建虚拟机。

在操作系统中设置 IP 地址

切勿在虚拟机的操作系统中手动分配已分配给 Azure 虚拟机的公共 IP 地址。 我们建议,除非有必要(例如,为 一个 Windows VM 分配多个 IP 地址时),否则不要以静态方式在 VM 的操作系统中分配已分配给 Azure 虚拟机的专用 IP。 如果确实需要在操作系统中手动设置该专用 IP 地址,请确保它与分配给 Azure 网络接口的专用 IP 地址是同一地址,否则可能会丢失与虚拟机的连接。 详细了解专用 IP 地址设置。

后续步骤

任何网络流量都可流入和流出本文中创建的 VM。 可以在网络安全组中定义入站和出站安全规则,以限制可以流入和流出网络接口和/或子网的流量。 若要深入了解网络安全组,请参阅网络安全组概述