目次
- 目次
- WebSocket をオンにする
- VnetPrivatePortsCount
- VnetPrivatePortsCount を PowerShell で設定
- アプリケーションコードで利用する際の注意点
前の記事はこちらです。
hiro128.hatenablog.jp
WebSocket をオンにする
サイロのインスタンス同士やサイロとフロントエンド(Oreansクライアント)間で WebSocket 通信を行えるようにするために、WebSocket をオンに設定します。
VnetPrivatePortsCount
また、今回はサイロは プライベート エンドポイント接続とVNet 統合でパブリックアクセスができないようにしているので、プライベートポートが2個(SiloPort、GatewayPort)必要になります。
この値はポータル上からは設定できないので、PowerShell で設定するか Bicep などの IaC で設定する必要があります。
VnetPrivatePortsCount のリファレンス
learn.microsoft.com
VnetPrivatePortsCount を PowerShell で設定
$resourceGroupName = '<リソースグループ名>' $siloServiceName = '<App Service 名>' $siloWebApp = Get-AzResource -ResourceType Microsoft.Web/sites -ResourceGroupName $resourceGroupName -ResourceName $siloServiceName $siloWebApp.Properties.siteConfig.vnetPrivatePortsCount=2 $siloWebApp | Set-AzResource -Force
今回は
- フロントエンド(orleanspocfrontend)
- サイロ01(orleanspoc01)
- サイロ02(orleanspoc02)
の3つに設定するので、以下のようになります。
$resourceGroupName = 'OrleansPoC' $frontendServiceName = 'orleanspocfrontend' $frontendWebApp = Get-AzResource -ResourceType Microsoft.Web/sites -ResourceGroupName $resourceGroupName -ResourceName $frontendServiceName $frontendWebApp.Properties.siteConfig.vnetPrivatePortsCount=2 $frontendWebApp | Set-AzResource -Force $siloServiceName01 = 'orleanspoc01' $siloWebApp01 = Get-AzResource -ResourceType Microsoft.Web/sites -ResourceGroupName $resourceGroupName -ResourceName $siloServiceName01 $siloWebApp01.Properties.siteConfig.vnetPrivatePortsCount=2 $siloWebApp01 | Set-AzResource -Force $siloServiceName02 = 'orleanspoc02' $siloWebApp02 = Get-AzResource -ResourceType Microsoft.Web/sites -ResourceGroupName $resourceGroupName -ResourceName $siloServiceName02 $siloWebApp02.Properties.siteConfig.vnetPrivatePortsCount=2 $siloWebApp02 | Set-AzResource -Force
アプリケーションコードで利用する際の注意点
設定されたポートは、環境変数WEBSITE_PRIVATE_PORTS
で取得できます。なお、このポートはスケールユニット内の他のインスタンスのポート使用状況に応じて動的に設定される(再起動時に変更される)ので、アプリケーションコード内からは必ず環境変数から取得して利用する必要があります。
// WEBSITE_PRIVATE_PORTS は再起動で変更されるので WEBSITE_PRIVATE_PORTS として取得し Parse すること var strPorts = context.Configuration["WEBSITE_PRIVATE_PORTS"].Split(','); if (strPorts.Length < 2) throw new Exception("Insufficient private ports configured."); var (siloPort, gatewayPort) = (int.Parse(strPorts[0]), int.Parse(strPorts[1]));
次の記事はこちらです。
hiro128.hatenablog.jp