OpenStack VNC console
In computing, Virtual Network Computing (VNC) is a graphical desktop sharing system that uses the RFB protocol to remotely control another computer. It transmits the keyboard and mouse events from one computer to another, relaying the graphical screen updates back in the other direction, over a network. In IaaS system like OpenStack, VNC is a very convenient tool for end user to access the VMs by GUI.
Nova provides two kinds of VNC proxies: noVNC and nova-xvpvncproxy.
Components
To enable VNC console to access VMs started by OpenStack, we need many components to collaborate:
Steps for user to access VNC console
The picture above shows the process how the noVNC starts to work:
1. user requests the noVNC console URL by command:
nova-api accepts this request, and then sends out "get_vnc_console" message to VM's related compute host html 2. nova-compute running on that compute host accepts that message, generates a token and calls libvirt driver's get_vnc_console methods. node 3. Libvirt driver will connect with libvirt server to get VM's vnc port, and look up the vnc host from FLAGS.vncserver_proxyclient_address. linux 4. nova-api will send out "authorize_console" message to nova-consoleauth, which then caches the connection information returned by compute-node with token as key git 5. user browsers the URL returned the previous command, like below: github
6. noVNC, which is listening on 6080 HTTP port, accepts the URL request, sends out "check_token" message to nova-consoleauth api 7. nova-consoleauth checks the cached connections and returns one according to the requested token key ide 8. noVNC begins the proxy work, connecting the VNC server ui About configuration items in nova.conf
|