Partager via


インスタンス レベルのパブリック IP アドレス

このポストは、10 月 22 日に投稿された Instance-Level Public IP Address の翻訳です。

インスタンス レベルのパブリック IP アドレスの一般提供に関する発表 (英語) のフォローアップ記事として、今回はそのシナリオ、使用法、よく寄せられる質問について取り上げたいと思います。Azure で稼働する Virtual Machines に、直接かつパブリックにアクセス可能な IP アドレスを関連付けることができるようになりました。この機能は IaaS Virtual Machines、および従来の Web/Worker (PaaS) ロール インスタンスの両方で使用できます。

 

ユース ケース シナリオ

インスタンス レベルのパブリック IP アドレス (PIP) は、仮想 IP アドレス (VIP) とは異なり負荷分散されません。VIP は Cloud Services に割り当てられ、すべての Virtual Machines とそのロール インスタンスにより共有されますが、PIP は単一のインスタンスに関連付けられます。PIP は、各インスタンスにインターネットから個別にアクセスできる、マルチインスタンスのデプロイメントで特に有用です。下の図は PIP と VIP の違いを示しています。

*VIP に送信されたトラフィックは DIP1 または DIP2 のいずれかに到達しますが、PIP1 に送信されたトラフィックは常に DIP1 に、PIP2 に送信されたトラフィックは常に DIP2 に到達します。

*DIP (データセンターの IP) は VM のプライベート IP アドレスです。

動的なポート

通常、外部のソースからトラフィックを Azure VM に送信するには、送信先のポートを VM のエンドポイントとして宣言する必要があります。インスタンス レベルのパブリック IP にはこうした制約はありません。外部の送信元は、VM のファイアウォールが許可する限り、トラフィックをインスタンス レベルのパブリック IP アドレスのどのポートにも送信できます。これはトラフィックを VM の動的なポートで受信したい場合に非常に便利です。その好例として、パッシブ モードを実装している FTP サーバーが挙げられます。

外部からの監視

インスタンス レベルのパブリック IP アドレスは、負荷分散されている個別の VM を外部の送信元から監視するというシナリオでも有用です。VIP を通じて接続すると、トラフィックは常に負荷分散され、ロード バランサーの背後にあるいずれかの VM に送信されますが、PIP を使用すると、トラフィックは常に PIP が関連付けられている特定の VM に送信されます。

一意の送信 IP アドレス

インスタンス レベルのパブリック IP アドレスのもう 1 つの特長は、外部エンドポイントへの接続時に VM の送信 IP アドレスとして使用される点です。PIP は VM を一意に識別するので、受信側は簡単にトラフィックの送信元のホワイトリストを作成したり、識別したりできます。Web クローラーなどの送信接続が大量に必要となるシナリオでは、VM でインスタンス レベルのパブリック IP を使用して送信元ネットワーク アドレス変換 (SNAT) 用の送信 IP を持たせることが推奨されます。

 

使用法

前述のとおり、インスタンス レベルのパブリック IP アドレスは、Virtual Machines (IaaS) および Web/Worker ロール (PaaS) の両方で使用できます。IaaS の場合は VM 構成で、PaaS の場合はロール構成で PIP が要求され、ロールのすべてのインスタンスがインスタンス レベルのパブリック IP アドレスを取得します。次のセクションで、それぞれの場合の PowerShell コマンドレットおよびサービス構成ファイルのサンプルを紹介します。

Virtual Machines

*下のサンプルでは、私が所有するサブスクリプションの Virtual Network “VnetUSEast” を使用しています。このネットワークには、フロントエンドとバックエンドのサブネットが含まれます。

 #作成時に Virtual Machines のパブリック IP アドレスを割り当て
$images = Get-AzureVMImage
$ftp1 = New-AzureVMConfig -Name "instance1" -InstanceSize Small -ImageName $images[50].ImageName | Add-AzureProvisioningConfig -Windows -AdminUsername narayan -Password pass@word1 | Set-AzureSubnet FrontEndSubnet | Set-AzurePublicIP -PublicIPName "pip1"
New-AzureVM -ServiceName "MyFTPService" -VMs $ftp1 -Location "East US" -VNetName VNetUSEast

