執行個體層級公用 IP (Classic) 概觀
執行個體層級公用 IP (ILPIP) 是您可以直接指派至 VM 或雲端服務角色執行個體的公用 IP 位址,而不是指派至 VM 或角色執行個體所在的雲端服務。 ILPIP 不會取代指派給雲端服務的虛擬 IP (VIP)。 應該說是您可以用來直接連接到 VM 或角色執行個體的其他 IP 位址。
重要
Azure 針對建立和使用資源方面,有二種不同的的部署模型:Resource Manager 和傳統。 本文涵蓋之內容包括使用傳統部署模型。 Microsoft 建議您透過 Resource Manager 建立 VM。 請確定您了解 IP 位址 在 Azure 中的運作方式。
如圖 1 所示,儘管通常是使用 VIP:<連接埠號碼> 來存取個別 VM,但還是會使用 VIP 來存取雲端服務。 將 ILPIP 指派給特定的 VM,就能直接使用該 IP 位址來存取 VM。
當您在 Azure 中建立雲端服務時,對應的 DNS A 記錄即會自動建立,以允許透過完整格式的網域名稱 (FQDN) 存取服務,而不需使用實際的 VIP。 相同程序也適用於 ILPIP,但可改為透過 FQDN 而不是 ILPIP 來允許存取 VM 或角色執行個體。 例如,若您建立名為 contosoadservice 的雲端服務,並設定名為 contosoweb 且具有兩個執行個體的 Web 角色,且 .cscfg 中的 domainNameLabel
設定為 WebPublicIP,Azure 將會為那些執行個體註冊下列 A 記錄:
- WebPublicIP.0.contosoadservice.cloudapp.net
- WebPublicIP.1.contosoadservice.cloudapp.net
- ...
注意
您只能針對每個 VM 或角色執行個體指派一個 ILPIP。 您可以針對每個訂用帳戶最多使用 5 個 ILPIP。 ILPIP 不支援多個 NIC VM。
為什麼我要要求 ILPIP?
如果想要透過直接指派 IP 位址的方式連接到 VM 或角色執行個體,而不是使用雲端服務 VIP:<連接埠號碼>,請為 VM 或角色執行個體要求 ILPIP。
- 主動式 FTP:透過將 ILPIP 指派給 VM,VM 就可以在所有的連接埠上接收流量。 VM 不需要端點就可以接收流量。 如需有關 FTP 通訊協定的詳細資料,請參閱 FTP 通訊協定概觀。
- 輸出 IP:源自 VM 的輸出流量會對應至 ILPIP,因為來源與 ILPIP 可向外部實體唯一識別 VM。
注意
ILPIP 過去被稱為公用 IP (PIP) 位址。
管理 VM 的 ILPIP
下列工作可讓您建立、指派和移除 VM 的 ILPIP:
如何在建立 VM 期間使用 PowerShell 要求 ILPIP
下列 PowerShell 指令碼會建立名為 FTPService 的雲端服務、從 Azure 擷取映像、使用擷取的映像建立名為 FTPInstance 的 VM、設定要使用 ILPIP 的 VM,以及將 VM 加入新服務:
New-AzureService -ServiceName FTPService -Location "Central US"
$image = Get-AzureVMImage|?{$_.ImageName -like "*RightImage-Windows-2012R2-x64*"}
#Set "current" storage account for the subscription. It will be used as the location of new VM disk
Set-AzureSubscription -SubscriptionName <SubName> -CurrentStorageAccountName <StorageAccountName>
#Create a new VM configuration object
New-AzureVMConfig -Name FTPInstance -InstanceSize Small -ImageName $image.ImageName `
| Add-AzureProvisioningConfig -Windows -AdminUsername adminuser -Password MyP@ssw0rd!! `
| Set-AzurePublicIP -PublicIPName ftpip | New-AzureVM -ServiceName FTPService -Location "Central US"
如果您想要指定其他儲存體帳戶作為新的 VM 磁碟位置,您可以使用 MediaLocation 參數:
New-AzureVMConfig -Name FTPInstance -InstanceSize Small -ImageName $image.ImageName `
-MediaLocation https://management.core.windows.net/<SubscriptionID>/services/storageservices/<StorageAccountName> `
| Add-AzureProvisioningConfig -Windows -AdminUsername adminuser -Password MyP@ssw0rd!! `
| Set-AzurePublicIP -PublicIPName ftpip | New-AzureVM -ServiceName FTPService -Location "Central US"
如何擷取 VM 的 ILPIP 資訊
若要檢視使用上述指令碼所建立 VM 的 ILPIP 資訊,請執行下列 PowerShell 命令,並觀察 PublicIPAddress 和 PublicIPName 的值:
Get-AzureVM -Name FTPInstance -ServiceName FTPService
預期輸出:
DeploymentName : FTPService
Name : FTPInstance
Label :
VM : Microsoft.WindowsAzure.Commands.ServiceManagement.Model.PersistentVM
InstanceStatus : ReadyRole
IpAddress : 100.74.118.91
InstanceStateDetails :
PowerState : Started
InstanceErrorCode :
InstanceFaultDomain : 0
InstanceName : FTPInstance
InstanceUpgradeDomain : 0
InstanceSize : Small
HostName : FTPInstance
AvailabilitySetName :
DNSName : http://ftpservice888.cloudapp.net/
Status : ReadyRole
GuestAgentStatus : Microsoft.WindowsAzure.Commands.ServiceManagement.Model.GuestAgentStatus
ResourceExtensionStatusList : {Microsoft.Compute.BGInfo}
PublicIPAddress : 104.43.142.188
PublicIPName : ftpip
NetworkInterfaces : {}
ServiceName : FTPService
OperationDescription : Get-AzureVM
OperationId : 568d88d2be7c98f4bbb875e4d823718e
OperationStatus : OK
如何從 VM 移除 ILPIP
若要移除在上述指令碼中加入 VM 的 ILPIP,請執行下列 PowerShell 命令:
Get-AzureVM -ServiceName FTPService -Name FTPInstance | Remove-AzurePublicIP | Update-AzureVM
如何將 ILPIP 加入現有的 VM
若要將 ILPIP 加入至使用上述指令碼建立的 VM,請執行下列命令:
Get-AzureVM -ServiceName FTPService -Name FTPInstance | Set-AzurePublicIP -PublicIPName ftpip2 | Update-AzureVM
管理雲端服務角色執行個體的 ILPIP
若要將 ILPIP 加入至雲端服務角色執行個體,請完成下列步驟:
完成如何設定雲端服務文章中的步驟,以下載雲端服務的 .cscfg 檔案。
加入
InstanceAddress
元素來更新 .cscfg 檔案。 下列範例會加入一個名稱為 MyPublicIP 的 ILPIP 到名稱為 WebRole1 的角色執行個體:<?xml version="1.0" encoding="utf-8"?> <ServiceConfiguration serviceName="ILPIPSample" xmlns="https://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration" osFamily="4" osVersion="*" schemaVersion="2014-01.2.3"> <Role name="WebRole1"> <Instances count="1" /> <ConfigurationSettings> <Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="UseDevelopmentStorage=true" /> </ConfigurationSettings> </Role> <NetworkConfiguration> <AddressAssignments> <InstanceAddress roleName="WebRole1"> <PublicIPs> <PublicIP name="MyPublicIP" domainNameLabel="WebPublicIP" /> </PublicIPs> </InstanceAddress> </AddressAssignments> </NetworkConfiguration> </ServiceConfiguration>
完成如何設定雲端服務文章中的步驟,以上傳雲端服務的 .cscfg 檔案。
如何擷取雲端服務的 ILPIP 資訊
若要檢視每個角色執行個體的 ILPIP 資訊,請執行下列 PowerShell 命令,並觀察 PublicIPAddress、PublicIPName、PublicIPDomainNameLabel 和 PublicIPFqdns 的值:
Add-AzureAccount
$roles = Get-AzureRole -ServiceName <Cloud Service Name> -Slot Production -RoleName WebRole1 -InstanceDetails
$roles[0].PublicIPAddress
$roles[1].PublicIPAddress
您也可以使用 nslookup
來查詢子網域的 A 記錄:
nslookup WebPublicIP.0.<Cloud Service Name>.cloudapp.net