インスタンス レベルのパブリック IP (ILPIP) は、VM またはロール インスタンスが存在するクラウド サービスではなく、VM または Cloud Services ロール インスタンスに直接割り当てることができるパブリック IP アドレスです。 ILPIP は、クラウド サービスに割り当てられている仮想 IP (VIP) の代わりに使用されません。 代わりに、VM またはロール インスタンスに直接接続するために使用できる追加の IP アドレスです。
重要
Azure には、リソースの作成と操作に関して、2 種類のデプロイ モデルがあります。Resource Manager とクラシックです。 この記事では、クラシック デプロイ モデルの使用方法について説明します。 Resource Manager を使用して VM を作成することをお勧めします。 Azure での IP アドレス のしくみを理解していることを確認します。
図 1 に示すように、クラウド サービスには VIP を使用してアクセスしますが、個々の VM には通常、VIP:<port 番号>を使用してアクセスします。 特定の VM に ILPIP を割り当てることで、その IP アドレスを使用してその VM に直接アクセスできます。
Azure でクラウド サービスを作成すると、対応する DNS A レコードが自動的に作成され、実際の VIP を使用するのではなく、完全修飾ドメイン名 (FQDN) を介してサービスにアクセスできるようになります。 ILPIP でも同じプロセスが行われます。これにより、ILPIP ではなく FQDN によって VM またはロール インスタンスにアクセスできるようになります。 たとえば、 contosoadservice という名前のクラウド サービスを作成し、 contosoweb という名前の Web ロールを 2 つのインスタンスで構成し、.cscfg domainNameLabel
が WebPublicIP に設定されている場合、Azure はインスタンスの次の A レコードを登録します。
- WebPublicIP.0.contosoadservice.cloudapp.net
- WebPublicIP.1.contosoadservice.cloudapp.net
- ...
注
VM またはロール インスタンスごとに割り当てることができる ILPIP は 1 つだけです。 サブスクリプションあたり最大 5 つの ILPIP を使用できます。 ILPIP は、マルチ NIC VM ではサポートされていません。
ILPIP を要求する理由
クラウド サービスの VIP:<port 番号ではなく、直接割り当てられた IP アドレスで VM またはロール インスタンスに接続できるようにする場合>、VM またはロール インスタンスの ILPIP を要求します。
- アクティブ FTP - VM に ILPIP を割り当てることで、任意のポートでトラフィックを受信できます。 VM がトラフィックを受信するためにエンドポイントは必要ありません。 FTP プロトコルの詳細については、 FTP プロトコルの概要 を参照してください。
- 送信 IP - VM から送信された送信トラフィックはソースとして ILPIP にマップされ、ILPIP は VM を外部エンティティに一意に識別します。
注
以前は、ILPIP アドレスはパブリック IP (PIP) アドレスと呼ばれていました。
VM の ILPIP を管理する
次のタスクを使用すると、VM から ILPIP を作成、割り当て、削除できます。
PowerShell を使用して VM の作成時に 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
既存の VM に ILPIP を追加する方法
前のスクリプトを使用して作成した VM に ILPIP を追加するには、次のコマンドを実行します。
Get-AzureVM -ServiceName FTPService -Name FTPInstance | Set-AzurePublicIP -PublicIPName ftpip2 | Update-AzureVM
Cloud Services ロール インスタンスの ILPIP を管理する
Cloud Services ロール インスタンスに 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>
Cloud Services の構成方法 に関する記事の手順を完了して、クラウド サービスの .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