BYODを前提としたポストCOVID-19時代の構外構築による情教教育システム
2022/12/14
Manabu Higashidamanabu.higashida.cmc@osaka-u.ac.jp
Cybermedia Center, Osaka University

2

仮想化・コンテナ化技術と情報教育環境• Technologies:• 2006• Cygwin (1995-), MinGW (1998-)• VNC (1999-)• Dual NetBoot: Windos / Linux• 2012• User-mode Linux (2000-)• ExpEther (NEC) for Remote Desktop• Xen, QEMU (2003-)• Parallels Workstation Extreme• libvirt (2005-)• PCI passthrough: InfiniBand for HPC• libcontainer / LXC (2008-)• 2022• Docker (2013-)• Off-premises system• Kubernetes (2014-)• DaaS: Desktop as a Services

2006

20122022

2006: Dual NetBoot: Windows / Linux for HPC

4

2012: Remote Desktop by ExpEther,
PCI passthrough virtualization for HPC

2006
CPUIOH• 消費電力200ワット超(GPGPUを入れれば200ワット追加)

w/PCIeBridge
USB
Controller

Graphics
Accelerator

ExpEther
ThinClient

SATA
Controller

Network
Interface

DAS

NAS

• 要10GbEでクラスタリング

高密度ブレードサーバでホスティング可能 (1:1)

既存のプロビジョニングサー
バで遠隔ブート可能GPGPUを集約して設置可能(接続するホストを1:Nで再構成可能)

CPUUSB
Controller

Graphics
Accelerator

ExpEther

IOH
w/PCIeBridge• 消費電力10ワット• 1GbE二系統のみ

2012

Ethernet
SwitchNASSATA
Controller

Network
Interface

ExpEther

ExpEther

1GbE ×2DAS

10GbE

GPGPU
GPGPU
GPGPU
ExpEtherAzureVirtual Desktop

Osaka University

Windows 11 Enterprise
multi-session
Session-host Pool for Classroom

FSLogix
Profile Container

Scheduled scaling

Remote Desktop

Session-host Pool for Self-study

Roaming Profile
as VHDX

w/o VPN

Dynamic scalingfor Digital Literacy
OneDrive

OfficeVisual Studio
CodeLearning
Applications
for Programming

JupyterJulia

PythonPyTorchCode ServerCuPy

Kubernetes Cluster
Node Pool for Classroom

JupyterHub

Scheduled scaling

Node Pool for Self-study

2022

Azure
Kubernetes Service

Dynamic scaling

GPGPU

72022-1: Dynamic scaling vs. Scheduled scaling
Azure
Virtual Desktop

Osaka University

Windows 11 Enterprise
multi-session
Session-host Pool for Classroom

Remote Desktop

FSLogix
Profile Container

Scheduled scaling

Session-host Pool for Self-study

Roaming Profile
as VHDX

w/o VPN

Dynamic scalingfor Digital Literacy
OneDrive

OfficeVisual Studio
CodeLearning
Applications
for Programming

JupyterJulia

PythonCode ServerPyTorch

CuPy

Kubernetes Cluster
Node Pool for Classroom

JupyterHub

Scheduled scaling

Node Pool for Self-study

Azure
Kubernetes Service

Dynamic scaling

GPGPU

82022-2: Roaming profile w/VHDX
Azure
Virtual Desktop

Osaka UniversityWindows 11 Enterprise
multi-session
Session-host Pool for Classroom

Remote Desktop

FSLogix
Profile Container

Scheduled scaling

Session-host Pool for Self-study

Roaming Profile
as VHDX

w/o VPN

Dynamic scalingfor Digital Literacy
OneDrive

OfficeVisual Studio
CodeLearning
Applications
for Programming

JupyterJulia

PythonCode Server

PyTorch

CuPy

Kubernetes Cluster
Node Pool for Classroom

JupyterHub

Scheduled scaling

Node Pool for Self-study

Azure
Kubernetes Service

Dynamic scaling

GPGPU

AzureVirtual Desktop

Windows 11 Enterprise
multi-session
Session-host Pool for Classroom

Remote Desktop

FSLogix
Profile Container

Scheduled scaling

Session-host Pool for Self-study

Roaming Profile
as VHDX

Dynamic scalingfor Digital Literacy
OneDrive

OfficeVisual Studio
CodeLearning
Applications
for Programming

Jupyter

Julia

Code Server

Kubernetes Cluster

PythonPyTorchCuPy

102022-3: Additional value for BYOD
Azure
Virtual Desktop

Osaka University

Windows 11 Enterprise
multi-session
Session-host Pool for Classroom

Remote Desktop

FSLogix
Profile Container

Scheduled scaling

Session-host Pool for Self-study

