
非GPUインスタンスのEC2(Ubuntu)へNICE DCVでリモート接続設定
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
AWS ParallelClusterや、AWS Batchで計算したデータをクラウド上でデータを確認、可視化したいことはないでしょうか。 理由はさまざまあるかと思います。
- クラウドからオンプレミスまでデータ転送に時間がかかる
- オンプレミスのストレージ容量にも限りがある
- ローカルに計算したデータを持ちたくない、持ってきたくない

AWS上の端末へリモート接続できれば話が早いですよね。 AWSではAmazon WorkSpaces、Amazon AppStream 2.0などの仮想デスクトップサービスが提供されています。
今回はGPUを必要としないLinuxの仮想デスクトップ端末を1台だけ用意したかったです。 NICE DCVを利用してEC2インスタスを仮想デスクトップとして利用しましたので作成方法をご紹介します。
NICE DCVとは
HPC分野のシミュレーションや可視化はハイエンドなグラフィックが必要になる場合が多くあります。その様な場合に必要となる、ハイエンドグラフィック向けに最適化された2D/3DインタラクティブアプリケーションにリモートでアクセスできるソフトウェアがNICE DCVです。
AWS Marketplace
NICE DCVインストール済みのAMIがMarketplaceで公開されています。

しかし、求める条件を満たすものはありませんでした。一からNICE DCVサーバをセットアップすることにしました。
- 非GPUインスタンスで十分、メモリは欲しい
- OSはUbuntuを使いたい
- AMDのプロセッサを使いたい
EC2インスタンスとIAMロール
パブリックサブネットにパブリックIPを持つEC2インスタンスを作成しました。

| 項目 | 値 |
|---|---|
| OS | Ubuntu 20.04 LTS |
| AMI | ubuntu/images/hvm-ssd/ubuntu-focal-20.04-amd64-server-20210223 |
| InstanceType | t3a.xlarge(vCPUs: 4, Memory: 16GB) |
セキュリティグループ
インバウンドルールはNICE DCVでTCP/UDPの8443ポートを使います。また、SSH接続して設定が必要なため22ポートも許可しています。

IAMロール
EC2インスタンスはNICE DCVのライセンス確認のため定期的にS3バケットへアクセスします。そのため、特定のS3バケットへアクセス権限のあるIAMロールを設定する必要があります。

以下のIAMポリシーを作成します。利用するリージョンに応じてap-northeast-1の箇所を変更してください。I
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::dcv-license.ap-northeast-1/*"
}
]
}
IAMロールとして対象のEC2インスタンスへ設定してください。
NICE DCVのインストール
非GPUインスタンスを対象に必要なコマンドを流し込めるようにまとめました。今回インストールしたバージョンは NICE DCV 2021.0です。
$ dcv version NICE DCV 2021.0 (r10242) Copyright (C) 2010-2021 NICE s.r.l. All rights reserved. This product is protected by copyright and licenses restricting use, copying, distribution, and decompilation.
前提条件
sudo apt update sudo apt install ubuntu-desktop -y sudo apt install gdm3 -y sudo apt upgrade -y sudo sed -i -e "s/^#WaylandEnable=false/WaylandEnable=false/g" /etc/gdm3/custom.conf sudo systemctl restart gdm3 sudo apt install mesa-utils -y
確認作業
確認コマンド1
cat /etc/X11/default-display-manager
/usr/sbin/gdm3
確認コマンド2
sudo DISPLAY=:0 XAUTHORITY=$(ps aux | grep "X.*\-auth" | grep -v grep | sed -n 's/.*-auth \([^ ]\+\).*/\1/p') glxinfo | grep -i "opengl.*version"
OpenGL core profile version string: 4.5 (Core Profile) Mesa 20.2.6 OpenGL core profile shading language version string: 4.50 OpenGL version string: 3.1 Mesa 20.2.6 OpenGL shading language version string: 1.40 OpenGL ES profile version string: OpenGL ES 3.2 Mesa 20.2.6 OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
一度再起動が必要です。
sudo reboot
インストール
mkdir nicedcv && cd $_ wget https://d1uj6qtbmh3dt5.cloudfront.net/NICE-GPG-KEY gpg --import NICE-GPG-KEY wget https://d1uj6qtbmh3dt5.cloudfront.net/2021.0/Servers/nice-dcv-2021.0-10242-ubuntu2004-x86_64.tgz tar -xvzf nice-dcv-2021.0-10242-ubuntu2004-x86_64.tgz && cd nice-dcv-2021.0-10242-ubuntu2004-x86_64 sudo apt install ./nice-dcv-server_2021.0.10242-1_amd64.ubuntu2004.deb -y sudo usermod -aG video dcv sudo apt install ./nice-xdcv_2021.0.380-1_amd64.ubuntu2004.deb -y sudo apt install ./nice-dcv-simple-external-authenticator_2021.0.134-1_amd64.ubuntu2004.deb -y
確認作業
確認コマンド1
sudo systemctl isolate multi-user.target sudo systemctl isolate graphical.target sudo DISPLAY=:0 XAUTHORITY=$(ps aux | grep "X.*\-auth" | grep -v grep | sed -n 's/.*-auth \([^ ]\+\).*/\1/p') xhost | grep "SI:localuser:dcv$"
出力結果
SI:localuser:dcv
サービス起動
sudo systemctl start dcvserver sudo systemctl enable dcvserver sudo systemctl status dcvserver
自動コンソールセッション有効化
EC2インスタンス起動時に自動的にセッションを作成する設定をします。EC2インスタンス起動の度にNICE DCVのセッションを作成しないとリモート接続ができないのです。
セッションにはコンソールセッションと、仮想セッションの2種類あります。コンソールセッションは自動有効対応しており、仮想セッションは自動有効には対応していませんでした。
sudo sed -i -e "s/^#create-session/create-session/g" /etc/dcv/dcv.conf sudo sed -i -e "s/^#owner = \"\"/owner = \"ubuntu\"/g" /etc/dcv/dcv.conf sudo systemctl restart dcvserver
その他
NICE DCVでリモート接続するユーザにパスワードが必要です。デフォルトユーザのubuntuにはパスワードは設定されていません。ubuntuユーザでリモート接続する場合はパスワードを設定する必要があります。
sudo passwd ubuntu
NICE DCVクライアント
下記リンクからリモート接続元のOSに応じてNICE DCVクライアントをダウンロード・インストールしてください。
リモート接続
macOSのNICE DCVクライアントを例に作成したインスタンスへリモート接続します。
EC2インスタンスのパブリックIPを入力します。

ユーザ名、パスワードを入力します。

ユーザ名をクリックし再度パスワードを入力します。

Ubuntuのデスクトップ画面を確認できました。

YouTubeを見てみましょう。動画はカクつくことなく音声も聞くことができます。NICE DCVのStreamingMode選択画面からトラフィックを確認できます。

画像から文字が読み取れませんでした。StreamingModeの画面部分の拡大画像です。

おわりに
MarketplaceのAMI使わなくても簡単に作成できました。ライセンス確認のためのIAMロール設定し忘れには気をつけてください。







