AWSでVDI/DaaSっぽいものを
作ってみた
青柳英明
JAWS-UG福岡 in AWS Cloud Roadshow 2016
2016/10/6 LT大会
自己紹介
青柳 英明
職業: インフラSE(オンプレOnly)
経歴: アプリケーション開発 … 3年
インフラエンジニア … 15年
・サーバ/クライアント (Windows中心)
・オンプレ仮想化 (VMware、Hyper-V)
・現在はVDI(デスクトップ仮想化)をやってます
AWS歴: 半年ちょっと
自己紹介
ワタシの事ですやん(笑)
VDI (デスクトップ仮想化) とは?
「仮想サーバ」 … 仮想環境でサーバを動かす
「仮想デスクトップ」 … 仮想環境でデスクトップ(PC)を動かす
ただし、単に仮想マシンをリモートで利用する、というだけでは
「VDI」 とは言い難いです。
説明になってない…
・ ユーザー管理、ユーザー認証
・ 仮想デスクトップ (仮想マシン) の状態管理、制御
・ ユーザー → 仮想マシンの割り当て管理 (ブローカー)、セッション管理 etc.
という訳で、
VDI のエッセンスを盛り込んだ 「っぽいもの」 を
AWS で作ってみました!
システム構成EC2
S3バケット
Lambda
AWS Directory Service(Simple AD)
利用者仮想デスクトップ(仮想マシン群)
AMIイメージ
HTML+
JavaScript(AWS SDK)
接続メニュー(静的Webページ)
監視起動・停止
ユーザー認証
リモートデスクトップ接続
RDPファイルダウンロード
接続先選択
インスタンス状態取得
フロント動作 (利用イメージ)
選択した仮想マシンのRDPファイル(※)が
ダウンロードされるので、「開く」をクリック
(※ リモートデスクトップ接続ファイル)
仮想マシンを選択して
「接続」をクリック
Webブラウザで「接続メニュー」へアクセス
フロント動作 (利用イメージ)
ユーザー名/パスワードを入力
仮想デスクトップ (仮想マシン) へ接続
仮想マシンの電源制御について
仮想マシンの利用率が低い場合…
使われていないのに起動しているのは「無駄」
・ オンプレ → 消費電力的に・ クラウド → 利用料金的に
仮想マシンの電源制御について
かと言って、使われていない仮想マシンを停止すると…
仮想マシンの電源制御について
かと言って、使われていない仮想マシンを停止すると…
接続要求を受けてから起動をするのでは
レスポンスが悪くなってしまう!
仮想マシンの電源制御について
ここでは、3台を 「待機状態」 にしています
そこで、常に一定台数の仮想マシンを起動しておくことで
「利用可能な仮想マシン」 を確保します
仮想マシンの電源制御について
利用者数が増えたら、
その分だけ裏で仮想マシンを起動して…
そこで、常に一定台数の仮想マシンを起動しておくことで
「利用可能な仮想マシン」 を確保します
仮想マシンの電源制御について
利用者数が減ったら、
その分だけ裏で仮想マシンを停止します
そこで、常に一定台数の仮想マシンを起動しておくことで
「利用可能な仮想マシン」 を確保します
ちなみに
・ 「使用中」 (=起動していて、かつ、誰かがログオンしている)
AWS SDK から 「仮想マシンのログオン中ユーザー」 を取得する方法がどうしても分からず困りました。
苦肉の策で、仮想マシンのログオン/ログオフスクリプトで AWS Tools for PowerShell をキックし、
・ ログオン時: 自分自身の EC2 インスタンスの 「タグ」 にユーザー名を書き込む
→ Lambda 関数からは、このタグの値を参照することでログオン中ユーザーを把握する
・ ログオフ時: EC2 インスタンスのタグに設定されたユーザー名を消去する
という訳の分からない処理で何とかしましたが… 良い方法があれば教えて下さい m(__)m
・ 「使用可能」 (=起動していて、誰もログオンしていない)
・ 「停止」 (=起動していない)
今回のシステムでは、仮想マシンの状態は以下の3通りで管理する必要がありますが、
結論AWS には
「Amazon WorkSpaces」 という
ちゃんとした VDI/DaaS のサービスがあるので、
良い子はそちらを使いましょう!
Amazon WorkSpaces