LoginSignup
5
2

More than 1 year has passed since last update.

Azure VM で ET ロボコン EV3/シミュレータ開発環境を構築しよう (準備編)

Last updated at Posted at 2020-07-27

「技術教育の機会を提供する」という歩みを止めてはいけない...ETロボコン2020オンライン教育&ヴァーチャル競技会でただいま開催中です。

参考:ETロボコン2020開催概要 | ETロボコン

ETロボコン2020 シミュレータ競技
※クリックすると、YouTube ページが開きます。

さて、先日シミュレータ開発環境 (評価版) が公開されました。

参考:シミュレータ開発環境(評価版)を公開しました。 | ETロボコン
参考:GitHub - ETrobocon/etrobo: ETロボコンのEV3/シミュレータ双方に対応する開発環境

この ET ロボコン EV3/シミュレータ開発環境 ( 「etrobo環境」と呼ぶ ) をお持ちの PC に環境を構築するのも良いですが、ここでは Azure Windows 仮想マシン (VM : Virtual Machines) に構築してみたいと思います。

なお、以下のように 3 つに分けて投稿します。

Azure ってなに?

そもそも Azure って何ですか? Azure 仮想マシンって何ですか? Azure 仮想マシンってどうやって作るの?という方は、以下で紹介する Microsoft Learn のラーニング パスやモジュールで学びましょう (無料で学べます)。ハンズオンも含まれています (無料で演習できます) ので、ただドキュメントを読むだけより理解しやすいかと思います。なお、ハンズオンを行うためには、Microsoft アカウントが必要です (無料で作れます)。

Azure の基礎ラーニング パス - Microsoft Learn
Azure Virtual Machines の概要 - Microsoft Learn
Azure で Windows 仮想マシンを作成する - Microsoft Learn
Azure で Linux 仮想マシンを作成する - Microsoft Learn

以下より、Azure や仮想マシンをご理解いただいている前提で説明します。

仮想マシンのタイプとサイズ

Azure にはたくさんの種類の VM イメージをさまざまなサイズで提供しています。

Type Size Description
汎用 B, Dsv3, Dv3, Dasv4, Dav4, DSv2, Dv2, Av2, DC, DCv2, Dv4, Dsv4, Ddv4, Ddsv4 バランスのとれた CPU 対メモリ比。テストと開発、小規模から中規模のデータベース、および低から中程度のトラフィックの Web サーバーに最適。
コンピューティング最適化 Fsv2 高い CPU 対メモリ比。中トラフィックの Web サーバー、ネットワークアプライアンス、バッチプロセス、およびアプリケーションサーバーに適している。
メモリ最適化 Esv3, Ev3, Easv4, Eav4, Ev4, Esv4, Edv4, Edsv4, Mv2, M, DSv2, Dv2 高いメモリ対 CPU 比。RDB サーバー、中規模から大規模のキャッシュ、インメモリ分析に最適。
ストレージ最適化 Lsv2 ビッグデータ、SQL、NoSQL DB、データウェアハウジング、および大規模なトランザクション DB に最適な高いディスクスループットと IO。
GPU NC, NCv2, NCv3, ND, NDv2 (Preview), NV, NVv3, NVv4 負荷の高いグラフィックレンダリングとビデオ編集、およびディープラーニングによるモデルトレーニングと推論 (ND) を対象とした専用の仮想マシン。単一または複数の GPU で利用できる。
ハイ パフォーマンス コンピューティング HB, HBv2, HC, H 高スループットネットワークインターフェイス (RDMA) のオプションを備えた、最も高速かつ強力な CPU 仮想マシン。

利用可能な VM イメージのタイプおよびサイズについては、以下のページをご参照ください。

参照:Azure の仮想マシンのサイズ - Azure Virtual Machines

etrobo 環境に最適な仮想マシンは?

ETロボコン2020競技規約には、以下のように書かれています。

