websocket nova vnc proxy

1. vnc
proxy的实现原理

vnc
是nova提供的用来访问虚拟机的一项重要功能,用户可以通过websocket来访问,也可以通过java客户端来访问。通过websket访问虚拟机
的功能已经集成到horizon中,而通过java客户端则需要先安装相应的软件。为了方便用户访问虚拟机,nova通过有一个proxy来实
现,proxy通常放在一个所有人都可以访问的IP地址。

vnc访问的实现方法如下,首先是启动一个虚拟机时启用vnc,这可以通过给kvm加上vnc参数即可。这样,kvm就会启动一个vncserver监听虚拟机。通过websocket来访问虚拟时,其步骤如下:

1. 通过nova-api获取访问url,url的格式是:http://ip:port/?token=xxx,该地址实际上就是vnc
proxy的地址。
2. 浏览器连接到vnc proxy
3. vnc
proxy连接到nova-consoleauth来验证token,并将token映射到虚拟机所在的宿主机的ip地址和某个端口,该端口就是虚拟机启动时所监听的端口。

4. vnc proxy与虚拟机所在的宿主机的vncserver建立连接,并开始代理,直到浏览器session结束。

nova.conf中,计算节点可以指定vncserver的监听地址及vnc
proxy应该通过那个地址连接到vncserver,该选项就是vncserver_proxyclient_address。vnc
proxy充当了公网和计算节点之间的桥梁,此外还需要对vnc协议进行封装。

2. vnc
proxy配置方法

通常情况下,为了提供完整的vnc功能,需要部署三个服务:
nova-consoleauth:
提供token验证,维护token与ip地址、端口号的映射。
nova-novncproxy: 支持基于浏览器的vnc
客户端,通常与nova-api部署在一起。
nova-xvpvncproxy:
支持基于java的vnc客户端,,通常与nova-api部署在一起。
此外还需要对计算节点进行设当的配置。具体如下:

  • vnc_enabled=True   启用虚拟机的vnc功能。

  • vncserver_listen=0.0.0.0
      默认是127.0.0.1,即只可以从本机进行访问,通常情况下是配置为管理网的IP地址。设置为0.0.0.0主要是考虑到动态迁移时,目的宿主机没有相应的IP地址,动态迁移会失败。

  • vncserver_proxyclient_address  该地址指明vnc
    proxy应该通过那个IP地址来连接vncserver,通常是管理网IP地址。

  • novncproxy_base_url=http://$SERVICE_HOST:6080/vnc_auto.html  指定浏览器client应该连接的地址。$SERVICE_HOST通常是一个公网IP地址。

  • xvpvncproxy_base_url=http://$SERVICE_HOST:6081/console  指定java
    client应该连接的地址。$SERVICE_HOST通常是一个公网IP地址。

vnc proxy的配置则相对简单,只需要设置其监听的主机和端口即可。具体如下:
novncproxy_host=$SERVICE_HOST
 通常为一个公网IP。
novncproxy_host=6080
xvpvncproxy_host=$SERVICE_HOST
通常为一个公网IP。
xvpvncproxy_port=6081

时间: 2024-10-19 22:38:01

websocket nova vnc proxy的相关文章

nova vnc proxy基本原理

先上图 VNC Proxy的功能: 将公网(public network)和私网(private network)隔离 VNC client运行在公网上,VNCServer运行在私网上,VNC Proxy作为中间的桥梁将二者连接起来 VNC Proxy通过token对VNC Client进行验证 VNC Proxy不仅仅使得私网的访问更加安全,而且将具体的VNC Server的实现分离,可以支持不同Hypervisor的VNC Server但不影响用户体验 VNC Proxy的部署 在Contr

nova vnc配置

vnc proxy的实现原理 vnc是nova提供的用来访问虚拟机的一项重要功能,用户可以通过websocket来访问,也可以通过java客户端来访问.通过websket访问虚拟机的功能已经集成到horizon中,而通过java客户端则需要先安装相应的软件.为了方便用户访问虚拟机,nova通过有一个proxy来实现,proxy通常放在一个所有人都可以访问的IP地址. vnc访问的实现方法如下,首先是启动一个虚拟机时启用vnc,这可以通过给kvm加上vnc参数即可.这样,kvm就会启动一个vncs

