openstack中NoVNC的配置

摘要:文中将介绍在多节点和多网口的情况下怎样配置NoVNC,达到在浏览器中可以访问虚拟机的目的。

         VNC (Virtual Network Computing)网络遥控技术是指由一部计算机(主控端)去控制另一部计算机(被控端),而且当主控端在控制端时,就如同用户亲自坐在被控端前操作一样,可以执行被控端的应用程序,及使用被控端的系统资源。

一,noVNC在控制节点上的配置
      
    openstack的安装配置不是本文的重点,请参考其他文档做安装和配置。
    在/etc/nova/nova.conf中的关于NoVNC的配置如下:

#novnc
--vnc_enabled=True
--vnc_console_proxy_url=http://controllereth0:6080
--vncproxy_wwwroot=/opt/noVNC
--vncproxy_url=http://controllereth0:6080
     配置中的controllereth0为对外提供服务的ip。
      如果不是自己源码安装noVNC的话,不需要--vncproxy_wwwroot,否则需要配置noVNC的具体位置。
     在对noVNC进行配置的时候,请认真理解noVNC的实际工作原理。noVNC实际上是http请求的代理,将http的请求转发到具体的VNC服务器上。

二,noVNC在被控制节点上的配置

#novnc
# These flags help construct a connection data structure
--vncserver_proxyclient_address=computeeth1
--novncproxy_base_url=http://controllereth0:6080/vnc_auto.html
--xvpvncproxy_base_url=http://controllereth0:6081/console
# This is the address where the underlying vncserver (not the proxy)
# will listen for connections.
--vncserver_listen=computeeth1
     配置文件中的computeeth1 为被控制服务器的内网ip,controllereth0为控制节点的外网ip。 注意控制节点和被控制节点的内网(eth1)要能够互相访问。
     在实际配置的过程中,往往这么配置也不能够通过浏览器访问到虚拟机的VNC服务,是因为我们还需要修改qemu的配置文件,让VNC服务器对内网监听(eth1)
      将/etc/libvirt/qemu.conf中的
      vnc_listen = "127.0.0.1"
      修改为:
      vnc_listen = "eth1ip"
      这样实际的VNC服务就会对内网(eth1)监听了。
 
三,总结
       从noVNC的工作原理我们不难看出,实际还是一个proxy的过程。
       外网的VNC http请求的大概过程为:
       VNC request<-------------->controller noVNC server(eth0)<---proxy------> controller(eth1)<-----------------> compute VNC server (eth1)
         经过这样一个过程,请求最终达到VNC server,服务得到响应。

你可能感兴趣的:(openstack,novnc)