基于操作系统虚拟化的虚拟集群 【技术领域】
本发明涉及集群应用、 资源管理, 以及虚拟化技术。背景技术 计算机技术的能力, 包括 CPU、 内存、 存储器, 以及网络, 比许多应用的需求发展得 更快。计算机系统 ( 更具体来说, 集群 ) 的许多用户在该系统上只放了一个应用。这已经 导致计算机系统大大地利用不足。由于以下多种原因, 人们乐于每个应用使用一个系统 :
·安全性 - 把应用放在它们自己的系统上可以确保应用数据和应用处理的隔离。
·资源管理 - 应用的用户可以清楚地看到什么资源正在被使用, 而系统管理员可 以轻松地分配开销。
· 应用故障隔离 - 某些应用故障要求必须重新启动整个机器, 才能清除问题。把应 用放在他们各自的机器上, 确保了一个应用的故障不会影响其他应用。
新一代 CPU、 内存、 存储器, 以及网络技术相对于许多计算机应用的需求来说甚至 更强大。这会导致计算机系统在大多数情况下处于空闲状态。成本因素刺激人们寻找更好 地利用此设备的方式。
虚拟化技术的使用越来越广泛。一般而言, 虚拟化涉及在软件应用和物理资源之 间创建一个抽象层。有许多虚拟化方法。
一 个 现 有 的 操 作 系 统 虚 拟 化 技 术 是 位 于 加 利 福 尼 亚 Santa Clara 的 Sun Microsystems, Inc. 推 出 的 SOLARIS 操 作 系 统 中 可 用 的 SOLARIS 容 器 (SOLARIS Containers)。 SOLARIS 容器包括一起用来合并服务器和应用的多种不同的技术。 利用服务 器虚拟化, 可以将应用合并到数量少一些的服务器上。 例如, 多个虚拟服务器可以共同存在 于一个物理服务器上。
SOLARIS 容器实现虚拟化的方法涉及被称为 SOLARIS 区域 (SOLARIS zones) 的技 术和被称为 SOLARIS 资源池的技术。区域是机器上的在逻辑上将应用彼此隔离的分离的环 境。每个应用都接收专用的名称空间。换言之, 区域是一种沙箱 (sandbox)。资源池是诸如 处理器之类的一组物理资源。 SOLARIS 池功能被用来将系统资源划分为多个资源池, 以便进 行资源管理。SOLARIS 区域功能用于使操作系统虚拟化, 以提高安全性、 提供隔离和管理委 派。
当将应用与 SOLARIS 容器合并时, 将物理资源划分为若干个资源池。可以为每个 应用创建一个区域, 然后, 将一个或多个区域分配到每个资源池。
SOLARIS 容器涉及的另一种技术叫做公平共享调度器 (FSS)。当将多个区域分配 到同一个资源池时, 使用公平共享调度器。调度器软件允许将一个资源池中的资源按比例 地分配到应用, 即, 分配到共享同一个资源池的区域。
在 SOLARIS 容器的现有实现中, 池功能是静态的。 即, 必须预先定义池配置。 然而, SOLARIS 区域是动态的。可能定义了许多区域 ; 在特定的时间, 区域可能不会都在运行。可 以重新启动区域, 或者甚至将它们移到新的主机上。
在 SOLARIS 容器进行虚拟化的方法中, 区域和资源池提供了应用的包含。在应用 容器内, 该应用相信, 它正在在其自己的服务器上运行 ; 然而, 内核和若干个系统库在各种 容器之间共享。此外, 还根据配置的资源池, 共享物理资源。
图 1-3 示出了 SOLARIS 容器的现有的实现, 示出了虚拟化如何使用由区域和资源 池组成的应用容器, 将多个应用和服务器合并到单个物理服务器上。如图 1 所示, 单个物 理服务器 10, 通过使用服务器虚拟化, 可使电子邮件应用 12、 第一 Web 服务器 14, 以及第二 Web 服务器 16 合并。 单个物理服务器 10 包括多个虚拟服务器, 以便, 在合并之后, 电子邮件 应用、 第一 Web 服务器, 以及第二 Web 服务器中的每一个存在于服务器 10 上的其自己的虚 拟服务器上。
如图 2 所示, 为了创建应用容器, 每个应用都具有其自己的区域 22、 24 和 26。图 3 示出了分别包括第一和第二资源池 30 和 32 的完整的示例。区域 22、 24 和 26 是非全局区 域; 在 34 示出了全局区域。全局区域 34 是原始 SOLARIS 操作系统实例。
继续参考图 3, 区域 22 具有专用资源池, 池 32。区域 24、 区域 26, 以及全局区域 34 共享资源池 30。 公平共享调度器 (FSS) 根据分配的份额数量, 按比例地向区域 24、 区域 26, 以及全局区域 34 分配资源。
如图所示, 有四个应用容器。第一容器由区域 22 和资源池 32 组成。第二容器由 区域 24 和资源池 30 组成。第三容器由区域 26 和资源池 30 组成。第四容器由全局区域 34 和资源池 30 组成。
Sun Microsystems, Inc. 在 SOLARIS 10 操作系统中引入了 SOLARIS 区域。概括 地说, SOLARIS 区域提供了 :
·安全性 - 一个区域内的应用或用户只看到和修改该区域内的数据。
·资源管理 - 系统管理员可以以区域为粒度控制资源分配。系统管理员可以向区 域分配诸如文件系统之类的特定资源。 系统管理员可以有效地控制分配到一个区域的诸如 CPU 功率之类的某些资源的百分比。
·应用故障隔离 - 当一个应用错误情形需要重新启动时, 当应用驻留在区域内时, 该重新启动变为区域重新启动。一个区域的重新启动不会影响任何其他区域。因此, 一个 区域的应用的故障不会影响其他区域的应用。
许多客户现在使用区域技术来安全地将分离的机器上的应用合并到一个机器上。 在现有的实现中, 区域仅限于一个机器, 并不能满足集群应用的需求。 其他现有的操作系统 虚拟化技术也针对各个机器, 并不能满足集群应用的需求。
集群应用常常分成两个类别 :
·故障转移应用 - 该应用的一个实例一次在一个节点上运行。如果托管应用的机 器发生故障, 则集群自动地重启另一个节点上的应用。 由于负载平衡、 硬件维护或管理员的 突发念头的原因, 故障转移应用可在多个节点之间移动。
·可扩展的应用 - 该应用的不同的实例可以同时运行在集群的不同节点上。
要安全地合并集群应用, 要求使这些应用分开, 而同时重视这一事实 : 这些应用散 布在多个机器上, 并且这些应用将动态地在多个机器之间移动。
许多集群应用要求有关潜在主机的状态的信息, 换言之, 这些应用需要正在运转 的机器的标识。关于 SOLARIS 容器技术的背景信息可以在 Joost Pronk vanHoogeveen 和 Paul Steeves 所著的 “SOLARIS 10 How To Guides : Consolidating Servers and Applications with SOLARIS Containers” 中 找 到 (2005, Sun Microsystems, Inc., Santa Clara, California)。
进 一 步 的 背 景 信 息 可 以 在 “System Administration Guide : SolarisContainers-Resource Management and Solaris Zones”中 找 到 ( 产 品 编 号 : 817-1592, 2006, Sun Microsystems, Inc., Santa Clara, California)。
一个现有的集群化技术是位于加利福尼亚 Santa Clara 的 SunMicrosystems, Inc. 推出的 SOLARIS 操作系统中可获得的 SunCluster。
关于 Sun Cluster 技术的背景信息可以在 Angel Camacho、 LisaShepherd 以及 Rita McKissick 所著的 “SOLARIS 10How To Guides : How to Install and Configure a Two-Node Cluster” 中找到 (2007, SunMicrosystems, Inc., Santa Clara, California)。
进一步的背景信息可以在 “Sun Cluster System AdministrationGuide for Solaris OS” 中找到 ( 产品编号 : 817-6546, 2004, SunMicrosystems, Inc., Santa Clara, California)。 进一步的背景信息可以在 “Sun Cluster Software InstallationGuide for Solaris OS” 中找到 ( 产品编号 : 819-0420, 2005, SunMicrosystems, Inc., Santa Clara, California)。
另一种现有的虚拟化方法涉及虚拟机。在此虚拟化方法中, 在主机操作系统上 ( 或者, 在某些情况下, 在主机操作系统之下 ) 运行的软件允许一个或多个来宾操作系统同 时在同一个物理硬件的顶端上运行。 在此方法中, 来宾操作系统是完全操作系统, 包括内核 和库。现有的虚拟机技术在单个机器上支持多个操作系统映像。然而, 当与虚拟操作系统 相比时, 虚拟机会给物理机器施加很大的负担, 并给虚拟化的资源带来很大的开销。
发明内容
本发明的目标是提供满足集群应用的需求的虚拟化技术。
根据本发明, 提供了在物理集群上实现虚拟集群的方法。该物理集群包括多个物 理服务器节点。每个物理服务器节点包括多个物理资源和一个虚拟化子系统。该虚拟化子 系统能够在物理服务器节点上创建在逻辑上将应用彼此隔离的分离的环境。 所述分离的环 境是虚拟操作系统。
该方法包括通过定义虚拟操作系统的属性, 在每个物理服务器节点上配置该虚拟 操作系统。 该方法进一步包括配置由多个物理服务器节点上的多个虚拟操作系统组成的虚 拟集群。
集群应用在虚拟集群上运行。 该虚拟集群向集群应用呈现构成虚拟集群的多个虚 拟操作系统, 以便该集群应用与构成多个物理服务器节点上的其他虚拟集群的任何其他虚 拟操作系统隔离。
集群应用可以是在虚拟集群内一次在一个虚拟操作系统上运行的故障转移应用。 此外, 集群应用还可以是可扩展的应用, 其中, 该可扩展的应用的不同的实例同时在虚拟集 群内的不同的虚拟操作系统上运行。附图说明
图 1-3 示出了 SOLARIS 容器的现有实现中的服务器虚拟化的示例 ; 图 4 示出了在本发明的示范性实现中托管三个虚拟集群的两节点物理集群的示 图 5 示出了两个虚拟集群, 示出了在本发明的示范性实现中的分配的资源 ; 以及 图 6 示出了区域的配置和安装。例;
具体实施方式
本发明的优选实施例基于 SOLARIS 区域来理解虚拟集群。应该理解, 基于区域的 虚拟集群是本发明的一个实施例 ; 可以根据本发明, 基于其他操作系统虚拟化技术, 实现虚 拟集群。
1. 基于区域属性的虚拟集群
本发明的优选实施例基于区域构建虚拟集群。根据此方法, 每个虚拟节点是一个 区域。此方法给应用带来该应用正在专用于该应用的物理集群上运行的假象。 图 4 示出了托管了三个不同的虚拟集群的两节点物理集群的示例。具体来说, 第 一和第二节点 50 和 52 构成了该物理集群。在 54、 56 以及 58 示出了三个虚拟集群。一 般而言, 计算机集群是一组紧密地耦合的计算机。在此示例中, 每个节点 50、 52 都是运行 SOLARIS 操作系统的计算机。SOLARIS 区域在节点 50 上提供了第一区域 60、 第二区域 62, 以及第三区域 64。此外, SOLARIS 区域还在节点 52 上提供了第一区域 70、 第二区域 72, 以 及第三区域 74。虚拟集群 54 由一对虚拟节点 ( 它们是区域 60 和 70) 组成。虚拟集群 56 由一对虚拟节点 ( 它们是区域 62 和 72) 组成。虚拟集群 58 由一对虚拟节点 ( 它们是区域 64 和 74) 组成。
1.1 虚拟集群=集群应用容器
虚拟集群 54、 56、 58 内的应用始终保持在该虚拟集群之内 :
·一个虚拟集群内的应用只能在该虚拟集群的虚拟节点之间移动。
·可扩展的应用的所有实例都必须驻留在同一个虚拟集群内。
这意味着, 虚拟集群 54、 56、 58 是应用的集群范围内的容器, 其可以用来分离集群 应用。
1.2 访问控制
虚拟集群 54、 56、 58 为访问控制目的提供了定义明确的边界。一个虚拟集群内的 应用只能看到该虚拟集群内的东西, 并且只能修改该虚拟集群内的东西。
1.3 资源管理
虚拟集群 54、 56、 58 使用区域资源管理功能。系统管理员必须显式地配置一个区 域以使用诸如特定文件系统之类的任何特定资源, 否则, 该资源将不可用。 这提供了隔离在 虚拟集群中运行的不同的集群应用的资源的能力。 系统管理员可以在区域级别显式地控制 CPU 和内存的使用。这也继续适用于虚拟集群。
图 6 示出了区域的配置和安装的示例。为了配置一个新区域, 在框 80 中输入区域 配置工具。在框 82 中创建新区域定义。在框 84, 将新区域分配到文件系统, 并配置网络参
数。在框 84, 还可以配置其他区域属性。一旦完成了区域配置, 就安装新区域, 如框 86 所 示。如框 88 所示, 在需要时, 可以启动安装的区域。
1.4 应用的故障隔离
当在虚拟集群 54、 56、 58 中运行的应用进入错误状态并要求节点重新启动时, 虚 拟集群重新启动该虚拟节点, 这会变为区域重新启动。 这意味着, 一个虚拟集群内的应用的 故障不会影响在其他虚拟集群中运行的集群应用。
1.5 成员资格
虚拟集群 54、 56、 58 内的集群应用只能看到虚拟集群的成员资格状态。虚拟集群 可以在物理集群的所有节点上运行, 或者, 也可以在物理集群的节点的子集上运行。 物理集 群和虚拟集群成员资格信息呈现相同的形式。如此, 在这方面对于应用是在物理集群中还 是在虚拟集群中运行没有区别。
1.6 委派的应用管理
虚拟集群 54、 56、 58 支持从虚拟集群内管理应用。应用管理员只能看到并且只能 影响该虚拟集群内的应用和资源。全局区域 ( 或物理集群 ) 中的管理员可以建立或删除不 同的区域中的应用之间的依赖关系。例如, 全局区域中的管理员可以建立一个虚拟集群中 的 SAP 对另一个虚拟集群中的 ORACLE RAC 数据库的依赖关系。 1.7 名称空间隔离
虚拟集群 54、 56、 58 为有关应用的信息提供了分离的名称空间。虚拟集群为私有 网络 IP 地址的查找提供了分离的名称空间。
1.8 单点管理
可以通过从任何节点发出的单命令来管理整个虚拟集群 54、 56、 58。
1.8.1 平台管理
单点管理原理适用于虚拟集群平台的管理。
1.8.2 应用管理
单点管理原理适用于在虚拟集群中运行的应用的管理。
2. 基于区域实现方式的虚拟集群
本节描述了本发明的优选实施例中的实现方式的主要特征。
2.1 组件
每个虚拟集群 54、 56、 58 都包括一组虚拟节点 60 和 70、 62 和 72、 64 和 74, 其中, 每 个虚拟节点都是一个区域。SOLARIS 区域为应用提供了容器。本发明的优选实施例利用该 特点, 并与其他机器上的虚拟节点建立特定关系。每个虚拟节点都具有下面的资源 :
·文件系统 - 只能从该虚拟节点对本地文件系统进行访问, 在相同位置可以从所 有虚拟节点对集群文件系统进行访问。
·专用 IP 地址 - 它们支持虚拟节点之间的通信。
·公共 IP 地址 - 它们支持集群和外部世界之间的通信。
·设备 - 虚拟集群支持在无需使用文件系统的情况下使用存储设备
虚拟集群 54、 56、 58 利用若干个区域配置属性。管理工具确保了所有区域的与安 全相关的属性始终保持一致。这意味着, 当服务于远程请求时, 系统可以替换本地区域。图 5 示出了分配给在一个两节点物理集群上配置的两个虚拟集群的资源的示例。
更具体来说, 节点 100 和 102 构成了物理集群。在 104 和 106 示出了虚拟集群。
公共网络 110 是指集群外面的网络接入。应用 LAN 112 表示用于在应用之间进行 本地通信的 IP 地址。私有互联 114 是指在该虚拟集群的多个节点上运行的可扩展的应用 的实例之间的基于 IP 地址的通信。每个虚拟集群都使用其自己的集群文件系统 120。可以 共享网络, 但是不能共享 IP 地址。不应该共享集群文件系统。
2.2 管理
2.2.1 创建与配置
命令 clzonecluster 支持从物理集群的任何节点 100、 102 用单命令创建整个虚拟 集群 104、 106。同一个命令 clzonecluster 支持现有虚拟集群的配置。
2.2.2 管理
命 令 clzonecluster 支 持 对 虚 拟 集 群 的 动 作。clzonecluster 子 命 令 启 动 整 个 集 群 或 单 个 虚 拟 节 点。 类 似 地, clzonecluster 子 命 令 暂 停 整 个 集 群 或 虚 拟 节 点。 clzonecluster 子命令提供关于虚拟节点的状态信息。
2.3 配置储存库
每个虚拟集群 104、 106 都具有其自己的单独的配置储存库, 该配置储存库包含有 关该虚拟集群的全部配置信息。这为每个虚拟集群提供了单独的名称空间。
2.4 成员资格
物理集群成员资格信息包括一组节点编号 / 节点化身编号对, 它们标识了当前处 于活动状态的物理节点。虚拟集群以完全相同的格式呈现成员资格信息 : 虚拟节点编号 / 虚拟节点化身对。
区域可能会独立于托管该区域的物理节点而发生故障。此外, 可以使用管理命令 来暂停一个区域, 而让物理节点保持运转。系统提供每个虚拟集群 104、 106 的成员资格 信息, 该信息呈现正在运转的虚拟节点的状态。特定实现方式使用来自 SOLARIS 区域的 BrandZ 特征集的回叫, 来确定何时一个区域启动或关闭。
2.5 名称空间隔离
虚拟集群 104、 106 为下列各项提供单独的名称空间 :
·应用管理 - 系统使用每个虚拟集群的单独的信息储存库来支持应用管理。
·专用 IP 地址 - 系统具有用于支持私有互连的 IP 地址查找的单独的表。
·组件 - 系统使用名称服务器来定位软件组件。此名称服务器确定发出请求的虚 拟集群并以该虚拟集群的软件组件作出响应。 这通过使具有集群软件组件的多个副本成为 可能, 同时确保请求到达该虚拟集群的软件组件, 来支持集群基础结构。
2.6 应用支持
每个虚拟集群 104、 106 都具有其自己的子系统以用于管理虚拟集群内的应用。
在 Sun 集群上, 资源组管理 (RGM) 子系统是此子系统的名称。 RGM 控制应用在哪里 运行。RGM 只允许虚拟集群内的应用在属于该虚拟集群的虚拟节点上运行。RGM 管理应用 所需要的资源。RGM 安装应用所需要的文件系统。RGM 设置应用所需要的 IP 地址。此原理 适用于其他资源。 RGM 验证, 在该虚拟集群内操作的管理员只能指定对该虚拟集群内的资源 的依赖关系。当将要激活资源时, 系统再次验证该资源。
可以理解, 本发明的优选实施例是利用 SOLARIS 区域和 Sun 集群来实现的。具体来说, 利用 SOLARIS 区域来实现基于区域的虚拟集群。本发明不仅限于 SOLARIS 区域, 且虚 拟集群可以基于其他操作系统虚拟化技术。
尽管已经说明和描述了本发明的多个实施例, 但是, 这些实施例并非旨在说明和 描述本发明的所有可能的形式。 相反, 本说明书中所使用的措词是用于描述的措词, 而不是 限制, 应该理解, 在不偏离本发明的精神或范围的情况下, 可以进行各种更改。