10. noVNC インストール手順

VNC コーンソール のインストール手順を記載します。

Horizon と同様はまりポイントが多いので一本道の手順にはなっていません。

エラーで検索した人を救済するようにエラーを記載しているのでちょっと見辛いです。

後日はまりポイントと分離します。

10.1. Github からコードを取得する

Github から コードを取得します。

$ cd /usr/local/src
$ sudo git clone https://github.com/cloudbuilders/noVNC.git -b diablo
$ cd noVNC
$ git branch
* diablo

10.2. 依存関係

モジュール numpy が必要となります。

$ sudo pip install numpy

または

$ sudo apt-get install python-numpy

を実行します。

10.3. noVNC の配置

先に設定した、nova.conf に従い、/var/lib の下に配置します。

$ sudo cp -r /usr/local/src/noVNC /var/lib

10.4. nova-proxy 起動用スクリプトの作成

noVNC を利用するため、nova-proxy を起動します。Ubuntu パッケージの設定を流用します。

※ nova-vncproxy は Diablo 以降消滅します。Essex あたりでは、nova-xvpvncproxy に置き換わります。

$ sudo -i
# cat << _EOF_ > /etc/init/nova-vncproxy.conf
description "Nova VNC proxy"
author "Vishvananda Ishaya <vishvananda@gmail.com>"

start on (filesystem and net-device-up IFACE!=lo)
stop on runlevel [016]


chdir /var/run

pre-start script
        mkdir -p /var/run/nova
        chown nova:root /var/run/nova/

        mkdir -p /var/lock/nova
        chown nova:root /var/lock/nova/
end script

exec su -c "/usr/bin/nova-vncproxy --flagfile=/etc/nova/nova.conf" nova
_EOF_
# exit
$ cd /etc/init.d
$ sudo ln -s /lib/init/upstart-job nova-vncproxy

10.5. nova-vncproxy の起動

設定が終わったら nova-vncproxy を起動します。が、作ったスクリプトを利用すると起動に失敗します。

INFO nova.wsgi [-] Starting TCP server /usr/bin/nova-vncproxy on 0.0.0.0:843
CRITICAL nova [-] [Errno 13] Permission denied
(nova): TRACE: Traceback (most recent call last):
(nova): TRACE:   File "/usr/bin/nova-vncproxy", line 116, in <module>
(nova): TRACE:     host=FLAGS.vncproxy_host)
(nova): TRACE:   File "/usr/local/lib/python2.7/dist-packages/nova-2011.3.2-py2.7.egg/nova/wsgi.py", line 116, in start_tcp
(nova): TRACE:     socket = eventlet.listen((host, port), backlog=backlog)
(nova): TRACE:   File "/usr/local/lib/python2.7/dist-packages/eventlet/convenience.py", line 38, in listen
(nova): TRACE:     sock.bind(addr)
(nova): TRACE:   File "/usr/lib/python2.7/socket.py", line 224, in meth
(nova): TRACE:     return getattr(self._sock,name)(*args)
(nova): TRACE: error: [Errno 13] Permission denied
(nova): TRACE:

10.6. nova-vncproxy が起動に失敗する理由

nova-vncproxy が 843 番ポートを使用しようとしてアクセス拒否をされています。

スクリプトの以下の部分が原因です。

exec su -c "/usr/bin/nova-vncproxy --flagfile=/etc/nova/nova.conf" nova

これは、Linux の Capability の制約によるものです。

10 CAP_NET_BIND_SERVICE Allows binding to TCP/UDP sockets below 1024.Allows binding to ATM VCIs below 32.

一般ユーザは1024番以下のポートの利用が禁止されています。回避するには、CAP_NET_BIND_SERVICE を付与する必要があります。

※ 未確認: カーネルが新しいので File Capability で対応できるかも。

コードでは以下のようになっています。

/usr/local/lib/python2.7/dist-packages/nova-2011.3.2-py2.7.egg/EGG-INFO/scripts/nova-vncproxy

114     wsgi_server.start_tcp(handle_flash_socket_policy,
115                           843,
116                           host=FLAGS.vncproxy_host)

手っ取り早い解決方法は「root で起動する。」です。

# nova-vncproxy &

10.7. VNC Console を使用する

これで、ようやく VNC コンソール が利用可能に・・・なりません。

この状態で VNC コンソール を利用すると /var/log/nova に以下に色々とエラーが出力されます。

自分の設定ミスで余計なエラーまで出力されていたので削除。FIXME

ここまでくればようやく VNC コンソールが利用可能になります。

Table Of Contents

Previous topic

9. Horizon インストール手順

This Page