競技は描画処理が 60 FPS (frames per second)、TimeScale 1 の動作環境で実施される。描画処理が低い PC で競技環境を動作させた結果は当日の競技と結果が変わる場合があることに注意すること。

よって、GPU が搭載されている仮想マシンが望ましいですね。

参照:GPU 最適化済み仮想マシンのサイズ - Azure Virtual Machines

さらにその中でも、「リモートの視覚化、ストリーミング、ゲーム、エンコーディング、および OpenGL や DirectX などのフレームワークを使用する VDI シナリオ用に最適化および設計され」た NV/NVv3/NVv4 シリーズが候補となります。

スペック

各 NV シリーズに搭載される CPU と GPU は以下のとおりです。NV と NVv3 シリーズの仮想マシンには「NVIDIA Tesla M60」、NVv4 シリーズの仮想マシンには「AMD Radeon Instinct MI25」 が搭載されています。

Type CPU GPU
NV Intel Xeon E5-2690 v3 (Haswell) 2.60 GHz NVIDIA Tesla M60
NVv3 Intel E5-2690 v4 (Broadwell) 2.60 GHz NVIDIA Tesla M60
NVv4 AMD EPYC 7V12 (Rome) 2.25 GHz AMD Radeon Instinct MI25

GPU が搭載された仮想マシンは、高スペックで料金もとってもお高いです。たとえば、Standard_NV6 の Windows VM (東日本) には、「56 GiB」という大容量のメモリが載っています。また、この仮想マシンを 1 か月間 (※1) ずっと起動しっぱなしすると、仮想マシンの料金だけ (※2) でも「129,181円」くらいかかります!ただ、課金は秒単位で発生するので、節電・節水と同じように使わない時は必ず電源 OFF するように注意しましょう。
※1 : 料金は「1 か月間 = 730 時間」として算出しています。
※2 : その他に、ディスクにかかる料金やデータ転送にかかる料金などもあります。

以下より、各 NV シリーズのサイズと簡単なスペックを記載します。
また、東日本リージョン (Windows VM) の従量課金制プランの料金も併せて載せてあります。他のリージョンの料金を調べたい場合は、以下の料金ページをご覧ください。
※対象リージョンで対象サービスが利用できるかも確認してください。(すべてのリージョンで利用できるわけではありません)

参考:リージョン別の利用可能な製品
参考:Windows Virtual Machines の料金
参考:Linux Virtual Machines の料金

NV シリーズ

Size vCPU RAM(GiB) GPU GPU RAM(GiB) 料金(時間)
Standard_NV6 6 56 1 8 ¥176.96
Standard_NV12 12 112 2 16 ¥353.92
Standard_NV24 24 224 4 32 ¥707.728

※ 1 GPU = M60 カードの 1/2 相当

なお、NV シリーズと同じ構成で料金がちょっとお安い「NV Promo シリーズ (期間限定)」もあります。
※2021/05/25 修正:NV Promo シリーズは 2020年10月31日をもって終了しました。

Size vCPU RAM(GiB) GPU GPU RAM(GiB) 料金(時間)
Standard NV6_Promo 6 56 1 8 ¥106.1760
Standard NV12_Promo 12 112 2 16 ¥212.3520
Standard NV24_Promo 24 224 4 32 ¥424.592

※ 1 GPU = M60 カードの 1/2 相当

NV シリーズの詳細なスペックは、以下のページをご覧ください。

参考: NV シリーズ - Azure Virtual Machines

NVv3 シリーズ

Size vCPU RAM(GiB) GPU GPU RAM(GiB) 料金(時間)
Standard_NV12s_v3 12 112 1 8 ¥176.96
Standard_NV24s_v3 24 224 2 16 ¥353.92
Standard_NV48s_v3 48 448 4 32 ¥707.84

※1 GPU = M60 カードの 1/2 相当

NVv3 シリーズの詳細なスペックは、以下のページをご覧ください。

NVv3 シリーズ - Azure Virtual Machines

NVv4 シリーズ

