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的部署

  • 在Controller节点上部署nova-consoleauth 进程,用于Token验证
  • 在Controller节点上部署nova-novncproxy 服务,用户的VNC Client会直接连接这个服务
  • Controller节点一般有两张网卡,连接到两个网络,一张用于外部访问,我们称为public network,或者API network,这张网卡的IP地址是外网IP,如图中172.24.1.1,另外一张网卡用于openstack各个模块之间的通信,称为management network,一般是内网IP,如图中10.10.10.2
  • 在Compute节点上部署nova-compute,在nova.conf文件中有下面的配置
    • vnc_enabled=True
    • vncserver_listen=0.0.0.0 //VNC Server的监听地址
    • vncserver_proxyclient_address=10.10.10.2 //nova vnc proxy是通过内网IP来访问vnc server的,所以nova-compute会告知vnc proxy用这个IP来连接我。
    • novncproxy_base_url=http://172.24.1.1:6080/vnc_auto.html //这个url是返回给客户的url,因而里面的IP是外网IP

 

VNC Proxy的运行过程:

  1. 一个用户试图从浏览器里面打开连接到虚拟机的VNC Client
  2. 浏览器向nova-api发送请求,要求返回访问vnc的url
  3. nova-api调用nova-compute的get vnc console方法,要求返回连接VNC的信息
  4. nova-compute调用libvirt的get vnc console函数
  5. libvirt会通过解析虚拟机运行的/etc/libvirt/qemu/instance-0000000c.xml文件来获得VNC Server的信息
  6. libvirt将host, port等信息以json格式返回给nova-compute
  7. nova-compute会随机生成一个UUID作为Token
  8. nova-compute将libvirt返回的信息以及配置文件中的信息综合成connect_info返回给nova-api
  9. nova-api会调用nova-consoleauth的authorize_console函数
  10. nova-consoleauth会将instance –> token, token –> connect_info的信息cache起来
  11. nova-api将connect_info中的access url信息返回给浏览器:http://172.24.1.1:6080/vnc_auto.html?token=7efaee3f-eada-4731-a87c-e173cbd25e98&title=helloworld%289169fdb2-5b74-46b1-9803-60d2926bd97c%29
  12. 浏览器会试图打开这个链接
  13. 这个链接会将请求发送给nova-novncproxy
  14. nova-novncproxy调用nova-consoleauth的check_token函数
  15. nova-consoleauth验证了这个token,将这个instance对应的connect_info返回给nova-novncproxy
  16. nova-novncproxy通过connect_info中的host, port等信息,连接compute节点上的VNC Server,从而开始了proxy的工作

nova vnc proxy基本原理

时间: 2025-01-08 13:12:56

nova vnc proxy基本原理的相关文章

websocket nova vnc proxy

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

nova vnc配置

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

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

八.KVM 这一步,像virsh start命令一样,将虚拟机启动起来了.虚拟机启动之后,还有很多的步骤需要完成. 步骤38:从DHCP Server获取IP 有时候往往数据库里面,VM已经有了IP,很多人就认为虚拟机就得到了IP,可是总是连不进去,不知从何入手,其实界面上能看到VM的IP和VM真正从DHCP获得IP是两回事情. 步骤39:cloud-init连接Metadata Server,并注入Key Metadata Server有很复杂的架构,cloud-init连接Metadata

基于最新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