ConVirt:您虚拟工具箱中的新工具
虚拟化现在已成为现代企业的支柱。随着越来越多的企业转向虚拟范式,管理这些新的虚拟资源成为任何部署的关键部分。对于使用基于 Microsoft 或 VMware 的虚拟机监控程序的管理员来说,强大的管理工具可用于保持其虚拟环境的秩序。不幸的是,这些产品及其随附的工具价格不菲。好消息是,由于其低性能开销,廉价的开源虚拟化正在兴起。然而,大规模采用开源虚拟化的主要障碍之一是缺乏强大的管理工具。virt-manager 是最知名和最常用的工具,虽然它是一个很棒的工具,但它无法与大型供应商推出的企业工具相提并论。这就是 ConVirt 的用武之地。
ConVirt 是一款开源工具,能够从单一管理平台管理多种类型的虚拟机监控程序,包括 Xen、KVM,现在还包括 VMware。在评估 ConVirt 是否满足您的需求时,最好将其视为虚拟机监控程序原生工具的前端,它提供了独立虚拟机监控程序中不具备的扩展功能。尽管与 virt-manager 有一些重叠,但 ConVirt 增加了一个额外的企业级可管理性级别。ConVirt 目前提供三个层级:开源版、企业版和企业云版。本文重点介绍开源版本。开源版本不包含管理 VMware 项目的功能,因此本文的测试环境仅包含 Xen 和 KVM 服务器。即使我在这里没有介绍,但能够从同一管理平台管理 VMware 主机以及 KVM 和 Xen 主机,应该会引起许多管理员的兴趣。
让我们开始安装 ConVirt 管理服务器或 CMS。ConVirt 可以安装在大多数 Linux 版本上,也可以作为预配置的虚拟设备导入到 KVM 或 Xen 服务器中。我选择在运行 CentOS 6.2 的物理服务器上部署我的 CMS,以提供充足的存储空间(虚拟设备大小约为 2-3GB),尽管该设备可能会让您更快地启动并运行。确保无论您选择哪种安装方法,都要在您的 CMS 以及您要通过控制台管理的受管服务器/主机上打开所有必要的端口(TCP 8081、8006、VNC 端口和 SSH)。
术语“受管服务器”指的是那些运行由 ConVirt 管理的虚拟机监控程序的主机,并且可以与术语“主机”互换使用。按照 Convirture Wiki 站点上提供的安装程序执行 CMS 的安装。大部分安装由一个脚本处理,该脚本会拉取依赖项并安装 MySQL。我不会详细介绍服务器安装,因为它在网站上有详细记录,我只是在这里重复这些信息。
CMS 安装完成后,通过 http://your_ip_address:8081 访问您的管理页面(图 1)。使用默认登录名“admin/admin”打开主控制台。对于那些习惯使用 VMware vSphere 的人来说,这个界面会感到熟悉。布局分为三个主要面板:左侧的导航面板,页面中间显示所选项目的显示面板,以及底部显示任务结果的面板(图 2)。

图 1. 主登录屏幕

图 2. 数据中心的初始视图
导航窗格在逻辑上分为一棵树,您的数据中心位于顶部,服务器池和模板列在其下方。此轮廓反映了 ConVirt 中资源的组织方式:数据中心→服务器池→受管服务器(主机)→客户机。您的数据中心是虚拟环境的最顶层划分。它可以是一个站点或一个组织单元。数据中心下是服务器池,它们将共享公共项目(如存储和虚拟网络配置)的类似受管服务器分组在一起。受管服务器与驻留在其上的任何客户机/虚拟机一起放置在服务器池中。模板属于它们自己的类别,但也可以从导航窗格中获得。模板是在配置时使用的预配置设置组,用于划分/定义可用于新客户机的虚拟资源(处理器、内存、存储和 NIC)。
部署的下一步是准备您的主机以使其成为受管服务器。特定的虚拟机监控程序在添加到 CMS 之前有各自的要求,但是准备每个主机的过程对于每个主机大致相同。在每个主机上创建一个网络桥接,从站点下载 ConVirt 工具并安装任何依赖项。然后在每个受管/服务器主机上配置 SSH 以进行 root 访问,最后,运行 convirt-tool setup
命令。Debian/Ubuntu 用户应注意,您需要手动在 root 帐户上设置密码,以便从 CMS 管理任何虚拟机监控程序。我还建议您使用相同的名称命名您创建的任何桥接(例如,KVM=br0,Xen=Xenbr0),因为这有助于标准化您的客户机的网络选项。对于本文,我创建了两个 KVM 服务器和一个 Xen 服务器以使用 ConVirt 进行管理。
主机准备就绪后,您现在可以将它们添加到 CMS。这首先将主机添加到服务器池。您可以使用预配置的服务器池(桌面、服务器、QA 实验室)或创建您自己的服务器池。我创建了一个额外的池来玩,我将其命名为“生产”,以防我搞砸任何东西,它不会影响默认池。当您选择了您的池时,右键单击它并选择添加服务器。在出现的屏幕上,选择您的平台,Xen 或 KVM,并填写主机名或 IP 地址。
如果您没有为主机上的 root 访问配置 SSH,服务器将失败。如果服务器添加成功,它现在应该显示在您选择的服务器池下,并带有小 K (K) 或 X (Xen) 图标(图 3)。单击新添加的服务器以在中央窗格中查看有关您的主机的性能信息(图 4)。从这个显示中,您还可以查看主机上运行的客户机的数量、类型和状态。

