この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
どうも、コンサルティング部の後藤です。
コロナ禍の影響により様々な業界でリモートワーク化が進んでいる中、ハイエンドなグラフィックが処理できる環境が調達できず、リモートワーク化が進められない。。なんてことありませんでしょうか。今回はそんな需要にピッタリなNICE DCVをEC2上に導入してみました。
NICE DCVとは?
イタリアのNICE社によって開発されたリモート可視化ソフトウェア NICE Desktop Cloud Visualizationです。NICE DCVはHPC向け製品となっており、ハイエンドグラフィック向けに最適化された2D/3DのGUIアプリケーションに対して高速かつ快適なリモートアクセスを実現するソフトウェアです。
2016年、AWSはこのNICE社を買収したことによりAWS上では無償で利用できるようになっています。
NICE DCVの機能
NICE DCVには以下のような機能があります。
・Windows 及び Linux で3Dアプリケーションへの高パフォーマンスなリモートアクセス
・最大4台のクライアントモニタマルチスクリーン
・USB、スマートカード、およびスタイラスのリモート化をサポート
・H.264 ベースのエンコーディングをサポート
・OpenGLおよびDirectXアプリケーションに対する完全なGPUアクセラレーション
AWSにはリモート接続可能なサービスとして、WorkSpacesやAppStream2.0がありますが、NICE DCVを活用することでゲーム開発に必要なUSBデバイス等もAWS上のインスタンスで利用する事が可能です。
NICE DCVサーバ構築
EC2作成
まず、NICE DCVを導入するEC2を作成します。
使用するAMIを選択する際にNICE DCV
と検索するとAWS MarketPlaceに既にNICE DCV導入済みのAMIが見つかります。
ですが、今回はこちらを使用せず、Windows Server 2019でEC2を作成していきます。NICE DCV導入にはOS等に最小要件がありますので、導入の際には以下のドキュメントを一度確認してみてください。
NICE DCVを導入するEC2のインスタンスタイプはG3
またはG4
が推奨されているため、今回はg4dn.xlarge
で構築していきます。
その他のインスタンスタイプでも導入することは可能ですが、画像解像度に制限が生ずる可能性があったり、事前に導入しておくドライバーが異なります。詳しくは以下のドキュメントを確認してみてください。
Amazon EC2 インスタンス上の Windows NICE DCV サーバーの前提条件
また、今回作成するEC2はパブリックサブネット
で構築します。EC2でNICE DCVを利用する時、ライセンスサーバは必要ありませんが、定期的にS3バケットに接続してライセンスの確認を行っています。そのためプライベートサブネット
に作成する場合はVPCエンドポイントで接続できるよう、追加の設定が必要になります。
次にセキュリティグループを設定します。Windowsサーバを利用するためRDP用の3389
ポート、NICE DCVはリモートクライアントと通信に8443
ポートを使用するため、接続元のIPアドレスを許可するよう設定します。
IAM権限の設定
前途でも記述している通り、ライセンスの確認のため定期的にS3に接続を行います。また、今回はNVIDIAドライバーもS3から取得するため、その権限をIAMロールで付与します。権限の内容は以下の通りです。
### NICE DCVライセンス確認用IAMポリシー
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::dcv-license.ap-northeast-1/*"
※ap-northeast-1部分はリージョンに合わせ適宜変更
}
]
}
### NVIDIAドライバー取得用IAMポリシー
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:Get*",
"s3:List*"
],
"Resource": [
"arn:aws:s3:::nvidia-gaming/*",
"arn:aws:s3:::nvidia-gaming",
"arn:aws:s3:::ec2-windows-nvidia-drivers/*",
"arn:aws:s3:::ec2-windows-nvidia-drivers"
]
}
]
}
NVIDIAのDriver導入
以下のコマンドをPowershellで実行してNVIDIA GRIDドライバーもしくはGamingドライバー(g4インスタンスのみ利用可能)を取得します。上記権限の設定が上手く行っていれば、取得することが出来ます。
### NVIDIA GRID Driver用
$Bucket = "ec2-windows-nvidia-drivers"
$KeyPrefix = "latest"
$LocalPath = "$home\Desktop\NVIDIA"
$Objects = Get-S3Object -BucketName $Bucket -KeyPrefix $KeyPrefix -Region us-east-1
foreach ($Object in $Objects) {
$LocalFileName = $Object.Key
if ($LocalFileName -ne '' -and $Object.Size -ne 0) {
$LocalFilePath = Join-Path $LocalPath $LocalFileName
Copy-S3Object -BucketName $Bucket -Key $Object.Key -LocalFile $LocalFilePath -Region us-east-1
}
}
### NVIDIA Gaming Driver用
$Bucket = "nvidia-gaming"
$KeyPrefix = "windows/latest"
$LocalPath = "$home\Desktop\NVIDIA"
$Objects = Get-S3Object -BucketName $Bucket -KeyPrefix $KeyPrefix -Region us-east-1
foreach ($Object in $Objects) {
$LocalFileName = $Object.Key
if ($LocalFileName -ne '' -and $Object.Size -ne 0) {
$LocalFilePath = Join-Path $LocalPath $LocalFileName
Copy-S3Object -BucketName $Bucket -Key $Object.Key -LocalFile $LocalFilePath -Region us-east-1
}
}
上記コマンド以外にも、NVIDIAの公式サイトより任意のドライバーバージョンを取得して導入する事も可能です。
ドライバーが取得出来たら導入していきます。今回はGRIDドライバーを使用していきます。2012R2用
と2016/2019用
があるため、OSにあったものを選択します。
NICE DCVの導入
NICE DCVの公式サイトより、NICE DCVサーバのインストーラーをダウンロードします。各OSによってインストーラーが異なるため、今回はWindowsのものを使用します。
nice-dcv-server-x64-Release-xxxx.x-xxxx.msi
がダウンロード出来たら実行してインストールを行います。
Drivers Selectionでは必要なデバイスドライバーを指定します。USBデバイスを使用する場合はUSB Device remotization
を選択し、Will be installed on local hard drive
を選択します。
DCV Service ConfigurationではFirewallの設定やNICE DCVサーバの起動等を自動/手動で行うかを指定します。今回は自動で行うため、チェックを付けずにせ設定しました。
DCV Session Management Configurationではセッションを自動/手動での作成を選択できます。セッションが無いと接続が出来ないため、今回は自動で作成しました。
主な選択肢は上記になります。最後にInstall
を選択して完了です。
Windowsサーバの場合、NICE DCV ServerのサービスはMicrosoft管理コンソールのサービススナップインで管理されています。インストール時に自動起動を行うよう設定したため、既に起動されていることが確認できます。
NICE DCVに接続してみる
NICE DCV Serverに接続する方法として、今回はNICE DCV Clientとブラウザからの接続を試してみました。
NICE DCV Clientで接続
NICE DCV Server同様、ClientもNICE DCVの公式サイトよりインストーラーをダウンロード出来ます。NICE DCV Serverに接続するローカル端末に導入しましょう。
NICE DCV Clientを起動すると、NICE DCV Serverの接続先を問われるので入力します。
次にログインに必要なユーザ名、パスワードを求められます。デフォルトではユーザ名がAdministrator、パスワードはキーペアで確認出来るものを使用してください。
ログインに成功すると、NICE DCV ClientでWindowsに接続することが出来ました。
ブラウザで接続
ブラウザのURLに以下のように入力します。
https://[NICE DCV Server IPaddress]:8443
すると、NICE DCV Client同様ログインを求められるため、先程と同様のユーザ名、パスワードを入力します。
ログインに成功すると、ブラウザからWindowsに接続することが出来ました。
まとめ
如何だったでしょうか。NICE DCV Serverの導入から接続確認までを行ってみました。今後、このサーバを利用してNICE DCVならではの機能(USB接続やマルチモニター等)を試していきたいと思います。 この記事が何方かのお役に立てば幸いです。