技术分享
oVirt架构
2021-06-08
oVirt Architecture
标准的oVirt平台包含三部分:
ovirt-engine:主要用于(批量)部署,监听,导入/导出,开关机,迁移,创建虚拟机 和 配置存储/网络等等
ovirt-nodes:物理服务器,虚拟化软件和虚拟机都运行在上面
storage-nodes:存储节点,主要存储虚拟机的镜像和ISOs
平台支持备份/恢复/升级.
当然,一般身份验证服务部署在engine外,以第三方的形式和engine进行集成,主要用于普通用户和管理员登陆时的相关信息的验证.
ovirt-nodes是一个定制化的只读的类Linux系统,包含VDSM,libvirt和qemu-kvm,对外主要提供kvm的虚拟化,其中有cpu/io/network虚拟化.
storage-nodes能够使用块存储或者文件存储,存储类型可以是本地存储/共享存储。例如Glusterfs类型的存储技术通过POSIXFS来提供支持。对存储域进行池化,就是存储有一个存储池的概念,它对外保证存储的高可用和冗余。根多相关ovirt的存储技术可以查看连接storage-terminology
架构预览
下面对oVirt平台的架构以及其内部不同组件用图和文字来详细描述:
下面是ovirt平台内不同的组件,它们主要包括:
1. Engine(ovirt-engine)-对物理服务器进行统一管理,允许用户创建和部署新的虚拟机
2. Admin Portal-engine的webadmin页面,主要用于系统的管理员登陆,里面可以进行平台内所有的操作
3. User Portal-主要用于普通用户登陆的页面,里面只能进行一些虚拟机的基本操作
4. REST API-可以通过应用调用它提供的API进行一系列的虚拟化操作,它对外提供命令行和python SDK
5. CLI/SDK-engine对外提供命令行接口和SDK来和它进行操作
6. Database-使用的是Postgres数据库,主要用于提供对平台数据的存储,支持备份和恢复功能
7. Host agent(VDSM)-oVirt engine通过和它进行通信在服务器上对虚拟机进行操作,作为一个中间层的作用,向上和ovirt engine通信,向下连接虚拟化软件qemu-kvm,主要对网络/计算/存储资源的调度和管理
8. Guest Agent-它被安装在虚拟机内部,主要功能是给ovirt-engine提供这台虚拟机的各种资源的使用信息,和ovirt-engine通过虚拟串口通信
9. AD/IPA-目录服务系统,ovirt-engine通过他们获取到平台内域用户的登陆权限
10. DWH(Data Warehouse)-数据仓库通过ETL架构进行数据的采集,并将数据保存在history DB(数据库-‘ovirt_engine_history’)内
11. Reports Engine-使用Jasper Reports架构对history DB内的数据进行页面展示
12. SPICE client-用户可以通过spice客户端访问虚拟机
Engine
ovirt-engine 对外提供一个web服务,是一个JBoss-based的java应用。它直接和VDSM通信(使用JSON/XML RPC),对服务器上的虚拟机进行部署,开机,关机,暂停,迁移和监听等一系列的操作,还可以基于存储域内的模板来创建VM;
它是一个高性能,可扩展性强和具备安全基础设施技术的一个大规模集中管理的服务器和桌面虚拟化平台.
下面是它的一些特性:
1. 具备虚拟机完整的生命周期管理
2. 通过AAA()进行安全的用户认证和授权
3. 网络管理-逻辑网络管理,逻辑网卡的bond模式,支持linuxBridge,可以划分vlan进行各种网络的隔离等等
4. 存储管理-对存储资源进行池化,对外以存储域的形似展示,支持本地存储和共享存储–(NFS/iSCSI/LVM/GlusterFS/FC)
5. 高可用-体现在虚拟机的高可用,例如一台服务器出现了问题,那它上面的虚拟机就会自动的迁移到另外资源充沛的服务器上
6. 热迁移-在虚拟机开机的状态下,可以不切断业务的进行虚拟机的迁移操作
7. 系统调度-可对服务器上的资源使用率和负载按照预先定义的策略进行虚拟机的load balance
8. 节能-在非高峰段将虚拟机集中在尽量少的服务器上
9. maintenance manager-No downtime for VMs during planned maintenance windows. Hypervisor patching.
10. 镜像管理-支持快照,快照预览,精简制备
11. 监听-可以对虚拟机,主机,网络,存储进行监听
12. 导入/导出-虚拟机/模板的到处导出,使用OVF文件格式来实现
13. 存储域的分离和附加-可以对存储域进行分离,然后附加到另一个ovirt平台内,或者从这个数据中心分离附加到另一个数据中心
14. V2V-支持虚拟机从VMWare,RHEL/XEN的环境导入到ovirt环境内。
15. 支持和openstack的模块进行对接例如neutron,glance
oVirt-engine内的各个层的模块:
Engine-Core架构
主要分为:
1. DB Broker-响应所有的数据库层的相关操作
2. VDS Broker-响应和vdsm所有的相关操作
3. LDAP Broker-响应和AD域的相关操作
4. Backend Bean-单例的Bean模式,用来响应各种actions,queries,monitoring的操作
Host Agent(VDSM)
VDSM使用python开发的,响应所有ovirt-engine端对主机,虚拟机,网络,存储的操作.
1. vdsm和engine使用JSON/XML-RPC通信
2. 可以对主机,网络,存储进行配置
3. 使用libvirt对虚拟机的生命周期管理
4. 多线程,多进程的
5. 和guest-agent用virtio-serial进行交流
6. 对于LVM类型的集群可以支持到上百个节点
7. 支持多种存储类型
8. 多主机共用一组元数据
9. 写数据的线性扩展
钩子机制(Hooks mechanism)
允许管理员自定义脚本
允许oVirt在一个kvm功能完全实现之前就能将它集成进来
提供一个简单的方法来测试kvm/libvirt/linux的新功能
钩子在vdsm调用libvirt启动虚拟机之前触发
钩子可以改变VM的初始化信息,然后vdsm通过改变后的信息来启动虚拟机
MOM整合
vdsm集成了MoM(管理超量使用的 KVM 主机资源)。MoM初始化配置了一些策略规则。用户可以使用这些策略来调整高超分配内存的主机或者是对主机进行一些安全的操作。为了控制mom实例,vdsm可以加载一个mom配置文件和mom策略文件,然后用它们来设置mom的行为。在vdsmd进程启动时候,会导入mom和用配置文件和策略文件来初始化它。mom的API定义在API.py文件内,可以很好的用它来控制每个运行在主机上的vm的内存。MOM以线程的方式运行在vdsmd守护进程内。
Web-based User Interface
下面的图片展示了oVirt用户端的架构:
Google Web Toolkit:java SDK,对外提供操作工具和APIs来创建web页面
GWT Platform: Model-View-Presenter framework following GWT best practices
GWT INjection: GWT的注入依赖框架
oVirt GWT-Common: module housing common components such as widgets, abstract and infra-level classes, etc.
oVirt UI Plugins: feature allowing WebAdmin UI to be extended by JavaScript-based plugins at runtime
下面的图片展示了一个典型的GWT开发流程:
oVirt UI围绕下面的理念设计的:
1. web浏览器作为应用平台,通过基于JavaScript的应用程序提供丰富的用户体验
2. 依赖注入和事件总线采用松耦合组件结构
3. 用Model-View-Presenter模式来分离视图和相关的业务逻辑
REST API
oVirt Engine集成了RESTful API:
1. REST接口对外暴露所有的API功能接口
2. REST表示状态转移
3. 基于HTTP协议的操作类型
GET PUT POST DELETE
4. 状态转换的时候还是用’actions’表示
5. Self describes – entity navigation and actions
REST的相关概念:
Client–server
Stateless
Cacheable
Uniform interface
CLI/SDK
CLI和SDK都使用了上面提到的REST api。
SDK:
1. python的SDK允许在不同实体上执行操作
2. 完整的协议抽象
3. 完全兼容oVirt的API结构
4. Auto-completion
5. 自描述的
6. 直观和易于使用
7. 自动生成
CLI:
1. 基于python的命令行接口
2. 完整的协议抽象
3. 完全兼容oVirt的API结构
4. 每个命令的帮助文档很详细
5. 直观和易于使用
6. 自动生成
Reports Engine
以Jasper Reports架构为基础
允许对报表数据的导入导出
丰富的engine数据显示
3.1 报表调度
3.2 数据过滤
3.3 支持多种格式的导出
3.4 可以创建各种工作模板
DWH
DWH主要包含:
1. ETL
2. 从数据库内定期轮询数据
3. 数据类型
3.1 能配置版本跟踪
3.2 静态数据-每小时/每天汇总数据
Guest Agent
GuestAgent给oVirt engine提供了详细的信息,例如VM的内存使用率,ip地址,已安装的应用和SSO.
架构详情:
1. 用python编写的,linux和windows guests都能用
2. 通过virtio-serial和外部通信
3. 对于SSO功能,XP是基于gina模块的,windows7是通过给它提供一个证书
4. RHEL6是基于PAM来使用SSO的,KDE和Gnome都支持它
- 标签:
-
容灾备份