Size vCPU RAM(GiB) GPU GPU RAM(GiB) 料金(時間)
Standard_NV4as_v4 4 14 1/8 2 ¥37.856
Standard_NV8as_v4 8 28 1/4 4 ¥75.712
Standard_NV16as_v4 16 56 1/2 8 ¥151.312
Standard_NV32as_v4 32 112 1 16 ¥302.736

※現在 Windows OS のみサポート

NVv4 シリーズの詳細なスペックは、以下のページをご覧ください。

NVv4 シリーズ - Azure Virtual Machines

Windows 仮想マシンを作ろう

それでは、etrobo 環境を構築するための仮想マシンを構築していきます。
これから作る環境のネットワーク構成は下図のとおりです。

image.png

そして上図を実現するために、下図のような Azure リソース構成で環境を構築していきます。

image.png

カンタンに手順を説明すると、

  • これから作るリソースを保持するリソース グループ (RG) を作成。このリソース グループにすべてのリソースを格納していく。
  • 仮想マシンを配置する仮想ネットワーク (VNET) を作成。そしてサブネットをひとつ用意して、そこに対してアクセス制御を施すためのネットワーク セキュリティ グループ (NSG) を関連付ける。
  • 仮想マシンに関連付けるパブリック IP アドレスを作成。
  • 仮想マシン (Windows 10) を作成。
  • 仮想マシンにリモートデスクトップ接続して、ゲスト OS 上のセットアップ (etrobo環境の構築)。

となります。

今回は、可用性や冗長性などシステム構成を深く考えず環境を構築していきます。
本格的に複数の仮想マシンを構成したシステムを構築する場合は、ストレージ、ネットワーク、セキュリティなどを設計してから構築しましょう。(失敗してもすぐに作り直せるので、ガッチガチな設計でなくても良いかな)

以下より、ひとつずつ作成する手順を説明します。

リソース グループを作成

リソース グループ (RG : Resource Group) は、関連するリソース (VM や VNET など) を保持するコンテナーです。グループ管理したい (同じライフサイクルを共有する) リソースを含めます。

RG は、以下のドキュメントの手順に従って作成します。

参考:Azure portal を使用して Azure Resource Manager リソース グループを管理する > リソース グループを作成する

設定項目 設定値
リソース グループ 適当な名前
場所 適当なリージョン

仮想ネットワークを作成

仮想ネットワーク (VNET : Virtual Network) は、Azure 内のユーザー独自のネットワークを表すものです。主に 仮想マシン (VM : Virtual Machines) が他のリソースと安全に通信するために使用します。

VNET は、以下のドキュメントの手順に従って作成します。

参考:仮想ネットワークの作成、変更、削除 > 仮想ネットワークの作成

タブ 設定項目 設定値
基本 リソース グループ 先に作成した RG
基本 インスタンスの詳細 > 名前 「et-sim-vnet」
基本 地域 NV/NVv3/NVv4 の VM が利用可能なリージョン
IPアドレス IPv4 アドレス空間 「10.0.0.0/24」
IPアドレス サブネット名 「default-subnet」
IPアドレス サブネットのアドレス範囲 「10.0.0.0/27」

ネットワーク セキュリティ グループを作成

ネットワーク セキュリティ グループ (NSG : Network Security Group) は、VNET のサブネット間、VM 間のネットワークトラフィックを制御します。送受信されるトラフィックを定義された規則に従って評価し、そのトラフィックを許可または拒否することができます。

NSG は、以下のドキュメントの手順に従って作成します。

参考:ネットワーク セキュリティ グループの作成、変更、削除 > ネットワーク セキュリティ グループを操作する > ネットワーク セキュリティ グループの作成

タブ 設定項目 設定値
基本 リソース グループ 先に作成した RG
基本 インスタンスの詳細 > 名前 適当な名前
基本 インスタンスの詳細 > 地域 先に作成した VNET と同じリージョン