WebSocket在HTTP Proxy下是可以,可是有点小笨拙之处给人造成不便

从规格说明上看,WebSocket毋庸置疑是可以通过HTTP Proxy Server代理访问出去的,不论是非加密的ws://,还是加密的wss://,都应该可以.当然有个通常都满足的前提:HTTP Proxy Server提供socket连接级别的无过滤转接,是所谓的CONNECT命令(而不光是HTTP整体请求响应的转接和过滤).现实因为如果不提供这个CONNECT命令支持,那么HTTPS网站就用不了(原因一句话说不清,当然通过伪造SSL证书等手段也是可以的,只是需要browser机器这边配合

基于最新RHEL7系统的Packstack自动部署RDO(OpenStack Icehouse)

本篇文章是通过最新发布的Red Hat Enterpise Linux 7 系统部署OpenStack,集成到RHEL系统的OpenStack 简称为RDO.此篇是通过制作应答文件answer.conf自动化部署OpenStack Icehouse 版本. 由于采用RHEL7系统在部署中或多或少碰到不少报错的问题,这里只列出我的几张截图,在部署中还是需要根据实际情况来决定,多看下报错及日志文件:例如:解决包的依赖,服务不能没有启动起来,数据库密码设置未成功等:希望本篇可以给部署RDO的同学带来一

centos 6.5 x64bit 快速安装openstack

OpenStack是一个美国国家航空航天局和Rackspace合作研发的,以Apache许可证授权,并且是一个自由软件和开放源代码项目. OpenStack是一个云平台管理的项目,它不是一个软件.这个项目由几个主要的组件组合起来完成一些具体的工作. OpenStack是一个旨在为公共及私有云的建设与管理提供软件的开源项目.它的社区拥有超过130家企业及1350位开发者,这些机构与个人都将OpenStack作为基础设施即服务(简称IaaS)资源的通用前端. OpenStack项目的首要任务是简化云

Openstack CentOS6.5 ALL IN ONE 安装

本文档以RDO的方式安装单节点.单网卡的Openstack. RDO是可在Red Hat Enterprise Linux.Fedora及其变体上运行的社区支持OpenStack版本.部署简单方便,RDO中包含核心的OpenStack组件 – Nova.Glance.Keystone.Cinder.Neutron.Swift和Horizon,还有用于云应用协调的孵化项目 – Heat,以及用于资源监视和计量的Ceilometer.利用红帽开发的安装工具 – PackStack,可以实现非常简便轻

CENTOS7.2使用RDO方式安装OpenStack Mitaka笔记

1.配置/etc/hosts 192.168.13.108 openstack 2.配置OpenStack Mitaka安装源 [[email protected] ~]# sudo yum install -y centos-release-openstack-mitaka [[email protected] ~]# yum clean all; yum makecache; yum update 3.安装packstack,开始安装OpenStack [[email protected]

2节点CentOS7 PackStack安装Newton

PackStack安装OpenStack最新版本Newton [[email protected] ~]# vim/etc/hosts 192.168.13.111 controller 192.168.13.112 compute [[email protected] yum.repos.d]# yum install centos-release-openstack-newton -y [[email protected] ~]# cd /etc/yum.repos.d/ [[email p

在CentOS上以RDO方式部署openstack

CentOS7下以RDO方式安装all-in-one的openstack 因为对团队的环境部署和持续集成还不了解,先使用最简单的方式安装个开发环境.过程总结如下. 1.   Openstack部署的方式 通常如果只是搭一套环境自己用的话,使用CentOS的RDO方式搭建all-in-one的openstack开发环境是最快的.(RDO是什么?https://www.rdoproject.org/) 但是如果考虑持续集成.部署和升级的话,肯定需要专门的工具来打包.安装二次开发的代码,通常使用fue