《Windows Azure Platform 系列文章目錄》
注意:本文介紹的是Global Azure (http://www.windowsazure.com),如果你使用的是由世紀互聯運維的Azure China,請參考下面的連接。
Azure China (8) 使用Azure PowerShell創建虛擬機,並設置固定Virtual IP Address和Private IP
熟悉Azure Virtual Network的讀者都知道,如果我們設置了Azure Virtual Network (VNet)的IP Rang是xxx.xxx.0.0 - xxx.xxx.0.255
那第一個加入VNet的虛擬機Private IP為0.4(0.0到0.3的IP地址被系統占用),第二個加入VNet的虛擬機Private IP為0.5,以后加入VNet的虛擬機Private IP地址為在已創建的Azure Private IP上加1。
但是這樣會產生3個問題:
1.不能手動設置Private IP地址,Private IP是系統自動生成的,無法預先設置。
2.無法修改Private IP地址。在系統自動分配Private IP之后,想手動修改Private IP也是不可能的。
3.無法固定Private IP地址。在某些情況下,Azure管理人員關閉了VM,造成VM的狀態為Stop(Deallocate)的情況下,再次啟動Azure VM會造成Private IP改變。
最新的PowerShell (版本號: PowerShell cmdlets for Windows Azure Version 0.7.3)命令增加了新的PowerShell命令,允許用戶設置Azure VM Private IP。這4個命令是:
- Get-AzureStaticVNetIP
- Set-AzureStaticVNetIP
- Remove-AzureStaticVNetIP
- Test-AzureStaticVNetIP
接下來,筆者會詳細介紹以上的PowerShell命令。
在開始演示之前,請按照[New Portal]Windows Azure Virtual Machine (16) 使用Azure PowerShell創建Azure Virtual Machine中的內容,通過PowerShell將本地證書上傳至Azure雲端。
在上一章內容中,筆者已經創建Azure Virtual Network:MyVNet。同時創建了2台Azure VM,分別為:
IP | 說明 |
192.168.0.0-192.168.0.3 | Azure Virtual Network 保留 |
192.168.0.4 | AD Server |
192.168.0.5 | Web Server 001 |
在這里,筆者將介紹如何創建第2台Web服務器,即Web Server 002進行負載均衡,並且觀察Web Server 002的Private IP設置。
1.確認某個Private IP是否可用
我們要用到的命令是Test-AzureStaticVNetIP:
Test-AzureStaticVNetIP –VNetName <VNetName> –IPAddress <Address>
比如我要查詢MyVNet這個虛擬網絡中,Private IP為192.168.0.4是否可用,PowerShell命令為:
Test-AzureStaticVNetIP –VNetName MyVNet –IPAddress 192.168.0.4
執行結果為:
可以看到IsAvailable值為False(因為192.168.0.4已經被AD Server占用了)。
然后Azure會在AvailableAddresses中,提供其他可用的IP地址,比如192.168.0.6,192.168.0.7等等
2.創建新的虛擬機,同時設置Private IP
我們用到的命令是Set-AzureStaticVNetIP
Set-AzureStaticVNetIP -IPAddress <YourIPAddress>
來創建個更加復雜的Azure Virtual Machine
首先我們指定默認的存儲,在Powershell輸入以下命令:
Set-AzureSubscription -SubscriptionName 'Windows Azure MSDN - Visual Studio Ultimate' -CurrentStorageAccount 'leivms'
按照以下規格創建虛擬機:
- DNS Name為LeiWeb (需要負載均衡)
- 顯示名稱為LeiWeb002
- VM Size為Basic_A1 (1Core/1.75GB)
- VM Image為Windows Server 2012 DataCenter 201403.01-en.us
- Windows用戶名為leizhang,密碼為Pass@word1
- storage account為leivms
- 地緣組為EastAsiaGroup
- 虛擬網絡為 MyVNet,子網為Subnet-1
- Private IP設置為192.168.0.7
然后我們輸入以下命令:
$vm = New-AzureVMConfig -Name 'LeiWeb002' -InstanceSize Basic_A1 -ImageName (Get-AzureVMImage)[52].ImageName $vm | Add-AzureProvisioningConfig ` -Windows ` -AdminUsername 'leizhang' ` -Password 'Pass@word1' $vm | Set-AzureSubnet -SubnetNames 'Subnet-1' | Set-AzureStaticVNetIP -IPAddress 192.168.0.7 $vm | New-AzureVM -ServiceName 'LeiWeb' -VNetName 'MyVNet'
執行結果,如下圖:
我們也可以在Management Portal上查看到Azure正在開始創建LeiWeb002這台虛擬機,截圖下圖:
執行完畢后,我們可以查看到虛擬機LeiWeb002的Private IP設置為 192.168.0.7。如下圖:
另外告訴各位讀者一個特大喜訊:如果你在VNet中的Virtual Machine已經通過Set-AzureStaticVNetIP命令,設置了Private IP。
即使你的VM關機后狀態變成Stop_Deallocate,重新開機后這台VM的Private IP還是不會改變的。 O YEAH!!!
3.修改Private IP
這里用到的命令為Set-AzureStaticVNetIP
Set-AzureStaticVNetIP -IPAddress <NewIPAddress>
之前筆者創建的LeiWeb002的Private IP為192.168.0.7,如果需要重新設置怎么辦?
LeiWeb002這台虛擬機的信息如下:
- DNS: LeiWeb.cloudapp.net
- Virtual Machine: LeiWeb002
- 設置新的Private IP : 192.168.0.6
然后執行以下PowerShell命令:
Get-AzureVM -ServiceName LeiWeb -Name LeiWeb002 | Set-AzureStaticVNetIP -IPAddress 192.168.0.6 | Update-AzureVM
執行結果截圖如下:
我們可以通過Management Portal查看LeiWeb002這台虛擬機的Private IP已經被修改為192.168.0.6
最后我們回顧一下配置的虛擬機信息:
IP | 說明 |
192.168.0.0-192.168.0.3 | Azure Virtual Network 保留 |
192.168.0.4 | AD Server |
192.168.0.5 | Web Server 001 |
192.168.0.6 | Web Server 002 |