图 3. 我们的新服务器组

图 4. 我们的一台 KVM 服务器上的实时性能统计数据
继续将您的所有主机作为受管服务器添加到控制台,直到它们全部添加完毕。然后,您可以通过右键单击受管服务器并选择导入虚拟机配置文件来导入主机上任何预先存在的虚拟机。您可能还会从同一个菜单上下文中注意到,您可以在池之间移动服务器。此功能在组织变更或将测试服务器移动到生产环境时非常有用。请注意,在池之间移动服务器也会移动驻留在其上的任何虚拟机,因此请注意将服务器/客户机移动到新池可能应用的任何配置更改。您还需要在移动服务器之前关闭任何正在运行的客户机的电源。
因为我已经介绍了如何将现有客户机添加到受管服务器,所以让我们从模板创建一个新客户机(这也称为部署)。为了了解您的所有选项,让我们从 CD 部署一个客户机虚拟机,以及使用参考磁盘从黄金镜像克隆一个客户机。
开箱即用,ConVirt 有两个预配置的模板用于部署。这些模板包含从 CD 安装的特定操作系统的通用配置设置。从内置模板部署很容易。只需右键单击一个模板,然后选择部署以在您选择的受管服务器上创建一个客户机。
对于此示例设置,让我们从现有的 Linux CD 模板创建一个 Linux 桌面。单击部署后,系统会询问您将新客户机虚拟机放置在哪个服务器上,然后提示您为它提供一个名称(图 5)。然后,ConVirt 会根据您的名称创建一个客户机,并创建一个 10GB 的虚拟硬盘驱动器,并将客户机映射到部署它的主机的物理 CD/DVD。

图 5. 从 Linux 模板部署客户机
接下来,将您的物理安装介质插入主机的物理驱动器。一旦客户机虚拟机出现在主机下,通过右键单击新客户机并单击启动来启动它。
如果您不想使用 CD,您还可以选择从 .iso 文件启动。为此,请在模板或客户机本身的设置中将您的 /dev/cdrom 的路径更改为可访问的 .iso 文件(图 6)。虚拟机启动后,右键单击它并选择查看控制台。如果您有启用 Java 的浏览器,您可以通过 Web 控制台访问新虚拟机的桌面,或者如果您选择另一个 VNC 客户端,ConVirt 将显示访问虚拟机所需的 IP 和端口。如果您更喜欢通过 SSH 管理您的主机,您也可以从客户机的右键单击上下文菜单启动会话。

图 6. 将 .iso 挂载到客户机 CD-ROM
从 CD 部署对于自定义机器或一次性构建来说是不错的选择,但是如果您必须一次启动多个客户机,这是一种非常低效的方法。更有效的方法是创建一个虚拟机并一遍又一遍地克隆它,这在 ConVirt 中是可能的。为了演示这种部署方法,我创建了一个 Windows XP 机器的原始(或“黄金”)镜像。此虚拟机包含所有必要的设置和软件,因此我不需要对每个启动的新虚拟机进行更改。在黄金镜像准备就绪后,在虚拟机监控程序或 ConVirt 中关闭其电源,并将客户机的 .xm 文件复制到单独的位置。在我的情况下,我将其复制到挂载在 ConVirt 和我的所有受管服务器上的 NFS 共享。然后,您需要在其新位置 gzip 您的 .xm 镜像,使其具有 .gz 扩展名。接下来,通过在模板部分右键单击 Windows CD 模板并单击创建类似选项来复制它。
您可以从头开始创建一个模板,但是复制和修改内置模板同样快捷。如果您有与预构建模板中找到的设置差异很大的非常自定义的设置,那么这可能是可行的方法。
当出现提示时,为您的模板提供一个新名称。一旦新模板出现在列表中,右键单击它并选择编辑设置选项。单击存储选项并删除为 hda 定义的现有存储。单击窗口顶部的新建按钮。在出现的窗口中,将选项字段设置为克隆参考磁盘。将参考磁盘类型更改为磁盘镜像,并将参考格式更改为 .gzip。在参考位置字段中,浏览或输入您的 .iso 文件的路径。将虚拟机设备:字段更改为“hda”。您的设置应类似于图 7 所示。

