なんちゃって仮想デスクトップ予約システム
引き続き Linux デスクトップネタです。
LTSP は、物理サーバー上の Linux Desktop をマルチユーザーで共有するタイプですが、もう一つ、VMware/Xen などの仮想マシン上に Linux を導入して、1 ユーザー・1 仮想マシンで、占有使用するパターンも考えられます。
Windows デスクトップに関しては、Citrix XenDesktop / VMware 仮想デスクトップインフラストラクチャ(VDI)などの商用製品ソリューションがあるのですが、Linux デスクトップにはまだ対応していません。仮想マシンのゲスト OS に Linux を導入するのは簡単ですが、Desktop のユーザーへの動的な割りあてなどの管理機能(いわゆる Connection Broaker ですね)が、Linux ゲストに対応していないのが理由です。(海外物では、Virtual Bridges などの製品があるのですが、日本では販売していませんね・・・。)
誰か OSS で作ってないかと思って探したのですが、見付かっていません。ご存じの方、ぜひ、教えてください。
とは言え、ぶっちゃけ、Linux 環境であれば、Web アプリケーションで手作りするのも難しくはない気がします。
というわけで、日曜大工しました。。。。(あくまで日曜大工です。お約束通りエラーハンドリングしていません。足りない機能はいっぱいあります。)
作り方
1.サーバー環境の用意
IBM BladeCenter のブレード 3 枚を用意して、2 枚に SLES10SP1 の Xen 環境、1 枚に SLES10SP1 を導入します。構成はこんな感じ。
・仮想デスクトップサーバー1 10.7.7.202 SLES10SP1 + Xen
+仮想マシン(nakai 専用デスクトップ) nakai00 10.7.7.101
・仮想デスクトップサーバー2 10.7.7.203 SLES10SP1 + Xen
+仮想マシン(students 共用デスクトップ1) student00 10.7.7.102
+仮想マシン(students 共用デスクトップ2) sutdent01 10.7.7.103
・管理サーバー 10.7.7.201 SLES10SP1
⇒ LDAP, NFS, MySQL, Apache CGI 環境(mysql-dbd) を用意
- 仮想マシンは好みの Linux Desktop をご利用ください。
- 各仮想マシンの /home は、管理サーバーの NFS の共有領域をマウントします。
- 各仮想マシンのユーザー認証は管理サーバーの LDAP を使用します。
- 各ユーザーの vnc 接続パスワードを設定しておきます。
- 各仮想マシンは、vncserver コマンドでデスクトップ環境(gnome/kde など)が起動するように設定しておきます。
例
# cat /home/nakai/.vnc/xstartup
#!/bin/sh
xrdb $HOME/.Xresources
export GTK_IM_MODULE=scim
exec gnome-session &
2.管理サーバーの準備
・MySQL DB (DB 名 vmadm)にユーザー情報と仮想マシン情報のテーブルを作成
mysql> select * from users;
+-------+---------+
| user | vmgroup |
+-------+---------+
| nakai | nakai |
| nakai | student |
| ataro | student |
+-------+---------+
↑ユーザー名と利用を許可するデスクトップグループを登録
mysql> select * from vm;
+-----------+------------+---------+------+
| vmname | ip | vmgroup | user |
+-----------+------------+---------+------+
| nakai00 | 10.7.7.101 | nakai | NULL |
| student00 | 10.7.7.102 | student | NULL |
| student01 | 10.7.7.103 | student | NULL |
+-----------+------------+---------+------+
↑デスクトップ名、IP、デスクトップグループ、予約中ユーザーを登録
複数のユーザーに許可されたデスクトップは共用で、特定のユーザーだけに許可されたデスクトップは個人用ということになります。
・Apache CGI 実行ユーザーから各仮想マシンの各ユーザーに対して、パスワード無しの SSH 接続ができるように公開鍵を登録
(/home を NFS 共有しているので、公開鍵登録は 1 つの仮想マシン上で各ユーザーに行えばよいです。)
・ CGI スクリプト vdesk.cgi を Apache から実行できるように設定
使い方
ブラウザーから管理サーバーの vdesk.cgi を実行します。
ユーザー名を入力してログインします。(図1)
ログインしたユーザーが利用を許可されたグループのデスクトップの空きが表示されるので、利用したいものを Reserve ボタンで予約します。(図2)
リザーブされたデスクトップと IP が表示されます。(図3)このとき、該当のデスクトップで該当ユーザーの vncserver が起動されているますので、"[IP Address]:1" に VNC クライアントから接続するとデスクトップが使用できます。事前に設定した vnc 接続パスワードの入力が必要なので、他人が勝手に接続することはできません。
使用が終わったら、Release ボタンで予約を解除します。このとき、該当のデスクトップの vncserver も停止するので、実際に vnc 接続もできなくなります。複数のデスクトップを同時に予約することも可能です。
・・・Perl CGI の練習問題みたいになっちゃいました。まじめにやるなら Java でしょうが、RAILS でもお手軽にできそうなパターンですね。
これに、仮想マシンの自動プロビジョニングまで組み合わせると、仮想コンピューティング・ラボになるわけですね。
カテゴリー
: [ desktop | linux | xen ]
2009年 2月 25日 , 12:34:00 JST
|