内部負荷分散 (Internal Load Balancing)
このポストは、5 月 20 日に投稿された Internal Load Balancing の翻訳です。
このたび、Azure で "内部負荷分散" (ILB) がサポートされることになりました。内部負荷分散 (ILB) により、プライベート IP アドレスの範囲内で、可用性の高いサービスを実行できます。エンドポイントへのアクセスは、 Cloud Services または Virtual Network 内に限られるため、エンドポイントのセキュリティが強化されます。ILB エンドポイントが Virtual Network 内で使用される場合は、オンプレミス環境、および一部の強力なハイブリッド シナリオが可能なその他の相互接続された VNET からもアクセス可能です。
ILB には、2 種類の使用方法があります。
- Cloud Services 内での使用。この場合、負荷分散される IP が、Azure のプライベート IP アドレス空間から取得されます。
- Virtual Network 内での使用。この場合、負荷分散される IP が、お客様が指定した仮想サブネットまたは静的 VNET IP アドレスから取得されます。
主なシナリオ
ILB は、Azure で提供される現在のパブリックの負荷分散全体に対するセキュリティ強化です。ILB により、アクセシビリティが制限され、パブリック インターネットを必要としない Cloud Services または Virtual Network と、負荷分散される仮想 IP アドレスとの間に信頼境界が作成されます。これにより、内部の基幹業務アプリケーションが Azure で実行可能になり、これらのアプリケーションにクラウド内またはオンプレミス環境からアクセスできるようになります。以下に、一般的なユース ケースを紹介します。
- アプリケーション層とバックエンド データベースが ILB の範囲内で実行可能になるため、パブリック インターネットに接続されなくなります。さらに、負荷分散によって高い可用性を実現できます。このことは、セキュリティの大幅な強化となります。
- ILB VIP は、Virtual Network 全体でアクセス可能です。また、オンプレミス環境および安全な IPSec トンネルを使用した相互接続された VNET からも同様にアクセスできます。このことにより、以下の図に示されるように、ILB の範囲内にフロントエンド VIP を配置して、イントラネット向けの (CorpNet のみ) SharePoint ファームを稼働させることができます。
使用手順
内部負荷分散は、現在プレビュー版で提供されています。近日中に一般向けにリリースされる予定です。ILB の詳細なドキュメントは、こちらのページ (英語) をご覧ください。
現時点では、ポータルから内部負荷分散を構成することはできませんが、今後サポートされる予定です。ただし、PowerShell のコマンドレットを使用して構成できます。ILB は、リージョン仮想ネットワーク (Regional Virtual Network) 内のデプロイメントと、Virtual Network 外の新しいデプロイメントで使用できます。以降のセクションでは、これら 2 つの使用方法について概説します。
リージョン仮想ネットワークの ILB
- リージョン仮想ネットワークの Cloud Services に作成された ILB エンドポイントは、Virtual Network 全体でアクセスできます。相互接続された VNET とオンプレミスのサイトからアクセスすることもできます。
- 以下のスニペットを使用します。このスニペットは、リージョン仮想ネットワーク "VNetUSWest" 内にデプロイされた Cloud Services に内部ロード バランサーを構成するサンプルです。リージョン仮想ネットワークの詳細は、こちらの記事をご覧ください。
- VNET 内で ILB を使用している場合は、サブネットを指定して、より詳細に VNET アドレス空間から内部ロード バランサーの IP アドレスを指定することもできます。
# VM を構成
$web1 = New-AzureVMConfig -Name "web1" -InstanceSize Small -ImageName <imagename> | Add-AzureProvisioningConfig -Windows -AdminUsername <username> -Password <password> | Set-AzureSubnet FrontEndSubnet
$web2 = New-AzureVMConfig -Name "web2" -InstanceSize Small -ImageName <imagename> | Add-AzureProvisioningConfig -Windows -AdminUsername <username> -Password <password> | Set-AzureSubnet FrontEndSubnet
# デプロイメントを作成
New-AzureVM -ServiceName "MyWebsite1" -VMs $web1 -Location "West US" -VNetName VNetUSWest
New-AzureVM -ServiceName "MyWebsite1" -VMs $web2 -Location "West US"
# 内部ロード バランサーをサービスに追加
Add-AzureInternalLoadBalancer -InternalLoadBalancerName MyILB -SubnetName FrontEndSubnet -ServiceName MyWebsite1
# 負荷分散されるエンドポイントを ILB に追加
Get-AzureVM -ServiceName MyWebsite1 -Name web1 | Add-AzureEndpoint -Name "intwebep" -LBSetName "intwebeplb" -Protocol tcp -LocalPort 100 -PublicPort 100 -ProbePort 100 -ProbeProtocol tcp -ProbeIntervalInSeconds 10 -InternalLoadBalancerName MyILB | Update-AzureVM
Get-AzureVM -ServiceName MyWebsite1 -Name web2 | Add-AzureEndpoint -Name "intwebep" -LBSetName "intwebeplb" -Protocol tcp -LocalPort 100 -PublicPort 100 -ProbePort 100 -ProbeProtocol tcp -ProbeIntervalInSeconds 10 -InternalLoadBalancerName MyILB | Update-AzureVM
- この例では、ILB でサブネット "FrontEndSubnet" から IP が取得されます。
- 以下のようにコマンドレットを使用して、ILB に関する情報を取得できます。
# 内部ロード バランサーの情報を取得
Get-AzureService -ServiceName MyWebsite1 | Get-AzureInternalLoadBalancer
# エンドポイントの ILB 情報を取得
Get-AzureVM -ServiceName MyWebsite1 -Name web1 | Get-AzureEndpoint
Cloud Services での ILB
- リージョン仮想ネットワーク外部の Cloud Services で作成された ILB エンドポイントへのアクセスは、その Cloud Services 内に限られます。
- 以下のコマンドレットの例のように、Cloud Services での最初のデプロイメントの作成中に ILB 構成を設定する必要があります。
# ローカルの ILB オブジェクトを作成
$myilbconfig = New-AzureInternalLoadBalancerConfig -InternalLoadBalancerName "MyILB"
# 内部ロード バランサーを新しいサービスに追加
New-AzureVMConfig -Name "Instance1" -InstanceSize Small -ImageName <imagename> | Add-AzureProvisioningConfig -Windows -AdminUsername <username> -Password <password> | New-AzureVM -ServiceName "Website2" -InternalLoadBalancerConfig $myilbconfig -Location "West US"
よくある質問 (FAQ)
1. Virtual Network 内の既存のデプロイメントに ILB を追加することはできますか 。
Virtual Network がリージョン仮想ネットワークである場合に限り、追加可能です。既存のすべての Virtual Network は、近日中にリージョン仮想ネットワークに移行されます。移行が完了すると追加可能になります。
2. SQL Always On シナリオで ILB を使用できますか。
現時点では使用できません。近日中にサポートがリリースされる見込みです。
3. リージョン仮想ネットワークのデプロイメント内に負荷分散されるエンドポイントが既にある場合、このエンドポイントを ILB に追加できますか 。
いいえ、できません。ILB は、エンドポイントの作成時に参照される必要があるため、通常のエンドポイントと ILB のエンドポイントとを変換することはできません。これは、近日中にサポートされる見込みです。
4. ILB をエンドポイントの ACL と共に使用することはできますか 。
はい、ILB はエンドポイントの ACL と共に使用できます。ACL がリージョン仮想ネットワーク内で使用されている場合は、Virtual Network 内もアクセスを制限して、そのお客様の IP アドレス空間で ACL を表すことができます。
5. 独自の Virtual Machines で ILB をセットアップした場合に、負荷分散される VIP で同じ Virtual Machines の " ループバック " が機能しますか 。
いいえ、機能しません。負荷分散されている同じ Virtual Machines の ILB VIP にはアクセスできません。
6. PaaS サービス (Web または Worker ロール ) で ILB を使用できますか 。
ILB は、Web または Worker ロールとも連動するように設計されています。ただし、現時点では、サービス モデル (cscfg または csdef) では公開されていません。これは、近日中にサポートされる見込みです。