返回顶部
首页 > 资讯 > 数据库 >XenServer架构之XAPI
  • 882
分享到

XenServer架构之XAPI

2024-04-02 19:04:59 882人浏览 泡泡鱼
摘要

一、Xapi对资源池的管理作为XenServer的管理工具集,XAPI管理XenServer的主机,网络和存储。不管是OpenStack还是CloudStack,如果使用XenServer作为虚拟化底层,其

一、Xapi对资源池的管理

作为XenServer的管理工具集,XAPI管理XenServer的主机,网络和存储。不管是OpenStack还是CloudStack,如果使用XenServer作为虚拟化底层,其对XenServer的调用必然使用XAPI。真正意义上的XAPI在XenServer中主要提供XenCenter以及资源池中各个XenServer主机的通信的接口。

首先,资源池中的所有XenServer主机的操作请求都是通过XAPI传递给Dom0的,同时在池中的所有XenServer主机间的通信也是通过XPai进行传递。例如:资源池中数据库(XenServer配置数据库)会通过XAPI在所有的XenServer主机之间进行同步,以便在资源池Master宕机之后,其他XenServer主机能够正确而迅速的取代Master,并维持资源池的功能和服务。其简要示意图如下所示:

XenServer架构之XAPI

 如上图所示,在创建XenServer资源池的时候,默认会选定一台XenServer主机作为Master,即所谓的资源池主。Master的作用是协调和定资源池内的各种资源。默认情况下在创建资源池的时候,加入资源池的第一台XenServer主机被默认推选为Master。当资源池的Master主机出现故障不在可用时,Master是可以进行角色转移的。其转移的情况有两种:一是进行手动转移,二是在开启资源池高可用的情况下进行自动转移。

    在一个资源池中虽然所所有的XenServer主机都有XAPI,并在XML / rpc接口上运行了Http 80端口和TLS / SSL的443端口,但控制操作只会在Master主机上进行处理。如果将一个控制操作指令发送给资源池的Slave主机,Slave主机上的XAPI将会将该控制指令重定向到Master主机,并且Slave主机上的XAPI将会产生一个XAPI重定向的错误消息并将其存储在日志中。为了提高效率以下操作被允许在Slave主机进行:

  • 查询性能计数器(以及主机的历史)

  • 连接到VNC控制台

  • 导入/导出(特别是本地存储上的磁盘时)

由于Master主机充当协调和锁管理器,其他主机在需要调用资源的时候就会经常和Master产生大量的交互。当然Slave主机之间也会进行彼此的交互,比如说:

  • 转移VM的内存映像(虚拟机迁移)

  • 镜像磁盘(存储迁移)

其次,XenCenter通过XAPI来读取XenServer主机的配置、管理、License信息、数据库信息等,同时XAPI也通过和上篇文章我们所讲述的XenServer核心运行的toolstack系列工具,包括如Xenopsd、Xcp-rrdd、Xcp-networkd、SM、perfmon、mpathalert、snapwatchd、stunnel、xenconsoled和xenstored等所有的组件进行交互,这些组件通过和XAPI进行通信并监控XAPI的命令接口,根据XAPI发送过来的命令执行相应的功能控制。

下图显示了一台XenServer主机上运行的软件。所有的主机上运行相同的软件。我们可以看到XAPI和其他的Toolstack所处的一个关系。

XenServer架构之XAPI

 

二、XAPI架构及运行机制解析

下面的关系图显示了xapi内部运行关系及架构:

XenServer架构之XAPI

图的顶部显示连接XenAPI客户端:XenCenter、XenOrchestra、OpenStack以及CloudStack。这些客户端都是通过XenAPI(XenAPI的XMLRPC通过HTTP POST)和HTTP GET/PUT在端口80和443与XAPI建立通讯。并且双方之间建立互信是通过使用PAM认证(默认情况下使用本地passwd和group文件)或通过Active Directory进行认证。

其中XAPI中的Xen API又细分为三类:

* master-only:这是最重要的API也是最常用的API类型,顾名思义,这种类型的API只有Master能够接受并进行执行。

* nORMally-local:这些API是为了提高性能的前提下,允许Slave主机执行的特殊API,其往往和主机以及虚拟机的性能相关。如磁盘输入/输出和虚拟机控制台连接这些接口控制的API,这些API直接有Slave主机在本地就进行控制执行,不需要再有Master记下来转发,提高了访问速度和性能。

* emergency:这些API归类为紧急情况下的API处理方案,例如当Master主机脱机的情况下,对资源池的紧急修复等。

对于API的执行,在资源池正常的情况下,XAPI会首先判断API的类型。如果用户在XenCenter中对Slave的操作是需要通过Master来执行的API,那么Slave主机的XAPI就会将该API重定向到Master主机,交由Master主机进行执行控制。在确认了API类型之后,即通过了初步检查,API调用就会进入“消息转发”层—控制、锁定资源(通过current_operations机制) - 决定哪些主机应该执行该请求。如果请求是在本地执行,主机直接调用函数或者进程使用功能即可;否则消息转发层就会将该请求同步给其他需要一同执行的主机上。

