在花费数小时尝试每个相关的Azure Power Shell命令为Azure VM分配虚拟公共IP之后,我回到原点。令人惊讶的是,这样的基本功能无法在Azure中完成。
首先,我保留了一个静态IP。然后创建一个vm。然后尝试了set-azurestaticvnetip。它抱怨子网名不能为空。所以我在Azure门户中创建了一个虚拟网络并创建了一个子网。然后使用set-azuresubnet -subnetnames subnet-1。现在它抱怨虚拟网络名称不能为空。问题是序列中的所有命令都不将-vnetname作为参数。
然后我发现这个参数可以在new-azurevm中传递。所以我删除了(这是一个很好的解决方法。我很高兴我没有花时间在vm中配置软件)VM并尝试使用此命令创建。 (此命令中未指定image参数。我在提示符下输入了该参数。)
new-azurevmconfig -name myvm -instancesize Basic_A2|
add-azureprovisioningconfig -adminusername "myvmadmin" -windows -password "myvmP123"|
set-azuresubnet -subnetnames subnet-1 |
set-azurestaticvnetip -ipaddress 23.101.39.28 |
new-azurevm -servicename myvm -vnetname mynet –Location "East US" -waitforboot
引发错误 -
new-azurevm : BadRequest : The static address 23.101.39.28 doesn't belong to the address space defined by the role's subnets.
这里有什么问题?在我看来,这些说明用于为VM分配专用IP。将静态IP分配给通过Web角色创建的VM非常容易(只需将公共IP名称放在配置文件中即可)。如何为VM分配公共IP。 Microsoft文档仅表明公共IP可用于VM,但他们是否认为每个人都知道如何做到这一点?
答案 0 :(得分:3)
我认为您需要创建一个区域vnet。这对我有用:
1)获取当前的网络配置
Get-AzureVNetConfig -ExportToFile "c:\temp\MyAzNets.netcfg"
2)打开MyAzNets.netcfg并编辑/(添加?)VirtualNetworkSite。我认为这里的关键是位置,而不是Affinity Group。您保留的IP / VM必须相同。
你应该有这样的东西:
<VirtualNetworkSites>
<VirtualNetworkSite name="yourvnet" Location="West US">
<AddressSpace>
<AddressPrefix>192.168.50.0/24</AddressPrefix>
</AddressSpace>
<Subnets>
<Subnet name="yoursubnet">
<AddressPrefix>192.168.50.0/24</AddressPrefix>
</Subnet>
</Subnets>
</VirtualNetworkSite>
</VirtualNetworkSites>
3)将其发回Azure:
Set-AzureVNetConfig -ConfigurationPath "C:\temp\MyAzNets.netcfg"
4)在与您的vnet相同的位置添加/获取您的IP。
Get-AzureReservedIP / New-AzureReservedIP
5)创建你的虚拟机。
创建或移动VM时,请确保云服务不存在。要移动VM,只需点击管理门户中的捕获按钮并为其指定一个友好名称,然后删除VM和云服务。
New-AzureVMConfig -Name "my-vm01" -InstanceSize Basic_A2 -ImageName "someimage" -Label "my-vm" | Set-AzureSubnet "**yoursubnet**" | Add-AzureEndpoint -LocalPort 3389 -Name 'RDP' -Protocol tcp -PublicPort 61030 | Add-AzureEndpoint -LocalPort 80 -Name 'HTTP' -Protocol tcp -PublicPort 80 | Add-AzureEndpoint -LocalPort 443 -Name 'HTTPS' -Protocol tcp -PublicPort 443| New-AzureVM -ServiceName "my-vm" -ReservedIPName "**reservedipname**" -Location "West US" -VNetName "**yourvnet**"
6)应分配IP。如果您运行Get-AzureReservedIP,它现在应该显示如下:
ReservedIPName : reservedipname
Address : 127.0.0.1
Id : xxx
Label :
Location : West US
State : Created
InUse : True
ServiceName : my-vm
DeploymentName : my-vm
答案 1 :(得分:1)
您应该能够在创建VM后动态地将保留的IP分配给VM(或Cloud Service Web角色),而不会有任何拆除。适合我。就这样做;
New-AzureReservedIP -ReservedIPName MyReservedIP -Location&#34; East US&#34;
Set-AzureReservedIPAssociation -ReservedIPName MyReservedIP -ServiceName MyVMName
第一个命令保留IP。第二个命令将其分配给VM。分配是立即的,服务器将重新启动
答案 2 :(得分:0)
在过去两天经过多次不同选择的试验后,最终确实有效:
New-AzureVMConfig -Name "mysite" -InstanceSize Basic_A2 -Label "mysite" | Set-AzureSubnet "subnet-1" | add-azureprovisioningconfig -adminusername "myuser" -windows -password "mypwd"| Add-AzureEndpoint -LocalPort 80 -Name 'HTTP' -Protocol tcp -PublicPort 80 | Add-AzureEndpoint -LocalPort 443 -Name 'HTTPS' -Protocol tcp -PublicPort 443| New-AzureVM -ServiceName "mysite" -ReservedIPName "mysiteip" -Location "East US" -VNetName "mysite"
不知道为什么,但确实如此。我之前没有运气就试过这个。