Roaming Profile
as VHDX

w/o VPN

Dynamic scalingfor Digital Literacy
OneDrive

OfficeVisual Studio
CodeLearning
Applications
for Programming

JupyterJuliaPython

Code Server

PyTorch

CuPy

Kubernetes Cluster
Node Pool for Classroom

JupyterHub

Scheduled scaling

Node Pool for Self-study

Azure
Kubernetes Service

Dynamic scaling

GPGPU

Dynamic scalingfor Digital Literacy
OneDrive

OfficeVisual Studio
CodeLearning
Applications
for Programming

JupyterJulia

PythonCode Server

PyTorch

CuPy

Kubernetes Cluster
Node Pool for Classroom

JupyterHub

Scheduled scaling

Node Pool for Self-study

Azure
Kubernetes Service

Dynamic scaling

GPGPU

AzureVirtual Desktop

Windows 11 Enterprise
multi-session
Session-host Pool for Classroom

Remote Desktop

FSLogix
Profile Container

Scheduled scaling

Session-host Pool for Self-study

Roaming Profileas VHDX

Dynamic scalingfor Digital Literacy
OneDrive

OfficeVisual Studio
CodeLearning
Applications
for Programming

Jupyter

Julia

Code Server

Kubernetes Cluster

PythonPyTorchCuPy

13

構外資源の調達に際して仕様書から抜粋• Microsoft Azure Virtual Desktop（AVD）の日本リージョンにおけるインスタンス「D2s v4：2vCPU、8GBメモリ、256GB SSD管理ディスク」に相当するリソースを年間1,125時間(=1.5時間 5限/日5日/週 15週 2期) 100台分が稼動可能であること。
• 註) 実際は「D8s v4 :8 vCPU、32 GB メモリ 」でマルチセッション運用• 「4セッション」の設定ではスケーリングしてしまって充足率が上がらない･･･• 年度毎に増量契約が可能であること (当初年間総時間からの増量については本契約とは別に追加契約を行う) 。
• また、リソース使用時間合計は年度内の合計であり、年度内でのリソース稼働は利用者の要望に応じて常に増量・減量させることを想定しており、柔軟に対応できること。
• なお、リソースを110台分以上とする場合は得点を与える。

14

ある月の課金内訳の分析(実データではありません･･･)
Managed Disk

Virtual Machine• 仮想マシン・サービスの課金対象• 「仮想マシン」そのもの• 起動中のみ課金される• 「マネージド・ディスク」• 仮想マシンのディスク・イメージを展開する領域• 停止中も課金される• 動的スケーリングによる仮想マシンの起動／停止• 大規模: 稼働率 (コスト効率) を上げるのが難しい
Managed Disk

Virtual Machine• 学生全員分の仮想マシンを確保する

15

ある月の課金内訳の分析(実データではありません･･･)
稼働率が高いManaged Disk

Virtual Machine
授業用• 仮想マシンの起動／停止に際して、スケーリングの上限を抑制• 教室 (授業) 毎に「プール」を設定• 授業時間のみ仮想マシンを起動 (きめ細かいスケジュールド・スケーリングは非標準)• 授業時間外でも仮想マシンのストレージは課金対象となる• 授業時間外 (自習) 用 の「プール」を設定• 動的スケーリング (標準)
• 利用率の見極めが必要となる
自習用
Managed Disk

Virtual Machine

稼働率が非常に高い授業用セッションホスト・プールの管理• LMS (阪大ではBlackboard) とデータ連携• 「授業時間帯」にのみ仮想マシンを起動• (懸念点) データセンターのリージョン内で起動できない可能性がある• 「 履修登録者 」 のみ接続可能• 「空き教室」を自習利用するための拡張検討が必要• 現在は「自習用」のセッションホスト・プールを別途確保している• 自習から授業への「移動」に際して再接続が必要• ローミング・プロファイルの運用性の壁

17

10月の課金内訳の分析 (右が実データ)
稼働率が高いManaged DiskManaged Disk

稼働率が非常に高い
Virtual Machine

Virtual Machine

授業用

授業用

自習用

自習用

Virtual Machine

稼働率が非常に高いManaged DiskManaged Disk

Virtual Machine

稼働率が非常に高い

18

10月の課金内訳の分析• Citrix Cloud (DaaS)• 貢献点• 仮想ホスト起動時に「マネージド・ディスク」を構成し、停止時に破棄する稼働率が非常に高い
Managed Disk

Virtual Machine

評価用リソースなど

授業用

• 問題点
• 何らかの要因で切断したセッションへの再接続ができなくなる• Idle-culler対象となる時間を短くして対処• 期待していた事• 問題が発生した際に、事象が速やかに共有され、適切にエスカレーションされ、解決の道筋が示される
プロファイルなど共有用ストレージ

