Xen 3.1.0(リモート接続編)
2007年5月31日に正式リリースされたFedora 7にはXen 3.1.0が付属していました。
2007年11月8日にリリースされたFedora 8のXen本体自体は3.1.0ですが機能拡張された周辺ツールが付属しています。
つまりゲストOSを実行させるXenサーバとそれを管理するXenマネジャを別マシンに分離させることが可能となります。
これは主にlibvirtパッケージの機能強化によって実装されています。
※XenServer(XenExpress)等は最初からこのようなアプローチが採用されています(Windows用管理コンソールのような操作環境ツール含む)。
ここではFedora 8同士でリモート接続する方法を紹介します。
尚、今回はXen仮想マシンで動作させるゲストOSはFedora 9を使用しました。
(2008年5月13日にリリースされたFedora 9はXen 3.2を搭載していますがDomain0としては実行できずゲストOSとしてだけ動作します)
いずれもFedora 8/Fedora 9で紛らわしくなるため便宜上次のように用語表現します。
(1)Xenサーバ:Xenハイパバイザ/デーモンを実行させるFedora 8を指します。
(2)Xenマネージャ:非Xenカーネル上でXen周辺ツールを実行させるFedora 8を指します。
(3)ゲストFedora 9:Xenサーバ上で実行するゲストOSとしてのFedora 9を指します。
※Fedora 9の初期版にはXDMCPを設定する機能がないためVNCベースのデスクトップ表示に限定します。
1.Xenサーバ環境の構築
Xenサーバ環境はOSインストール時に「仮想化」を追加選択します。
但し、初期インストールされる仮想マシンマネージャではゲストOSをインストールする機能が欠けています。
そのため別途「yum groupinstall "Virtualization"」を実行してvirt-managerやpython-virtinstをアップデートしておきます。
尚、「ps aux|grep libvirtd」コマンドでlibvirtdデーモンが起動されていることを確認しておきます。
(libvirt-0.3.3-2.fc8には/etc/rc.d/init.d/libvirtdが含まれています)
2.Xenサーバ環境でのゲストFedora 9のインストール
- 仮想マシン作成用ウィザードの起動
GNOMEのメニューから仮想マシンマネージャを起動してlocalhostのXenに接続します。
仮想マシンマネージャの<新規>ボタンを押して新しい仮想マシンの作成ウィザードを起動します。
- 仮想マシン名:DomUFedora9
ここでの仮想マシン名は「DomUFedora9」とします。
またゲストOSのホスト名はdomufedora9とします。
- 仮想化の方法:準仮想化
- インストールメディアの指定
XenサーバでApacheを起動し以下のコマンドを実行して「http://Xenサーバ/iso」がインストールメディアのURLとなるようにします。
# Fedora 9のDVDをドライブにセット
# mkdir /var/www/html/iso
# mount /dev/cdrom /var/www/html/iso
この段階でインストールメディアのURLとして「http://Xenサーバ/iso」を指定します。
尚、Xenサーバのアドレスを引けるDNSサーバを用意していない場合は「http://XenサーバのIPアドレス/iso」を指定します。
- ストレージ指定
ゲストOSをインストールするストレージはシンプルファイルとします(8000MB割り当て)。
- Fedora 9のインストーラ実行
パーティション設定はデフォルトのままで構いません。
またソフトウェアセットはデフォルトのまま、もしくは不要ソフトを除外して構いません。
※「仮想化」をインストール対象として明示することは不要です(自動的にXenカーネルがインストールされます)。
- インストールの完了
ここで<再起動>ボタンを押します。
- ゲストOSの再起動
インストール後の再起動時、DomUFedoar9はシャットオフされたままとなります。
このため手動で仮想マシンマネージャのDomUFedoar9の右クリックメニューから「Run」を選択して<開く>操作を行います。
これによって仮想マシンコンソールが開き、ようこそ画面(インストールの続行処理開始画面)が表示されます。
- ゲストOSのシャットダウン
仮想マシンコンソール(VNC)でゲストOSを操作してみます。
ゲストOSをシャットダウンします。
3.ゲストOSの起動
Xenサーバの仮想マシンマネージャからゲストOSを起動します。
別マシンのXenマネージャからのアクセスに備えてゲストOSの仮想マシンコンソールは閉じておきます。
仮想マシンマネージャの仮想マシンコンソール以外にも「vncviewer Xenサーバ名」でゲストOSをVNC表示することもできます。
(この場合はパスワードの入力は求められません)
4.Xenマネージャ環境の構築
XenマネージャはXenサーバと同様のインストールで構いません。
OSインストール時に「仮想化」を選択してXen周辺ツールをインストールしますがXenカーネルで起動する必要はありません。
5.XenマネージャからXenサーバへのリモートアクセス
- Xenマネージャの起動
XenマネージャはXenカーネルではなく通常のカーネルでブートします。
(Xenカーネルで起動しても問題ありませんがここでは通常カーネルでブートすることを前提とします)
- Xenマネージャ側の仮想マシンマネージャからのアクセス
仮想マシンマネージャを起動します。
仮想マシンマネージャの[ファイル]−[接続を開く]で表示される「接続を開く」ダイアログで下記を指定します。
・ハイパバイザ:Xen
・接続:SSHでのリモートトンネルを選択
・ホスト名:Xenサーバのfedora8を指定
<接続>をクリックしてXenサーバのrootパスワードを指定します。
これによって仮想マシンマネージャ画面にXenサーバのfedora9とDomUFedora9が表示されます。
DomUFedora9を選択して<開く>を押すと仮想マシンコンソールにゲストOSの画面が表示されます。
尚、Xenマネージャ側からXenサーバ側に仮想マシンを新規に作成することはできません。
(<新規>ボタンを押すと「リモート接続で新ゲストを作成することはまだサポートしていません」と表示されます)
DomUFedora9仮想マシンの詳細も表示できます(下記画像)。
- 仮想マシンマネージャのクローズ
仮想マシンコンソール、仮想マシンマネージャの画面を閉じてXenマネージャを再起動します。
(Xenマネージャは起動したままでも構いません)
6.Xenマネージャのvirsh, virt-viewerによるリモート接続
- virshによる接続
Xenマネージャを通常カーネルで起動した状態で「virsh」を実行すると「エラー: ハイパーバイザーへの接続に失敗しました」と表示されます。
これはlocalhost(ここでは通常カーネルで起動したXenマネージャ)のハイパバイザに接続しようとするためです。
そこでvirshの起動は単なる「virsh」ではなく以下のコマンドで起動します。
virsh -c xen+ssh://root@fedora8/
|
本コマンド投入後、Xenサーバのrootパスワードを指定して接続します。
ここではGNOME端末によるvirshの操作例を示します。
(virshでどのような操作が行えるかはhelpサブコマンドで確認できます)
- virt-viewerによる接続
virt-viewerでXenサーバ側のゲストOSのグラフィカルコンソールを表示するには以下のコマンドを使用します。
virt-viewer -c xen+ssh://root@fedora8/ DomUFedora9
|
本コマンド投入後、Xenサーバのrootパスワードを指定して接続します。
(1)virt-viewerの画面(Virt Viewer)自体にも仮想マシンコンソール相当のメニューが付いています(例:[File]−[Screenshot])。
(2)ゲストOSのGNOME画面を表示する際にGNOME_ShowDesktoAplletの読み込みエラーが発生することがあります。
(3)TLSの暗号化及びx509の認証機能を使用できる環境を構築した場合は「virt-viewer -c xen://fedora8/ DomUFedora9」で起動するようです。
※プロトコル別virt-viewerの起動方法は「man virt-viewer」で確認できます(Xenサーバの中では「virt-viewer ドメイン名」だけでOKです)。
【付録】
(1)TLSの暗号化及びX.509の認証機能を使用できる環境をXenサーバの中に構築してvirt-viewerでローカルドメインに接続してみました。
※TLSプロトコルを利用するにはサーバ証明書、クライアント証明書等のファイルを用意しておく必要があります。
ローカルのドメイン(DomUFedora9)に接続する場合のvirt-viewerの起動コマンドは「virt-viewer -c xen:/// DomUFedora9」となります。
そのvirt-viewerの実行画面はこちらです。
(2)TLS/X.509でリモートから接続可能とするXenサーバの/etc/libvirt/libvirtd.confには以下のような行を追加します。
例:「tls_allowed_dn_list=["C=GB,ST=London,L=London,O=Red Hat,CN=*"]」
(3)XenマネージャとしてFedora 9を利用することもできます(Fedora 9からのvirt-viewer接続例[ssh接続])。
7.XenマネージャからのTLS接続
TLSの暗号化とX.509の認証機能を使用したセキュアなリモート管理を実現する方法としてTLS接続があります。
この場合のXenマネージャはXenカーネルではなく通常カーネルで構いません。
ここではXenマネージャからTLSプロトコルを利用してXenサーバに接続する例を紹介します。
尚、XenマネージャとしてFedora 9を利用してXenサーバとTLS接続することも可能です。
- TLS接続のためのXenサーバ準備
libvirtdデーモンがlisten状態で起動するように以下の操作を実施します。
# vi /etc/sysconfig/libvirtd
「#LIBVIRTD_ARGS="--listen"」を「LIBVIRTD_ARGS="--listen"」に変更します(先頭#の削除)。
# vi /etc/libvirt/libvirtd.conf
(1)「listen_tls = 1」を明示指定している場合はその行を削除します。
(2)テスト用に「tls_allowed_dn_list=["*"]」指定にします。
# /etc/rc.d/init.d/libvirtd restart
下記はlisten状態のlibvirtdデーモンプロセスを示しています。
- virsh接続
virshを使用してXenサーバにTLSプロトコルで接続するためには次のコマンドを実行します。
# virsh -c xen://fedora8.mydomain.net/
※サーバ側証明書が有効期限切れの場合は「libvir: Remote エラー : server verification (of our certificate or IP address) failed」となります。
※ご参考:XenマネージャとしてFedora 9を利用した場合の例
- 仮想マシンマネージャからのTLS接続
Xenマネージャの仮想マシンマネージャの[ファイル]−[接続を開く]のダイアログで以下の指定をします。
・ハイパーバイザー:Xen
・接続:x509認証でリモートSSL/TLS
・ホスト名:fedora8.mydomain.net
※ご参考:XenマネージャとしてFedora 9を利用した場合の例
<接続>をクリックすると仮想マシンマネージャにXenサーバが表示されます。
- 仮想マシンマネージャでのTLS接続Xenサーバホストの確認
仮想マシンマネージャのXenサーバを選択して<詳細>をクリックします。
※ご参考:XenマネージャとしてFedora 9を利用した場合の例