#更新を通じて Virtual Machines のパブリック IP アドレスを割り当て
Get-AzureVM -ServiceName "MyFtpService" -Name "instance1" | Set-AzurePublicIP -PublicIPName "pip1" | Update-AzureVM
Get-AzureVM -ServiceName "MyFtpService" -Name "instance2" | Set-AzurePublicIP -PublicIPName "pip2" | Update-AzureVM

#Virtual Machines に関連付けられたパブリック IP 名を取得
Get-AzureVM -ServiceName "MyFtpService" -Name "instance1" | Get-AzurePublicIP

#Virtual Machines に割り当てらたパブリック IP アドレスを取得
$instance1 = Get-AzureVM -ServiceName "MyFtpService" -Name "instance1"
$instance1.PublicIPAddress

#Virtual Machines からパブリック IP アドレスを削除
Get-AzureVM -ServiceName "MyFtpService" -Name "instance1" | Remove-AzurePublicIP | Update-AzureVM

Web/Worker ロール

PaaS ロール インスタンスのパブリック IP アドレスを取得するには、サービス構成ファイル (cscfg) に定義します。

 #cscfg スニペット (ファイルの一部)
<....>

  <NetworkConfiguration>
    <VirtualNetworkSite name="VNetUSEast" />
    <AddressAssignments>
      <InstanceAddress roleName="WorkerRole1">
        <Subnets>
          <Subnet name="BackEndSubnet" />
        </Subnets>
        <PublicIPs>
          <PublicIP name="FtpIP" />
        </PublicIPs>
      </InstanceAddress>
      <InstanceAddress roleName="WebRole1">
        <Subnets>
          <Subnet name="FrontEndSubnet" />
        </Subnets>
      </InstanceAddress>
    </AddressAssignments>
  </NetworkConfiguration>
</ServiceConfiguration>
#ロール インスタンスごとにパブリック IP を取得
$roles = Get-AzureRole -ServiceName PaaSFTPService -Slot Production -RoleName WorkerRole1 -InstanceDetails

$roles[0].PublicIPAddress
$roles[1].PublicIPAddress

#ロール インスタンスとパブリック IP の関連付けを解除するには、構成の更新を使用してロールからパブリック IP セクションを編集する

 

数量制限と課金

プレビュー版では、インスタンス レベルのパブリック IP アドレスは 2 つに制限されていましたが、一般提供の開始により、1 サブスクリプションにつき 5 つに引き上げられました。

また、インスタンス レベルのパブリック IP アドレスは、わずかな額ですが課金されます。詳細については、「IP アドレスの料金」を参照してください。

 

よく寄せられる質問

1. 仮想 IP アドレス (負荷分散) とインスタンス レベルのパブリック IP アドレスの両方をデプロイメントで使用できますか。

はい。VIP は既定ですべての Cloud Services に割り当てられます。インスタンス レベルのパブリック IP アドレスは、特定の Virtual Machines またはロール インスタンスにオンデマンドで割り当てることができます。

 

2. 単一インスタンスの Virtual Machines で VIP とインスタンス レベルのパブリック IP アドレスが必要になる場合があれば、その理由を教えてください。

必要になることはないと思います。単一インスタンスの Virtual Machines では、既に VIP が使用できるので、追加のパブリック IP は必要ありません。ただし、インスタンス レベルのパブリック IP アドレスを使用すると、VM のすべてのポートにエンドポイントの宣言なしでアクセスできます。これは、アプリケーションで動的なパブリック ポートを公開したい場合に便利です。

 

3. インスタンス レベルのパブリック IP アドレスはポータルに表示されますか。

いいえ。現時点ではポータルではサポートされていません。PowerShell コマンドレットおよび REST API でのみ利用可能です。

 

4. インスタンス レベルのパブリック アドレスはどのデプロイメントでも使用できますか。

インスタンス レベルのパブリック IP アドレスは、以下のデプロイメントで使用できます。

 

5. インスタンス レベルのパブリック IP は VM の IP 構成に表示されますか。

いいえ。パブリック IP は VM 内では表示されません。IP アドレスは、前述の REST API または PowerShell コマンドレットで取得できます。

 

6. インスタンス レベルのパブリック IP の DNS 名はありますか。

いいえ。現時点では DNS 名はありません。今後有効になる予定です。