【第3回】AVDを活用し、DXを進める(構築編-ハイブリッドクラウド)~前編~
【第3回】AVDを活用し、DXを進める(構築編-ハイブリッドクラウド)~後編~ からの続き
皆さん、こんにちは。今回は、Azure Virtual Desktop (AVD) を活用し、DX を進めるシリーズのブログ第4弾となります。AVDの “Days2Operation (運用段階)” の作業など をご紹介します。
監視
AVDを導入し、効果測定を行うためAVDを監視する必要があります。MSの公開資料「Azure Monitor for Azure Virtual Desktop を使用してデプロイを監視する」を参照し、設定を行う方法ももありますが、自社の状況を踏まえて考えるのがおすすめです。
まず、導入の目的から観察の要点として始めましょう。「AVDの導入によって、何の効果を満たしたいか」の質問から考えましょう。例えば、エンドユーザーさんの生産性の向上、システムの安定活動、コストの削減などは考えられますよね。
そして、それぞれの目標が達成したかを根拠として、何のデータが必要かを考えましょう。例えば、「システムの安定活動」について、各リソースの死活監視は必要ですよね。その後、各リソースのデータの取集方法を確認した上で、対応方法などを決めればよいです。
最後は、上記の取集したデータを分析や可視化にして、目的を満たしたかを判断しましょう。
また、上記の取集したデータは一発で決めるものではなく、実際の状況に応じて、何回も調整する必要があるかもしれません。
以下は上記の考え方で、作ったマインドマップとなります。ご参考になれば幸いです。
上記で記載した監視すべきところ、ほぼ「Azure Monitor for Azure Virtual Desktop」に含まれています。その部分を省略させていただきます。含まれていない部分の監視方法は以下に記載します。
- 現在のコスト
これを把握するためには、AVDに関連するすべてのリソースにタグを追加することをお勧めします。例えば、System:AVD。 そして、サブスクリプションから、コストの分析にて、上記タグをフィルターとして、現在のコストを把握することは可能です。
- Azure ADの死活監視
「https://status.azure.com/ja-jp/status」から、Azure ADの状態を確認することは可能です。もし障害が発生する際に、アラートを利用したいであれば、「サービス正常性」から、アラートルールを作成してください。
- ドメインサービスの死活監視
オンプレミスADを利用する場合は、オンプレミスと同様の方法で監視すればよいです。「Azure AD Domain Service」を利用する場合は、「Azure AD Domain Service」の「正常性」で確認すればよいです。
- ストレージアカウントの死活監視
Storage Accountを利用する場合は、Storage Accountの「Availability」メトリックを利用すればよいです。
- ストレージのサイズ
Get-AzStorageFileを利用し、ファイルサイズを確認すればよいです。
$userName = ""#UserNameをご指定ください。
$userPassword = "" #Password をご指定ください。
$storageAccountName = ""#Storage Accountをご指定ください。
$rg = ""#リソースグループ名をご指定ください。
$shareName = ""#共有名をご指定ください。
$subscriptionId = ""#Azure Subsription IDをご指定ください。
$secpasswd = ConvertTo-SecureString $userPassword -AsPlainText -Force
$userCredential = New-Object System.Management.Automation.PSCredential($userName , $secpasswd)
Connect-AzAccount -Credential $userCredential
Select-AzSubscription $subscriptionId
$key = Get-AzStorageAccountkey -ResourceGroupName $rg -Name $storageAccountName
$ctx = New-AzStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $key.value[0]
$profiles = @()
$dirs = Get-AzStorageFile -ShareName $shareName -Context $ctx
$total = 0
foreach ($directory in $dirs) {
$props = $directory.Name.Split("_")
$profileSize = 0
$files = Get-AZStorageFile -Context $ctx -ShareName $shareName -Path $directory.Name | Get-AZStorageFile
## Loop through all files and display
foreach ($file in $files) {
$profileSize += $file.Length
}
$profiles += [PSCustomObject]@{
Sid = $props[0]
Name = $props[1]
SizeInMB = $profileSize / 1024 / 1024
}
$total += $profileSize
}
Write-Host -ForegroundColor Yellow "Total:" $($total / 1024 / 1024) "MB"
$profiles
実行例:
自動スケーリング
自動スケーリングは大変重要の機能であり、我々は長い間待っていました。今まではPowerShellスクリプトとAzure Automationを使用して、ホストセッションを自動的にスケーリングしていましたが、多くのコンポーネントを含み、大変複雑でした。自動スケーリング機能 を使用すると、Azure Virtual Desktop デプロイの仮想マシン (VM) をスケールアップまたはスケールダウンして、デプロイ コストを最適化できます。 ニーズに応じて、次に基づいてスケーリング プランを作成できます。平日の稼働時間、ピーク時間、ランプダウン時間、およびオフピーク時間を指定し、自動スケーリングトリガーなどを指定できます。
詳しい手順は以下のMS公開資料をご参照ください。
https://docs.microsoft.com/ja-jp/azure/virtual-desktop/autoscale-scaling-plan
トラブルシューティング
これから、AVDに何か問題が発生する際には、どのように対応すればよいかを議論したいと思います。
まずは、以下のMS資料に記載した既知の問題かどうかを確認しましょう。
「https://docs.microsoft.com/ja-jp/azure/virtual-desktop/troubleshoot-set-up-overview」
上記以外は、以下の問題もよく発生しています。
「プロセスはファイルにアクセスできません。別のプロセスが使用中です。」のエラーで、ユーザープロフィールが正しくMountされません。
このエラーは一般的には、以下のシナリオが想定されます。
スタックした/Ghost セッションにより、該当するVHDファイルがLockされた。 具体的には、FSLogixのAgent一時的問題で応答しなくなった場合、AVD Management Serviceがこのホストに存在しているセッションが検知できず、ユーザーがログインしようとする場合、Management Serviceが新しいセッションとして認識し、別のホストをユーザーにアサインします。
この場合、該当するVHDファイルを利用するホストを確認し、手動でセッションをログアウトする必要があります。詳しい手順は以下と思います。
手順
- 以下のPowerShellで、該当するVHDファイルが捕まっているHostを検知します。
$userName = ""#UserNameをご指定ください。
$userPassword= "" #Password をご指定ください。
$storageAccountName = ""#Storage Accountをご指定ください。
$rg = ""#リソースグループ名をご指定ください。
$shareName = ""#共有名をご指定ください。
$secpasswd = ConvertTo-SecureString $userPassword -AsPlainText -Force
$userCredential = New-Object System.Management.Automation.PSCredential($userName , $secpasswd)
Connect-AzAccount -Credential $userCredential
$key = Get-AzStorageAccountkey -ResourceGroupName $rg -Name $storageAccountName
$ctx = New-AzStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $key.value[0]
#$user = Read-Host -Prompt "Username with Locked Profile: "
$user = "" #UserName をごしてください。例:minghl
Write-Host "Searching for Handles matching $user :" -ForegroundColor Green
Write-Host "================================= " -ForegroundColor Green
$getAzSFH = Get-AzStorageFileHandle -ShareName $shareName -Recursive -context $ctx | Sort-Object ClientIP,OpenTime,Path
# Iterate through handles, find ones that match username provided
foreach ($vmIP in $getAzSFH){
if ($vmIP.path -match $user){
Write-Host -NoNewline "Handle found: " -ForegroundColor Gray
Write-Host -NoNewline "IP: $($vmIp.ClientIP), " -ForegroundColor Cyan
write-host "Path: $($vmIP.path) " -ForegroundColor Magenta
}
}
Disconnect-AzAccount
実行例:
- Azure Portalにログインし、検索ボックスに「Virtual Machines」を入力し、「Virtual Machines」サービスを選択してください。そして、上記のIPで該当するSession Hostを探します。
※上記のIPはプライベートIPなので、もし「プライベート IP アドレス」が表示されていない場合、「ビューの管理」をクリックし、「列の編集」を選択し、「プライベート IP アドレス」を追加し、保存すればよいです。
- 「Azure Virtual Desktop」=>「ホストプール」から該当するホストプールを選択してから、「セッションホスト」を選択します。
- 該当するSession Hostを選択してから、該当するユーザーを選択し、「ユーザーのログオフ」を選択します。
まとめ
今回は、「AVDの “Days2Operation (運用段階)” の作業など」について説明いたしました。
次回は、最終回AVDの統括編としてクラウド導入戦略などについて説明いたします。
~~~~~ ”Azure Virtual Desktop(AVD)を活用してみよう”【全5回】シリーズ ~~~~~
☆【第1回】AVDを活用し、DXを進める(基礎編)
☆【第2回】AVDを活用し、DXを進める(構築編-クラウド オンリー)~前編~
☆【第2回】AVDを活用し、DXを進める(構築編-クラウド オンリー)~後編~
☆【第3回】AVDを活用し、DXを進める(構築編-ハイブリッドクラウド)~前編~
☆【第3回】AVDを活用し、DXを進める(構築編-ハイブリッドクラウド)~後編~
☆【第4回】AVDを活用し、DXを進める(運用編)
☆【第5回】AVDを活用し、DXを進める(統括編)