今回は、限定した場所 (自宅など) からのリモートデスクトップ接続を許可するルールを定義します。このルールを「受信セキュリティ規則」に追加します。

受信セキュリティ規則は、以下のドキュメントの手順に従って作成します。

参考:ネットワーク セキュリティ グループの作成、変更、削除 > セキュリティ規則を操作する > セキュリティ規則を作成する

設定項目 設定値
ソース 「IP Address」
ソース IP アドレス/CIDR 範囲 接続元 IP アドレス ※確認くんで接続元 IP アドレスを確認しましょう
ソース ポート範囲 「* (アスタリスク)」
宛先 「Any」
宛先ポート範囲 「3389」
プロトコル 「TCP」
アクション 「許可」
優先度 「100」※適当な値
名前 適当な名前 ※わかりやすい名前
説明 適当な説明 ※任意

最後に、この NSG を先に作成した VNET「et-sim-vnet」のサブネット「default-subnet」に関連付けます。

NSG を VNET のサブネットへの関連付けの手順は、以下のドキュメントをご覧ください。

参考:仮想ネットワーク サブネットの追加、変更、削除 > サブネット設定の変更

設定項目 設定値
ネットワーク セキュリティ グループ この NSG

パブリック IP アドレスを作成

パブリック IP アドレスは、Azure リソース (ここでは仮想マシン) がインターネットと通信できるようにするために割り当てる動的または静的な IP アドレスです。

今回は、仮想マシンへのアクセスはインターネット経由で行うので、仮想マシンにパブリック IP アドレスを割り当てる必要があります。

パブリック IP アドレスは、以下のドキュメントの手順に従って作成します。

参考:パブリック IP アドレスの作成、変更、削除 > パブリック IP アドレスの作成

設定項目 設定値
IP バージョン 「IPv4」
SKU 「Basic」
IPv4 IP アドレスの構成 > 名前 適当な名前
IPv4 IP アドレスの構成 > IP アドレスの割り当て 「動的」
IPv4 IP アドレスの構成 > アイドル タイムアウト 「4 分」
IPv4 IP アドレスの構成 > DNS 名ラベル 適当な DNS 名ラベル
リソース グループ 先に作成した RG
場所 先に作成した VNET と同じリージョン

仮想マシンを作成

Windows 10 の仮想マシン (VM : Virtual Machines) を以下の手順に従って作成します。

1.Azure ポータルにサインインします。
2.[リソースの作成] をクリックします。

image.png

3.[新規作成] にて、[検索テキストボックス] に「Windows 10」と入力して、ドロップダウンリストから「Microsoft Windows 10」を選択します。

image.png

4.[プラン選択] にて、[プランを選択する] ドロップダウンリストから、以下の値を選択します。
※間違えないように!

  • NV, NVv3 (GPU = NVIDIA) の VM を作成する場合...「Windows 10 Pro, Version 1909」を選択
  • NVv4 (GPU = AMD) の VM を作成する場合...「Windows 10 Pro, Version 1809」を選択

image.png

5.[仮想マシンの作成] > [基本] タブにて、各設定項目に以下のとおりの値を設定します。

タブ 設定項目 設定値
基本 リソース グループ 先に作成した RG
基本 インスタンスの詳細 > 仮想マシン名 「et-sim01-vm」※適当な名前
基本 インスタンスの詳細 > 地域 先に作成した VNET と同じリージョン
基本 インスタンスの詳細 > 可用性オプション 「インフラストラクチャ冗長は必要ありません」
基本 インスタンスの詳細 > イメージ NV, NVv3 (GPU = NVIDIA) の VM を作成する場合「Windows 10 Pro, Version 1909」を選択、NVv4 (GPU = AMD) の VM を作成する場合「Windows 10 Pro, Version 1809」を選択
基本 インスタンスの詳細 > Azure スポット インスタンス 「いいえ」
基本 インスタンスの詳細 > サイズ NV/NV Promo/NVv3/NVv4 のいずれかのサイズ
基本 管理者アカウント > ユーザー名 適当なユーザー名 ※「administrator」は NG
基本 管理者アカウント > パスワード (パスワードの確認) 適当なパスワード
基本 受信ポートの規則 > パブリック受信ポート 「なし」
基本 受信ポートの規則 > 受信ポートの選択 未選択

