この記事では、既存の Azure Virtual Machines で高速ネットワークを有効にして管理する方法について説明します。
前提条件
Azure Cloud Shell
Azure では、ブラウザーを介して使用できる対話型のシェル環境、Azure Cloud Shell がホストされています。 Cloud Shell で Bash または PowerShell を使用して、Azure サービスを操作できます。 ローカル環境に何もインストールしなくても、Cloud Shell にプレインストールされているコマンドを使用して、この記事のコードを実行できます。
Azure Cloud Shell を開始するには、以下のようにします。
| オプション |
例とリンク |
| コードまたはコマンド ブロックの右上隅にある [使ってみる] を選択します。
[使ってみる] を選択しても、コードまたはコマンドは Cloud Shell に自動的にはコピーされません。 |
|
|
https://shell.azure.com に移動するか、[Cloud Shell を起動する] ボタンを選択して、ブラウザーで Cloud Shell を開きます。 |
|
|
Azure portal の右上にあるメニュー バーの [Cloud Shell] ボタンを選択します。 |
|
Azure Cloud Shell を使用するには、以下のようにします。
Cloud Shell を開始します。
コード ブロック (またはコマンド ブロック) の [コピー] ボタンを選択し、コードまたはコマンドをコピーします。
Windows と Linux では Ctrl+Shift+V キーを選択し、macOS では Cmd+Shift+V キーを選択して、コードまたはコマンドを Cloud Shell セッションに貼り付けます。
Enter キーを選択して、コードまたはコマンドを実行します。
PowerShell をローカルにインストールして使用する場合、この記事では Azure PowerShell モジュール バージョン 1.0.0 以降が必要になります。 インストールされているバージョンを確認するには、Get-Module -ListAvailable Az を実行します。 アップグレードする必要がある場合は、Azure PowerShell モジュールのインストールに関するページを参照してください。 PowerShell をローカルで実行している場合、Connect-AzAccount を実行して Azure との接続を作成することも必要です。
Azure アカウントをお持ちでない場合は、開始する前に無料アカウントを作成してください。
- この記事では、Azure CLI のバージョン 2.0.28 以降が必要です。 Azure Cloud Shell を使用している場合は、最新バージョンが既にインストールされています。
仮想関数の動的バインディングと失効を処理する
高速ネットワークを利用するすべてのアプリケーションで、仮想マシンで公開されている合成ネットワーク インターフェイスへのバインドが必須の要件です。
仮想関数ネットワーク インターフェイス経由で直接実行しているアプリケーションでは、仮想マシン宛てのパケットの一部が届きません。 これらのパケットは、代わりに合成インターフェイス経由で届きます。
アプリケーションが自分宛のすべてのパケットを確実に受け取るようにするには、合成ネットワーク インターフェイス経由でアプリケーションを実行する必要があります。 また、合成ネットワーク インターフェイスにバインドすると、ホストのサービス提供中に仮想関数が取り消された場合でも、アプリケーションは確実に実行し続けます。
アプリケーションバインディング要件の詳細については、「Linux および FreeBSD VM での高速ネットワークのしくみ」を参照してください。
いずれかの Windows Hyper-V サーバーで機能をテストして、カスタム イメージまたはアプリケーションで仮想関数の動的バインドと取り消しが正しくサポートされていることを確認します。 次の構成で Hyper-V を実行しているローカル Windows Server を使用します。
SR-IOV をサポートする物理ネットワーク アダプターがあることを確認します。
この SR-IOV アダプターの上に外部仮想スイッチが作成され、"シングル ルート I/O 仮想化 (SR-IOV) を有効にする" がオンになります。
オペレーティング システムのイメージまたはアプリケーションを実行している仮想マシンが作成またはデプロイされます。
この仮想マシンのネットワーク アダプターの [ハードウェア アクセラレーション] で [SR-IOV を有効にする] が選択されています。
仮想マシンとアプリケーションで SR-IOV を使用してネットワーク アダプターを活用していることを確認したら、次のコマンド例を変更して SR-IOV のオフ/オンを切り替え、Azure ホストのサービス中に何が起こるかシミュレートする仮想関数を取り消したり、追加したりできます。
# Get the virtual network adapter to test
$vmNic = Get-VMNetworkAdapter -VMName "myvm" | where {$_.MacAddress -eq "001122334455"}
# Enable SR-IOV on a virtual network adapter
Set-VMNetworkAdapter $vmNic -IovWeight 100 -IovQueuePairsRequested 1
# Disable SR-IOV on a virtual network adapter
Set-VMNetworkAdapter $vmNic -IovWeight 0
既存の VM で高速ネットワークを管理する
既存の仮想マシンで高速ネットワークを有効にすることができます。 高速ネットワークをサポートするには、VM が次の要件を満たしている必要があります。
高速ネットワークに対してサポートされるサイズである。
Linux でサポートされている Azure Marketplace イメージとカーネル バージョンである。
任意の NIC で高速ネットワークを有効にする前に、停止するか割り当てを解除する。 この要件は、可用性セットまたは Azure Virtual Machine Scale Sets 内のすべての個々の VM または VM に適用されます。
可用性セット内の個々の VM または VM で高速ネットワークを有効にする
Azure portal で VM を作成するときに、[仮想マシンの作成] 画面の [ネットワーク] タブで [高速ネットワークを有効にする] チェックボックスを選択することができます。
VM で、高速ネットワークにサポートされているオペレーティング システムと VM サイズが使用されている場合、[仮想マシンの作成] 画面の [ネットワーク] タブで [高速ネットワークの有効化] チェックボックスが自動的に選択されます。 高速ネットワークがサポートされていない場合、チェックボックスは選択されず、その理由を説明するメッセージが表示されます。
注
- ポータル VM の作成中に高速ネットワークを有効にできるのは、Azure Marketplace でサポートされているオペレーティング システムに対してのみです。 カスタム OS イメージを使用して VM の高速ネットワークを作成して有効にするには、Azure CLI または PowerShell を使用する必要があります。
Azure portal を介して既存の VM の高速ネットワークを有効または無効にするには:
VM の Azure portal ページ上で、左側のメニューから [ネットワーク] を選択します。
[ネットワーク] ページで、[ネットワーク インターフェイス] を選択します。
NIC の [概要] ページの上部にある [高速ネットワークの編集] を選択します。
[自動]、[有効]、または [無効] を選択し、[保存] を選択します。
既存の VM に対して高速ネットワークが有効になっているかどうかを確認するには:
VM の Azure portal ページ上で、左側のメニューから [ネットワーク] を選択します。
[ネットワーク] ページで、[ネットワーク インターフェイス] を選択します。
NIC の [概要] ページの [要点] で、[高速ネットワーク] が [有効] または [無効] に設定されているかどうかを確認します。
VM (可用性セットの場合は、セット内のすべての VM) を停止するか、割り当てを解除します。
Stop-AzVM -ResourceGroup "<myResourceGroup>" -Name "<myVM>"
可用性セットを使用せず、VM を個別に作成した場合、高速ネットワークを有効にするために必要なのは、個別の VM を停止または割り当てを解除することだけです。 可用性セットを使用して VM を作成した場合は、セットに含まれるすべての VM を停止するか、割り当てを解除する必要があります。これにより、VM は高速ネットワークをサポートするクラスター上に配置されます。
高速ネットワークを無効にする場合は、停止または割り当てを解除する必要はありません。 高速ネットワークをサポートするクラスターは、高速ネットワークを使用しない NIC でも正常に動作します。
VM の NIC 上で高速ネットワークを有効にします。
$nic = Get-AzNetworkInterface -ResourceGroupName "<myResourceGroup>" -Name "<myNic>"
$nic.EnableAcceleratedNetworking = $true
$nic | Set-AzNetworkInterface
VM を再起動するか、可用性セット内のすべての VM を再起動し、高速ネットワークが有効になっていることを確認します。
Start-AzVM -ResourceGroup "<myResourceGroup>" -Name "<myVM>"
Virtual Machine Scale Sets で高速ネットワークを有効にする
Azure Virtual Machine Scale Sets の場合は少し異なりますが、同じワークフローに従います。
VM を停止します。
Stop-AzVmss -ResourceGroupName "<myResourceGroup>" -VMScaleSetName "<myScaleSet>"
NIC で、高速ネットワークのプロパティを更新します。
$vmss = Get-AzVmss -ResourceGroupName "<myResourceGroup>" -VMScaleSetName "<myScaleSet>"
$vmss.VirtualMachineProfile.NetworkProfile.NetworkInterfaceConfigurations[0].EnableAcceleratedNetworking = $true
Update-AzVmss
-ResourceGroupName "<myResourceGroup>" `
-VMScaleSetName "<myScaleSet>" `
-VirtualMachineScaleSet $vmss
Virtual Machine Scale Sets には、自動、ローリング、または手動設定を使用して更新プログラムを適用するアップグレード ポリシーがあります。 変更がすぐに選択されるように、アップグレード ポリシーを自動に設定します。
$vmss.UpgradePolicy.Mode = "Automatic"
Update-AzVmss
-ResourceGroupName "<myResourceGroup>" `
-VMScaleSetName "<myScaleSet>" `
-VirtualMachineScaleSet $vmss
スケール セットを再起動します。
Start-AzVmss -ResourceGroupName "<myResourceGroup>" -VMScaleSetName "<myScaleSet>"
最初に、VM または可用性セット内のすべての VM を停止して割り当てを解除します。
az vm deallocate \
--resource-group <myResourceGroup> \
--name <myVm>
可用性セットを使用せず、VM を個別に作成した場合、高速ネットワークを有効にするために必要なのは、個別の VM を停止または割り当てを解除することだけです。 可用性セットを使用して VM を作成した場合は、いずれかの NIC 上で高速ネットワークを有効にする前に、セットに含まれるすべての VM を停止するか、割り当てを解除する必要があります。
VM を停止したら、VM の NIC 上で高速ネットワークを有効にします。
az network nic update \
--name <myNic> \
--resource-group <myResourceGroup> \
--accelerated-networking true
VM を再起動するか、可用性セット内のすべての VM を再起動し、高速ネットワークが有効になっていることを確認します。
az vm start --resource-group <myResourceGroup> \
--name <myVm>
Virtual Machine Scale Sets で高速ネットワークを有効にする
Azure Virtual Machine Scale Sets の場合は少し異なりますが、同じワークフローに従います。
最初に、VM を停止します。
az vmss deallocate \
--name <myVmss> \
--resource-group <myResourceGroup>
VM が停止した後、ネットワーク インターフェイスにおいて高速ネットワークのプロパティを更新します。
az vmss update --name <myVmss> \
--resource-group <myResourceGroup> \
--set virtualMachineProfile.networkProfile.networkInterfaceConfigurations[0].enableAcceleratedNetworking=true
Virtual Machine Scale Sets には、自動、ローリング、または手動設定を使用して更新プログラムを適用するアップグレード ポリシーがあります。 次の手順では、ポリシーを自動に設定して、Virtual Machine Scale Sets が再起動直後に変更を取得できるようにします。
az vmss update \
--name <myVmss> \
--resource-group <myResourceGroup> \
--set upgradePolicy.mode="automatic"
最後に、Virtual Machine Scale Sets を再起動します。
az vmss start \
--name <myVmss> \
--resource-group <myResourceGroup>
再起動してアップグレードが完了すると、サポートされている OS と VM サイズを使用する VM 内に VF が表示されます。
高速ネットワークが有効な既存の VM のサイズを変更する
高速ネットワークが有効になっている VM のサイズは、高速ネットワークもサポートするサイズにのみ変更できます。 高速ネットワークが有効になっている VM のサイズを、高速ネットワークをサポートしていない VM インスタンスに、サイズ変更操作を使用して変更することはできません。 代わりに、次のプロセスを使用して、これらの VM のサイズを変更します。
可用性セットまたは Virtual Machine Scale Sets 内の VM またはすべての VM を停止して割り当てを解除します。
可用性セットまたは Virtual Machine Scale Sets 内の VM またはすべての VM の NIC で高速ネットワークを無効にします。
高速ネットワークをサポートしない新しいサイズに VM を移動し、再起動します。
関連するコンテンツ