Nova服务"/>
Nova服务
VNC 访问方式原理
VNC访问方式:
host_ip:port,比如221.130.253.135:1
如何获得虚拟机对应的vnc port?
vncdisplay domain_id
客户端软件: vnc viewer,tightVNC等等
VNC 访问原理:
基于RFB协议,即Remote FrameBuffer protocol
有两部分组成:vnc server和vnc client
Server和client端共享图形界面
由两个服务构成:nova-novncproxy和nova-consoleauth
nova-novncproxy的功能
将公网(public network)和私网(private network)隔离
vnc client运行在公网上,vnc server运行在私网上
vnc proxy作为连接二者的桥梁
通过token对vnc client进行验证
可以同时支持多种vnc client
novnc,基于html5 websockets, Canvas和JavaScripts实现
Spice,redhat的虚拟桌面技术
nova-consoleauth服务
用于进行token的验证
VNC服务流程图
noVNC访问原理
一个用户试图从浏览器里面打开连接到虚拟机的VNC Client
浏览器向nova-api发送请求,要求返回访问vnc的url
nova-api调用nova-compute的get_vnc_console方法,要求返回连接VNC的信息
nova-compute调用libvirt的get_vnc_console函数
libvirt会通过解析虚拟机的的配置文件/instance-00000001.xml来获得VNC Server的信息
libvirt将host, port等信息以json格式返回给nova-compute
nova-compute会随机生成一个UUID作为Token
nova-api会调用nova-consoleauth的authorize_console函数
nova-api将connect_info中的access url信息返回给浏览器
当浏览器试图打开这个链接时,会将请求发送给nova-novncproxy
nova-novncproxy调用nova-consoleauth的check_token函数
nova-consoleauth验证了这个token,将这个instance对应的connect_info返回给nova-novncproxy
nova-novncproxy通过connect_info中的host, port等信息,连接compute节点上的VNC Server,从而开始了proxy的工作
nova-compute将libvirt返回的信息以及配置文件中的信息综合成connect_info返回给nova-api
更多推荐
Nova服务
发布评论