Managed Disk

自習用
Virtual Machine

稼働率が非常に高い192022-2: Roaming profile w/VHDX
Azure
Virtual DesktopOsaka University

Windows 11 Enterprise
multi-session
Session-host Pool for Classroom

Remote Desktop

FSLogix
Profile Container

Scheduled scaling

Session-host Pool for Self-study

Roaming Profileas VHDX

w/o VPN

Dynamic scalingfor Digital Literacy
OneDrive

OfficeVisual Studio
CodeLearning
Applications
for Programming

JupyterJulia

PythonCode Server

PyTorch

CuPy

Kubernetes Cluster
Node Pool for Classroom

JupyterHub

Scheduled scaling

Node Pool for Self-study

Azure
Kubernetes Service

Dynamic scaling

GPGPU

20

FSLogix profile container w/VHDX• 起動は極めて速い• 仕様書での要求:• セッション・ホストへのクライアントの接続要求・ユーザ認証後、仮想デスクトップ・サービスが利用可能になるまで概ね60秒以内であること。60秒を超える場合は管理者に報告し、授業に支障をきたさないよう代替対応が可能であること。

• 重複ログインはできない• 自習用セッションホスト・プールに接続したまま授業用セッションホスト・プールに接続しようとすると競合が起こる･･･• 競合エラーによる中断• 一時プロファイルによる継続• Citrixのポリシーとの整合性が悪い･･･• vs. Citrix profile container• 一時プロファイルの書き戻し!?

21

クリックから20秒でメニュー応答
OneDriveの接続完了まで40秒

222022-3: Additional value for BYOD
Azure
Virtual Desktop

Osaka University

Windows 11 Enterprise
multi-session
Session-host Pool for Classroom

Remote Desktop

FSLogix
Profile Container

Scheduled scaling

Session-host Pool for Self-study

Roaming Profileas VHDX

w/o VPN

Dynamic scalingfor Digital Literacy
OneDrive

OfficeVisual Studio
CodeLearning
Applications
for Programming

JupyterJulia

PythonCode Server

PyTorch

CuPy

Kubernetes Cluster
Node Pool for Classroom

JupyterHub

Scheduled scaling

Node Pool for Self-study

Azure
Kubernetes Service

Dynamic scaling

GPGPU

Dynamic scalingfor Digital Literacy
OneDrive

OfficeVisual Studio
CodeLearning
Applications
for Programming

JupyterJulia

PythonCode Server

PyTorch

CuPy

Kubernetes Cluster
Node Pool for Classroom

JupyterHub

Scheduled scaling

Node Pool for Self-study

Azure
Kubernetes Service

Dynamic scaling

GPGPU

24

10月の課金内訳の分析
稼働率が非常に高いManaged Disk

Virtual Machine

評価用リソースなど

授業用

プロファイルなど共有用ストレージ

Managed Disk

自習用
Virtual Machine

稼働率が非常に高いSummary on the BYOD era• (個人的には) 発想の逆転• 固定的なハードウェア資源を (遊休時に) 活用する
• 浮動的なハードウェア資源を必要時に確保し、付加価値のあるサービスを提供する• COVID-19であらためて要・不要と判断したもの• VPN (Azure ExpressRoute) によるブリッジは不要• BYODは教室に持ち込まれるとは限らない• 教室のセンターモニターは不要• 遠隔会議ソフトウェアでBYODに配信• 教室のモニタはBYODのセカンダリ・モニタとして活用• 教室の音響システムは重要• 天井埋め込みのアレイ型スピーカー・マイクを設置し、教室内外の受講生との均等な対話を支援追加の一言･･･• Windows 11 Enterprise Multi-session• ライセンス認証が必要なソフトウェアの運用には検証が必要• WSL (Windows Subsystem for Linux)• 現時点では、Linuxを導入するストレージ領域を事前に共有化できないため、追加のストレージ領域が必要となる• 導入するランタイム・ライブラリを減らしたい･･･• MSYS2/Cygwin (cygwin/libstdc++)• MSYS2/MinGW (msvcrt/libstdc++)• Anaconda3 (msvcrt)• Clang (ucrt/libc++)

35

追加の二言･･･• マイクロソフト・アカウントとの認証連携について、日本の大学は整合性を取れるように構成を再検討すべき• 多要素認証のための点数が取れていません• 独自仕様でもありません

2001

2006

Kerberos (ActiveDirectory) によるシングルサインオン

2011
HPCI認証基盤

Shibbolethを介したPKI連携

<a target="_blank" href="https://icons8.com/icon/118520/icons8">Icons8</a> icon by <a target="_blank" href="https://icons8.com">Icons8</a>