注:XAPI目前使用“每个请求一个独立线程”的模式,导致将为每个请求创建一个完整的POSIX线程。甚至当这个请求在这台主机上创建后被转发给其他的主机,这个创建的线程仍然存在在第一次被创建的主机上,毫无疑问,这种模式的弊端必然是在请求数量较多时,导致XenServer主机的处理阻塞,影响虚拟机的性能。

接下来API具体如何执行调用呢?如果XenAPI的调用是关于VM生命周期操作,那么它将会通过JSON-RPC(类似Unix域套接字)转换成具体的负责VM生命周期管理的组件Xenopsd 的API调用。XAPI和Xenopsd组件之间,对于每一个调用采用类似异步消息队列的概念,XAPI的每一个调用不需要Xenopsd立即返回执行结果。所以目前XAPI将每一个任务(所有操作在任务的上下文中运行)都绑定到Xenopsd任务上,XAPI在接受到调用时将其所对应的任务扔给对应绑定的Xenopsd之后就不在过问了。具体有无执行成功需要等待Xenopsd给它的反馈,所以我们在XenCenter中执行一个命令之后看见任务的进度条在走,但是什么时候走完进度条需要底层的执行组件给XAPI反聩,XAPI再其状态更新在状态数据库中,XenCenter会与XAPI进行不断的通讯以收取状态更新。如果Xenopsd组件执行命令出错,会返回相应的错误信息并存储在日志中。

如果XenAPI的调用是存储操作,那么“存储访问”层 -- 验证存储对象处于正确的状态(SR连接/分离;VDI连接/活动状态、只读/读写),然后调用存储管理API(SMAPI)V2接口中的相关操作;同时其中还存在着一个SMAPIv2到SMAPIv1转换器,可以生成必要的命令去跟SMAPIv1插件(EXT,NFS,LVM等)并执行它这些插件支持的存储类型。

在对存储进行API调用的时候,其都是属于Master类型的API调用,其Slave主机是没有权限对磁盘进行执行操作的。因此在内部,SMAPIv1插件使用特权访问XAPI的数据库,会将被视为只读权限的客户端直接设置只读字段属性(例如VDI.virtual_size)。同时由于共享的存储同时在资源池内被多个主机进行访问,为了保证数据的安全性,只能允许同一时刻只有一台主机对其进行对其进行访问。因此该SMAPIv1插件还协同XAPI对存储的访问进行控制,其采用共享存储常用的锁机制来对多台访问共享存储的主机进行控制。

XAPI的数据库包含主机和虚拟机元数据和资源池信息。该数据库被资源池的Master主机将其副本加载到内存中,与资源池的其他所有Slave进行共享,其他Slave主机通过远程的方式访问该数据库,同时将其同步到本地主机。数据库将每个API对象所实现的event.next和event.from的存储在数据库中。在接收到数据后是以XML格式并且是异步刷新的方式存储到磁盘中的。如果“重做日志”被启用,那么所有数据库的写入数据会被同步以增量的方式存储到给出的共享的块设备中。如果没有启用重做日志,那么XAPI在重启之后,就可能会丢失最近的更新。

同时XAPI还在资源池内实现主机的高可用。高可用性是在资源池内当其中的一台主机发生故障时,还能保证资源池内的正常运行意以外,还保证出现故障的主机上运行的虚拟机在其他主机上重启。 XAPI和名为xhad的组件进行紧密集成,实现XenServer资源池的高可用。Xhad是一个主机活跃度监视器。当xhad确认主机发生故障时(其通过监视超时时间和主机与存储等该设备的连接状态来判断),那么XAPI将重新启动出现故障并且已被HA标记为 “受保护”的虚拟机。 XAPI还可以限制资源利用,以防止资源池变得过于超载,以应对有多个主机故障时没有资源运行HA。

最后XAPI还承载了实现XE CLI的任务,其XE执行效率和XAPI直接关联。XE程序远程控制访问XAPI命令行,XAPI则根据返回一shell界面,显示系列简单的命令(提示输入;打印屏幕;取文件;退出等等)。


您可能感兴趣的文档:

--结束END--

本文标题: XenServer架构之XAPI