图 7. 克隆黄金镜像的部署设置
要从此模板部署新的克隆虚拟机,请右键单击它并选择部署。使用参考磁盘方法,ConVirt 会将 .gz 文件复制到其目标位置并将其展开到新虚拟机的所需大小。真正好的是,您可以指定比黄金镜像内部更大的磁盘大小。在我的 XP 虚拟机上,空间自动添加到客户机分区(通常不是一件容易的事)。最佳实践是将您的黄金镜像保持尽可能小,以适应您将部署到的尽可能多的不同大小的驱动器(虚拟或物理)。
在您的部署就位后,您可能会发现您需要将客户机移动到另一台主机以平衡服务器之间的负载,将虚拟机从一个网络站点或网段移动到另一个网络站点或网段,或者对主机执行维护,而不会对正在运行的客户机造成零停机时间。VMware 多年来凭借其 vMotion 功能在市场上占据主导地位,该功能可以很好地执行此任务。ConVirt 提供了相同的操作。
请注意,为了在主机之间迁移正在运行的客户机,两台主机都必须能够访问相同的共享存储。在迁移客户机时,您可能会遇到其他限制,例如两台主机都必须具有相同的处理器类型和/或必须位于相同的虚拟机监控程序平台(如 KVM 或 Xen)上,因此请相应地计划。我无法确定这是否是技术限制或 ConVirt 企业版中的解锁功能。无论如何,虚拟机监控程序中都有一些本机工具可以转换外来磁盘/虚拟机类型,以便导入到其本机平台中。在您满足所有先决条件后,迁移就像右键单击客户机并选择您的目标服务器一样简单。您可以在控制台的底部窗格中监视您的迁移任务。
我想提及的最后一个功能是 ConVirt 对共享存储的管理,因为我认为它很有用(图 8 和图 9)。通过设计人员基于树的方法来组织虚拟资源,您可以在数据中心级别设置共享存储,然后将其附加到服务器池,这使您能够在池之间混合和匹配您的存储。请注意,为了池中的所有服务器都使用该存储,它们必须使用相同的逻辑路径连接到该存储(如迁移)。我发现此功能非常有用,因为它真正简化了环境中任何联网存储资源(SAN、iSCSI 或 NFS)的分配。您还可以在池级别设置某些部署设置,这些设置会覆盖模板中的设置。这意味着您可以使用多个存储选项部署相同的模板。如果您在不同的站点或不同的部门中有服务器池,每个服务器池都应使用自己的存储资源,这将非常方便。

图 8. 共享存储详细信息

图 9. 可以使用此存储的服务器池
在本文中,我介绍了 ConVirt 的许多更出色的功能,但现在让我谈谈一些缺失的功能。在这样做之前,您应该认识到,当我谈论 ConVirt 和供应商生产的管理工具时,我是在比较苹果和橘子。即使比较 ConVirt 的企业版也不是完全准确的,因为 ConVirt 旨在管理异构虚拟环境,而 Microsoft 和 VMware 则针对其自己的同构平台进行了调整。
话虽如此,我对 ConVirt 仍然有一些不满。首先是它需要对受管服务器进行 root 访问才能与 CMS 通信,我确信大多数管理员不会对此感到满意。快照支持在开源版本中也明显缺失。虚拟机有一个名为休眠的选项可用,但这只会拍摄运行内存的快照,而不会拍摄底层磁盘的快照。当我意识到企业版中提供了快照时,缺少快照只困扰了我半秒钟。ConVirt 中缺少的最后一项是管理角色。您确实可以在控制台中创建用户和组,但据我所知,唯一能让您获得的是对 CMS 服务器上发生的任务的审计。感觉这像是以最基本的形式添加到产品中,但从未完全开发出来。
最后,这些都是小问题,因为 ConVirt 提供的实用程序远远超过了它缺少的少数功能。该软件确实为您提供了很大的灵活性,尤其是在 KVM 方面,而且您无可挑剔的价格点。我确信企业版中解锁的那些功能(快照、高可用性和跨越式虚拟网络)物有所值,并使其更符合供应商生产的管理产品。我知道 VMware 的成本有多高,而且我确信 ConVirt 的成本低于 VMware。我要说的是,当您同时管理不同的虚拟机监控程序时,您确实需要了解您的专业知识。我是每天使用 vSphere 的管理员之一,我已经习惯了同构环境,所以我真的必须深入了解 KVM 和 Xen 的底层才能使事情顺利进行。话虽如此,一旦它到位,我相信对于非 Linux IT 专业人员或需要在其虚拟环境中执行日常任务的管理员来说,它比 virt-manager 或命令行工具更容易管理。加上管理多平台虚拟机监控程序环境的能力,ConVirt 的价值显而易见。
资源Convirture 主站点:http://www.convirture.com
安装指南/Wiki:http://www.convirture.com/wiki/index.php?title=Convirt2_Installation