由于云主机instance所在的compute一般在内网运行,而instance的VNC端口,是绑定在compute的IP地址上。外网的客户,需要访问instance的VNC,就需要使用Proxy代理。客户访问VNC,一般有两种方式的客户端,分别对应两种Proxy:
1、支持web socket的浏览器,比如 Chrome, FireFox等,使用 NoVNC
2、java客户端代理,使用xvpvncproxy
为了客户方便,一般使用第一种方式,这里就讲讲第一种方式下的VNC配置。
1、安装软件
1)在控制节点 controller上,需要安装:
nova-consoleauth
novnc
python-novnc
注:
也可以将控制节点放在内网,专门设置一个api节点,这时,nova-consoleauth就需要安装在控制节点上,另外两个软件包安装在api节点上。
2)计算节点compute上,不需要特别安装什么软件,只要正确设置
2、配置
假定网络接入如下:
控制节点或者api节点: 公网地址 192.168.28.4 管理口内网地址:10.0.0.4
计算节点: 管理口内网地址: 10.0.0.6
实例VM的IP地址段:10.9.0.0/24
1)控制节点或 api 节点配置
vncserver_proxyclient_address=10.0.0.6
novncproxy_base_url=http://192.168.28.4:6080/vnc_auto.html
xvpvncproxy_base_url=http://192.168.28.4:6081/console
2)计算节点配置
vncserver_proxyclient_address=10.0.0.6
novncproxy_base_url=http://192.168.28.4:6080/vnc_auto.html
xvpvncproxy_base_url=http://192.168.28.4:6081/console
#设定 compute上,vnc绑定的IP
vncserver_listen=10.0.0.6
3、测试
1) 在控制节点上,要能够连接计算节点的 vnc,比如第一个vnc端口是5900
# telnet 10.0.0.6 5900
Trying 10.0.0.6...
Connected to 10.0.0.6.
Escape character is '^]'.
RFB 003.008
2) 外网用户,要能够连接控制节点的6800端口
3)使用浏览器测试
注意,请使用 chrome 和 firefox 等支持 HTML5 和 websocket 的浏览器测试。IE至少需要 IE9 ,而且还可能有问题。
# nova get-vnc-console t1 novnc
+-------+-----------------------------------------------------------------------------------+
| Type | Url |
+-------+-----------------------------------------------------------------------------------+
| novnc | http://192.168.28.4:6080/vnc_auto.html?token=f5abd84d-708f-4486-af61-40c6e5a876c0 |
+-------+-----------------------------------------------------------------------------------+
注意:
1、vncserver_listen 参数的修改,对于已经启动的实例无效,这些实例必须重新启动
2、注意浏览器的版本
3、浏览器不能使用代理,否则出现无法连接错误