image.png

6.[仮想マシンの作成] > [ネットワーク] タブにて、各設定項目に以下のとおりの値を設定します。

タブ 設定項目 設定値
ネットワーク ネットワーク インターフェイス > 仮想ネットワーク 先に作成した VNET「et-sim-vnet」を選択
ネットワーク ネットワーク インターフェイス > サブネット 先に作成した VNET のサブネット「default-subnet」を選択
ネットワーク ネットワーク インターフェイス > パブリック IP 先に作成したパブリック IP アドレス「et-sim01-vm-ip」を選択
ネットワーク ネットワーク インターフェイス > NIC ネットワーク セキュリティ グループ 「なし」※サブネットに関連付けているため不要
ネットワーク ネットワーク インターフェイス > 高速ネットワーク 「オフ」
ネットワーク 負荷分散 > この仮想マシンを既存の負荷分散ソリューションの後ろに配置しますか? 「いいえ」

image.png

入力後、下部にある [確認および作成] をクリックします。

7.[仮想マシンの作成] > [確認および作成] タブにて、「検証が成功しました」というメッセージを確認したら、[作成] をクリックします。

image.png

8.デプロイが完了するまで、しばらく待ちます。

image.png

9.デプロイが完了しました。

image.png

10.リソース グループには、仮想マシンを構成するリソースが入っています。

image.png

リモートデスクトップ接続する

以下の手順に従ってリモートデスクトップ接続します。

参考:Windows が実行されている Azure 仮想マシンに接続してサインオンする方法 > 仮想マシンへの接続

ゲスト OS の言語が「英語」、タイムゾーンは「UTC」になっています (どのリージョンでも同じ)。必要に応じて OS を日本語化しましょう。

参考:AzureVM(Windows10)の日本語化

主な Tips

今後仮想マシンを利用する上で覚えておきたい Tips を紹介します。

リモートデスクトップ接続できるか確認

仮想マシンを開始や再起動した後、リモートデスクトップ接続できる状態になっているかは、Azure ポータルで確認できます。

参考:ブート診断を使用して、Azure 内の仮想マシンをトラブルシューティングする方法

Azure ポータル にサインインして、対象の仮想マシンを開きます。
仮想マシンのメニューから、[サポート + トラブルシューティング] カテゴリにある [ブート診断] をクリックします。
※既定の設定のまま仮想マシンを作成していれば、この「ブート診断」機能は有効になっています。

下図のように、現在のゲスト OS 上の画面 (スクリーンショット) を確認することができます。
このスクリーンショットが「ロック画面」になっていれば、リモートデスクトップ接続できます。

image.png

使わない時は必ず電源 OFF

仮想マシン上のゲスト OS からシャットダウンを行う (いつものように Windows のシャットダウンする) と、OS のシャットダウンとともに仮想マシンは停止され、状態が「停止」の表示となりますが、この状態では課金が引き続き発生しています。課金が発生しない状態とは「停止済み (割り当て解除)」です。

参考:仮想マシンのライフサイクルと状態

仮想マシンの状態を「停止済み (割り当て解除)」にするには、Azure ポータルで対象の仮想マシンを開き、上部にある [停止] をクリックします。

image.png

「パブリック IP アドレスを予約しますか」と問われるので、ここにはチェックを付けずに [OK] をクリックします。

image.png

しばらくすると、仮想マシンが停止した旨が通知され、仮想マシンの状態が「停止済み (割り当て解除)」となります。この状態で課金は発生しなくなります。

image.png

準備は、以上となります。
次回から「etrobo 環境」の事前準備とセットアップを行います。

※当投稿は、ET ロボコン実行委員会による公式コンテンツではありません。

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2