oVirt 虚拟化

目录

加载中...

oVirt 虚拟化平台

oVirt 是一款免费开源虚拟化软件,是RedHat 商业版本虚拟化软件 RHEV 的开源版本。

oVirt 基于 KVM,并整合使用了 libvirt、gluster、patternfly、ansible 等一系列优秀的开源软件,oVirt的定位是替代 vmware vsphere,oVirt 目前已经成为了企业虚拟化环境可选的解决方案,另外相比 Openstack 的庞大和复杂,oVirt 在企业私有云建设中具备部署和维护使用简单的优势。

oVirt的功能

oVirt支持虚拟化环境所需的绝大部分功能,包括:

    为管理员和普通用户提供了 WEB 门户;
    支持多虚拟数据中心、多集群管理;
    FC-SAN/IP-SAN/本地/NFS不同存储架构;
    目前已经支持超融合(glusterfs)部署架构;
    虚拟计算、虚拟存储、虚拟网络的统一管理;
    虚拟机热迁移,存储热迁移;
    物理主机宕机的高可用;
    负载均衡等集群资源调配策略。

oVirt 架构

一个标准的oVirt部署架构应包括如下三个主要部分:

  (1)1个ovirt-engine,用来进行管理虚拟机(、开关启停)、配置网络和存储等操作;
  (2)1个或多个主机(节点),用来运行虚拟机;
  (3)1个或多个存储节点,用来存放虚机镜像和iso镜像;

 engine中有一个认证服务(组件)用来实现用户和管理员认证。

主机节点是安装有vdsm和libvirt组件的linux发行版,也包含一些用来实现网络虚拟化和其它系统服务的组件。自Fedora17以后的linux发行版都支持(推荐使用centos),还有oVirt-node,oVirt-node是一个基于发行版精简的系统,只包含足够支撑虚拟化运行的组件。
存储节点可以使用块存储或文件存储,可以是利用主机节点自身的存储做存储节点(local on host模式),或者使用外部的存储,例如通过NFS访问,或者是IP-SAN/FC-SAN。还有一种就是超融合架构,通过gluster将主机节点自身的磁盘组成池来使用,同时能够实现高可用和冗余。

组件架构图

主要组件:

Engine(oVirt-engine)——oVirt的管理组件,管理oVirt主机,管理虚机、存储、网络;
管理门户——Engine为管理员提供的web入口;
用户门户——Engine为普通用户提供的web入口;
REST API——通过这个api可以允许程序进行虚拟化管理操作,oVirt的命令行工具和python SDK就是调用的此api;
CLI/SDK——命令行接口和SDK提供一种与engine通信的方式;
数据库——engine使用Postgresql数据库来持久化数据;
主机代理(VDSM)——主机节点上用于与engine通信的组件,接收engine的命令执行虚机的相关操作;
虚机代理(Guest Agent)——运行于虚机内部,通过一个虚拟串口与外部通信,向engine提供所需的信息;
AD/IPA——目录服务,engine通过目录服务来获取用户和组的信息,根据engine的权限进行控制;
DWH(数据仓库)——数据仓库组件使用Talend对从数据库中获取的数据进行挖掘,并存入历史数据库中;
报告引擎——使用Jasper根据历史数据库中的数据生成系统资源使用报告;
SPICE客户端——用户用来访问虚机的工具。

管理引擎

oVirt引擎是一个基于JBoss的Java应用程序(以前是C#),它作为一个Web服务运行。该服务直接与主机上的VDSM进行通信,以部署,启动,停止,迁移和监视VM,还可以从模板创建新的存储映像。

它是基于领先的性能,可扩展性和安全基础架构技术的服务器和桌面虚拟化的大规模集中式管理。

引擎提供的一些功能:

  1. VM生命周期管理
  2. 通过功能/ AAA进行验证
  3. 网络管理 - 添加逻辑网络,并将它们连接到主机
  4. 存储管理 - 管理存储域(NFS / iSCSI / Local)和虚拟VM磁盘
  5. 高可用性 - 在其他主机上自动从故障主机重新启动来宾虚拟机
  6. 实时迁移 - 在主机之间移动运行的虚拟机,停机时间为零
  7. 系统调度程序 - 根据资源使用/策略持续负载平衡虚拟机
  8. 节电器 - 在非高峰时间将虚拟机集中在更少的服务器上
  9. 维护管理器 - 在计划维护时段期间不需要为虚拟机停机。
  10. 映像管理 - 基于模板的配置,自动精简配置和快照
  11. 监控 - 针对系统中的所有对象 - 虚拟机客户,主机,网络,存储等
  12. 导出/导入 - 使用OVF文件导入和导出虚拟机和模板
  13. V2V - 将虚拟机从VMware和RHEL / Xen环境转换到oVirt环境

下图显示了oVirt引擎组件中的不同图层:

主机代理(VDSM)

VDSM是Python开发的一个组件,它涵盖了oVirt Engine用于主机,虚拟机,网络和存储管理所需的所有功能。

  1. VDSM API基于XML-RPC(计划迁移到REST API)。这就是ovirt-engine如何与VDSM通信。
  2. 配置主机,网络和共享存储
  3. 使用libvirt进行VM生命周期操作
  4. 多线程,多进程
  5. 通过virtio-serial与客座代理通话
  6. 为可扩展至数百个节点的LVM添加定制集群支持
  7. 在受支持的存储类型(本地目录,FCP,FCoE,iSCSI,NFS,SAS)上实现分布式映像存储库
  8. 多主机系统,一个并发元数据编写器
  9. 在数据写入器中线性缩放

基于Web的用户界面

下图提供了oVirt用户界面体系结构的高级概述:

  • Google Web Toolkit:基于Java的SDK,提供用于构建Web应用程序的工具和API
  • GWT平台:遵循GWT 的Model-View-Presenter框架
  • oVirt GWT-Common:模块包含小部件,抽象和基础级别等常用组件。
  • oVirt UI插件:允许在运行时通过基于JavaScript的插件扩展WebAdmin UI的功能

oVirt UI围绕以下概念而设计:

  • Web浏览器作为应用程序平台,能够通过基于JavaScript的应用程序提供丰富的用户体验
  • 依赖注入和事件总线来采用松散耦合的组件架构
  • 模型 - 视图 - 演示者用于演示文稿(视图)和相关业务逻辑之间的清晰分离

客户机代理

客户端代理为oVirt引擎提供附加信息,例如访客内存使用情况,客户机IP地址,安装的应用程序和sso。

建筑细节:

  1. Python代码,可用于Linux和Windows客户端
  2. 通信是通过virtio-serial完成的
  3. Windows 的SSO基于 gina模块和Windows 的凭证提供程序
  4. RHEL 的SSO基于支持KDE和Gnome的PAM模块

REST API

用于与oVirt Engine集成的RESTful API:

  1. 为所有API函数公开REST接口
  2. REST代表REpresentational State Transfer
  3. 围绕HTTP动词建模实体动作:get/put/post/delete
  4. 对某些状态更改使用“操作”
  5. 实体导航和操作

CLI / SDK

CLI 和 SDK 使用上面提到的REST API,支持命令行方式和SDK调用。