专栏首页小朋友学云计算09-nova的模块及novnc详解
原创

09-nova的模块及novnc详解

Nova的各个模块

nova-api

  • 对外提供rest接口的处理
  • 对传入的参数进行合法性校验和约束限制
  • 对请求的资源进行配额(quota)的校验和预留
  • 资源的创建,更新,删除查询等
  • 虚拟机生命周期的入口
  • 可水平扩展部署(可以有多个节点)

nova-scheduler

  • 选择策略
  • 基于内存权重的选择。
  • 散列:在候选的一个大小范围内的主机中,随机选择一个主机。
  • Filter:对主机进行过滤的实体,支持自研扩展
  • scheduler_default_filters配置新写的filter。
  • scheduler_available_filters指定扩展的filter目录的收集函数。
  • 指定主机创建,迁移时候该调度失效

nova-conductor

  • 数据库操作。解耦其他组件(nova-compute)数据库访问。
  • Nova复杂流程控制,如创建,冷迁移,热迁移,虚拟机规格调整,虚拟机重建。
  • 其他组件的依赖。如nova-compute需要依赖nova-conductor启动成功后才能启动成功。
  • 其他组件的心跳定时写入。Nova-compute,nova-conductor,nova-scheduler,nova-console,nova-consoleauth。
  • 可水平扩展部署

nova-compute

  • 虚拟机各生命周期操作的真正执行者(会调用对应的hypervisor的driver)。
  • 底层对接不同虚拟化的平台(kvm,vmware,xen,FusionCompute,hyperv等)。
  • 内置周期性任务,完成资源刷新,虚拟机状态同步等功能。
  • 资源管理模块(resource_tracker)配合插件机制,完成资源的统计。
  • Claim模块完成资源的分配和释放。

nova-novncproxy

在访问VNC-Server的时候需要对应的VNC-Client,现在浏览器里已经集成了VNC的功能,可以直接通过浏览器来进行访问。

nova vnc proxy原理图解

vncproxy流程图

VNC Proxy的功能

1 将公网(public network)和私网(private network)隔离

2 VNC client运行在公网上,VNCServer运行在私网上,VNC Proxy作为中间的桥梁将二者连接起来

3 VNC Proxy通过token对VNC Client进行验证

4 VNC Proxy不仅仅使得私网的访问更加安全,而且将具体的VNC Server的实现分离,可以支持不同Hypervisor的VNC Server但不影响用户体验

VNC Proxy的部署

1 在Controller节点上部署nova-consoleauth 进程,用于Token验证

2 在Controller节点上部署nova-novncproxy 服务,用户的VNC Client会直接连接这个服务

3 Controller节点一般有两张网卡,连接到两个网络,一张用于外部访问,我们称为public network,或者API network,这张网卡的IP地址是外网IP,如图中172.24.1.1,另外一张网卡用于openstack各个模块之间的通信,称为management network,一般是内网IP,如图中10.10.10.2

4 在Compute节点上部署nova-compute,在nova.conf文件中有下面的配置

#nova vnc proxy是通过内网IP来访问vnc server的,所以nova-compute会告知vnc proxy用这个IP来连接我。
novncproxy_base_url=http://192.168.150.10:6080/vnc_auto.html
#允许任何主机来访问novnc
novncproxy_host=0.0.0.0
#代理端口
novncproxy_port=6080
#代理客户端
vncserver_proxyclient_address=controller
#VNC Server的监听地址
vncserver_listen=0.0.0.0

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-00000011.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:// 192.168.150.10:6080/vnc_auto.html?token=7efaee3f-eada-4731-a87c-e173cbd25e98&title=serverA%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的工作

原文字描述

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 08-初始nova与创建过程

    nova是openstack中的一个组件,通过nova-api组件接收用户的消息,nova-scheduler根据计算的权重在后端计算节点中选择一个合适的进行安...

    小朋友呢
  • 0-什么是云计算

    如果是自己公司需要搭建一个电商网站,要自己去买一台物理服务器设备,然后在上面安装操作系统部署应用;

    小朋友呢
  • 13-网络虚拟化与Flat网络

    通常每个虚拟机会配置两个业务网口,这样这个云计算中心就有20万个虚拟网口,对应的就是需要20万个MAC地址和IP地址。云计算要求资源灵活调度,业务资源任意迁移。...

    小朋友呢
  • OpenStack Pike dashboard noVNC 不能访问

    现象:openstack dashboard novnc不能查看,报Failed to connect to server (code: 1006)错误

    后端云
  • CentOS7.2+OpenStack+kvm 云平台部署--在线调整虚拟机的大小

    注意一点: openstack的虚拟机在线调整大小的原理: 其实就相当于做了一个云主机在不同宿主机(计算节点)之间的迁移,所以前提是至少需要有两个计算节点。...

    菲宇
  • 一图看清nova中创建虚拟机的流程

    用户的入口是nova_client或者是horizon,他们是RestAPI的http客户端。

    虚拟化云计算
  • OpenStack icehouse系列之计算节点搭建

    我们接着上一篇博文OpenStack icehouse系列之网络节点搭建继续往下搭建下面是环境介绍

    DevinGeng
  • OpenStack集群部署—Nova控制节点集群

    nova介绍 Nova 是 OpenStack 最核心的服务,负责维护和管理云环境的计算资源。OpenStack 作为 IaaS 的云操作系统,虚拟机生命周期管...

    院长技术
  • JS-获取class类名为某个的元素-【getClass】函数封装

    xing.org1^
  • 脏牛漏洞复现

    该漏洞是 Linux 内核的内存子系统在处理写时拷贝(Copy-on-Write)时存在条件竞争漏洞, 导致可以破坏私有只读内存映射。黑客可以在获取低权限的的本...

    墙角睡大觉

扫码关注云+社区

领取腾讯云代金券