本文链接: https://lsjlt.com/news/38937.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • XenServer架构之XAPI
    一、XAPI对资源池的管理作为XenServer的管理工具集,XAPI管理XenServer的主机,网络和存储。不管是OpenStack还是CloudStack,如果使用XenServer作为虚拟化底层,其...
    99+
    2024-04-02
  • cloudstack4.6 + xenserver架构云环境部署
    cloudstack4.6 + xenserver架构云环境部署一、提供简单类似cloudstack架构如下(仅供简单参考):二、安装cloudstack4.6+xenserver6.5 &nbs...
    99+
    2024-04-02
  • mysql 架构类问题之 MMM 架构
    MMM 和 MHA 架构 MMM 和 MHA 架构的作用 对主从复制集群的 master 进行监控 当 master 宕机后把写 VIP 迁移到新 master 重新配置集群中其他 slave 对新的 master 同步 MMM 架构 ...
    99+
    2014-12-31
    mysql 架构类问题之 MMM 架构
  • mysql架构类问题之MHA架构
    MHA 架构 适用的主从复制架构 主 / | 从1 从2 从3 故障转移步骤 选举具有最新更新的slave 尝试从宕机的master保存二进制日志 应用差异的中继日志到其他slave 应用从master保存的二进制日志 提升选举的...
    99+
    2015-04-12
    mysql架构类问题之MHA架构
  • mysql之MHA架构
    角色Ip地址主机名Server id类型master192.168.1.131master11主(写)Master(candicate)192.168.1.132Master22从(读)Slave192.1...
    99+
    2024-04-02
  • MySQL高可用架构之MHA架构全解
    目录一、介绍二、组成三、工作过程四、架构五、实例展示MHA(Master HA)是一款开源的 MySQL 的高可用程序,它为 MySQL 主从复制架构提供了 automating m...
    99+
    2024-04-02
  • 浅谈架构模式变迁之从分层架构到微服务架构
    目录前言单体架构分布式架构软件设计中的谬误谬误1:网络是可靠的谬误2:时延是0谬误3:带宽是无限的谬误4:网络是安全的谬误5:网络拓扑一成不变谬误6:只有一个网络管理员谬误7:通信成...
    99+
    2024-04-02
  • Android 架构之数据库框架搭建
    目录1、先创建对应相关操作的注解1.1 bTable 标识表 1.2 DbPrimaryKey 标识主键 1.3 DbFiled 标识成员属性 2、创建对应表操作...
    99+
    2024-04-02
  • Android 架构之数据库框架升级
    目录1、备份原数据库File文件2、数据库升级XML编写 updateXml.xml3、创建XML解析器 3.1 对应工具类 DomUtils.class 3.2 对应XM...
    99+
    2024-04-02
  • MySQL高可用架构之MHA
    一、MHA介绍   MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可...
    99+
    2019-01-11
    MySQL高可用架构之MHA
  • MySQL之架构简单分析
        上图为MySQL的简易架构图,给您有一个大概的概念,下面我将为您进行进一步的分析。 连接器: 当连接MySQL数据库时,等待的将是MySQL服务端的连接器;连接器的职责是和客户端建立连接、获取权限、维持和管理连接。客户端连接命令一...
    99+
    2014-12-17
    MySQL之架构简单分析
  • 漫谈架构之微服务
    目录一、简介二、微服务和单体服务三、微服务的特征3.1、组件服务化3.2、组织的划分3.3、服务之间的通信3.4、去中心化治理3.5、去中心化数据管理3.6、自动化部署3.7、对异常...
    99+
    2024-04-02
  • Android学习之Flux架构入门
    Flux 架构介绍 Flux 架构 被Facebook使用来构建他们的客户端web应用。跟Clean Architecture一样,它不是为移动应用设计的,但是它的特性和简单可...
    99+
    2022-06-06
    android学习 flux Android
  • 免费架构之ADF12C essentials+MYSQL5.5.40+GLASSFISH4.1
    ...
    99+
    2024-04-02
  • Oracle学习之DATAGUARD(一) DG架构
        DataGuard运行原理非常简单:传输日志、应用日志。下图表示了DG的基本架构日志传输服务将主库产生的日志数据传到从库。应用服务(Apply Service)验证日志...
    99+
    2024-04-02
  • Mongo之架构部署(Replica Sets+Sharding)
      Mongo之架构部署(Replica Sets+Sharding)     一、环境   要构建一个 MongoDB Sharding Cluster,需要三种...
    99+
    2024-04-02
  • MySQL高可用架构之Galera Cluster
    MySQL高可用架构之Galera Cluster1、实验准备及拓扑至少需要三个节点node1 192.168.150.137 node2 192.168.150.138 node3&n...
    99+
    2024-04-02
  • MySQL架构优化之字符集
    MySQL架构优化之字符集 MySQL应用于大中小企业当中,字符集标准化也是MySQL架构优化中重要的一部分。通常建议中英文混合环境建议选择utf8字符集。 1.操作系统Linux cat /etc...
    99+
    2024-04-02
  • XenDesktop学习笔记3之架构
    架构: 1、物理组件: DDC     一台              PVS+XenCenter 一台 AD+DHCP+DNS 一台 XenServer   一台 用户设备 一台 2、软件要求 XenServer 5.5         ...
    99+
    2023-01-31
    架构 学习笔记 XenDesktop
  • MySQL之高可用架构详解
    目录引言MySQL高可用一主一备:MySQL主从同步的几种模式:总结引言 “高可用”是互联网一个永恒的话题,先避开MySQL不谈,为了保证各种服务的高可用有几种常用的解决方案。 服务...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作