實例層級公用IP (ILPIP) 是一個公用IP位址,您可以直接指派給 VM 或雲端服務角色實例,而不是指派給 VM 或角色實例所在的雲端服務。 ILPIP 不會取代指派給您雲端服務的虛擬IP(VIP)。 相對地,這是一個額外的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。 多網路介面的虛擬機器(VM)不支援 ILPIPs。
為什麼我會要求 ILPIP?
如果您想要能夠透過直接指派給 VM 的 IP 位址連線到 VM 或角色實例,而不是使用雲端服務 VIP:<埠號碼>,請為您的 VM 或角色實例要求 ILPIP。
- 作用中 FTP - 將 ILPIP 指派給 VM,即可接收任何埠上的流量。 VM 不需要端點才能接收流量。 如需 FTP 通訊協定的詳細資訊,請參閱 FTP 通訊協定概觀 。
- 外向 IP - 源自 VM 的外向流量映射至 ILPIP 作為來源,ILPIP 唯一識別 VM 並將其标示給外部實體。
備註
過去,ILPIP 位址稱為公用IP(PIP) 位址。
管理 VM 的 ILPIP
下列工作可讓您從 VM 建立、指派和移除 ILPIP:
如何在建立 VM 時使用 PowerShell 申請 ILPIP
下列 PowerShell 腳本會建立名為 FTPService 的雲端服務、從 Azure 擷取映射、使用擷取的映射建立名為 FTPInstance 的 VM、將 VM 設定為使用 ILPIP,並將 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