The VNC Proxy is an OpenStack component that allows users of Nova to access their instances through vnc clients. In essex and beyond, there is support for for both libvirt and XenServer using both java and websocket cleints.
In general, a VNC console Connection works like so:
Note that in general, the vnc proxy performs multiple functions: * Bridges between public network (where clients live) and private network
(where vncservers live)
Both client proxies leverage a shared service to manage token auth called nova-consoleauth. This service must be running in order for for either proxy to work. Many proxies of either type can be run against a single nova-consoleauth service in a cluster configuration.
Nova provides the ability to create access_urls through the os-consoles extension. Support for accessing this url is provided by novaclient:
# FIXME (sleepsonthefloor) update this branch name once client code merges git clone https://github.com/cloudbuilders/python-novaclient git checkout vnc_redux . openrc # or whatever you use to load standard nova creds nova get-vnc-console [server_id] [xvpvnc|novnc]
To enable support for the OpenStack java vnc client in nova, nova provides the nova-xvpvncproxy service, which you should run to enable this feature.
As a client, you will need a special Java client, which is a version of TightVNC slightly modified to support our token auth:
git clone https://github.com/cloudbuilders/nova-xvpvncviewer
cd nova-xvpvncviewer
make
Then, to create a session, first request an access url using python-novaclient and then run the client like so:
# Retrieve access url
nova get-vnc-console [server_id] xvpvnc
# Run client
java -jar VncViewer.jar [access_url]
The previous vnc proxy, nova-vncproxy, has been removed from the nova source tree and replaced with an improved server that can be found externally at http://github.com/cloudbuilders/noVNC.git (in a branch called vnc_redux while this patch is in review).
The –flagfile param should point to your nova config that includes the rabbit server address and credentials.
By default, nova-novncproxy binds 0.0.0.0:6080. This can be configured with:
Retrieving an access_url for a web browser is similar to the flow for the java client:
# Retrieve access url nova get-vnc-console [server_id] novnc # Then, paste the url into your web browser
Support for a streamlined flow via dashboard will land in essex.