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

websocket nova vnc proxy的更多相关文章

  1. nova vnc proxy基本原理

    先上图 VNC Proxy的功能: 将公网(public network)和私网(private network)隔离 VNC client运行在公网上,VNCServer运行在私网上,VNC Pro ...

  2. Linux(CentOS、Ububtu)一键安装Openstack及其它参考文档汇总

    原文链接  http://www.aboutyun.com/thread-10920-1-1.html openstack相关资料 CentOS下一键安装Openstack  http://blog. ...

  3. CentOS下一键安装Openstack

    CentOS下一键安装Openstack 系统环境:Oracle VirtualBox 4.38CentOS-6.5-x86_64-bin-DVD1.iso 安装前需要修改 /etc/hosts文件, ...

  4. 当发现你的OpenStack虚拟机网络有问题,不妨先试一下这16个步骤

    1. Security Group全部打开,这是最基本的,但是很多人容易忘记 其实遇到过无数这种场景了,Debug了半天网络问题,各种手段都用上了,最后发现安全组竟然没有打开. 2. 通过界面查看虚拟 ...

  5. 别以为真懂Openstack: 虚拟机创建的50个步骤和100个知识点(5)

    八.KVM 这一步,像virsh start命令一样,将虚拟机启动起来了.虚拟机启动之后,还有很多的步骤需要完成. 步骤38:从DHCP Server获取IP 有时候往往数据库里面,VM已经有了IP, ...

  6. RDO快速部署OpenStack

    RDO快速部署OpenStack 1.RDO是什么 RDO是红帽Red Hat Enterprise Linux OpenStack Platform的社区版,类似RHEL和Fedora,RHEV和o ...

  7. Openstack CentOS6.5 ALL IN ONE 安装

    本文档以RDO的方式安装单节点.单网卡的Openstack. RDO是可在Red Hat Enterprise Linux.Fedora及其变体上运行的社区支持OpenStack版本.部署简单方便,R ...

  8. packstack安装ironic

    KVM Centos7.3虚机 安装openstack Pike版本, 其它版本安装方法类似. packstack目前对NetworkManager 还不支持,我们修改下配置: systemctl d ...

  9. Centos7 install Openstack Juno (RDO) (转载)

    原文地址:http://www.hdume.com/centos-7-0%E5%AE%89%E8%A3%85openstack/ 1.安装系统,Centos7镜像采用CentOS-7.0-1406-x ...

随机推荐

  1. 国都企信通短信平台发送手机短信的python脚本一例

    一年前,由于工作需要,给以色列的同事解释一下国都短信平台的短信发送格式,本来不懂python的我硬着头皮写了一个sample,比较粗,能用,但不优美,希望以后学会python能改得像我同事写的那么优雅 ...

  2. NYOJ-520 最大素因子

    这个题基本上就两个知识点, 一个素数筛选法求素数,另一个是求最大公因子, 不过确定最大素数在素数表中的位置时,要用到二分的思想,不然会超时,下面是具体代码的实现; #include <stdio ...

  3. Python开发【第七篇】:面向对象 和 python面向对象进阶篇(下)

    Python开发[第七篇]:面向对象   详见:<Python之路[第五篇]:面向对象及相关> python 面向对象(进阶篇)   上一篇<Python 面向对象(初级篇)> ...

  4. python 之路,Day11(上) - python mysql and ORM

    python 之路,Day11 - python mysql and ORM   本节内容 数据库介绍 mysql 数据库安装使用 mysql管理 mysql 数据类型 常用mysql命令 创建数据库 ...

  5. Volley框架使用(POST)

    需要在MyApplication(继承Application)中配置; public static RequestQueue requestQueue; @Override public void o ...

  6. Hql 执行CRUD

    //新增] @Test public void add(){ config = new Configuration(); sessionfactory = config.configure(" ...

  7. 无法在web服务器上启动调试。调试失败,因为没有启用集成windows身份验证

    ----注意:以管理员身份运行VS C#中ASP.NET Web应用程序编译时的错误:无法在web服务器上启动调试.调试失败,因为没有启用集成windows身份验证. 解决:打开IIS,在IIS里查看 ...

  8. TSQL Challenge 1

    在老外网站发布的一些SQL问题,拿过来自己搞一下,后面我也会陆续转载一些问题,欢迎看到的朋友贴出自己的答案,交流一哈.对于技术问答题的描述,翻译远不不原版来的更好一些,下面我就贴出原版的题目,欢迎参与 ...

  9. 四大跨平台的APP分析

    转载:http://blog.csdn.net/kenkao/article/details/50678269

  10. Ajax的工作流程简述

    提到Ajax相信我们都不会陌生,不管你是前端开发还是后台数据处理的程序员,ajax的作用就像现在生活中的手机一样,无论是作用还是流程都差不多,这里我们要进行ajax操作后台数据并显示在页面上的话,首先 ...