本章简要介绍 Solaris Container Manager 1.1 (Container Manager)。
包括以下主题:
Solaris Container Manager 1.1 是 Sun Management Center 3.5 Update 1b 发行版的附加软件产品。本产品可帮助您对服务器进行整合,从而控制包含服务器和软件的大型网络的成本。您可以使用 Container Manager 来创建和管理容器、项目、资源池和区域。这将提高硬件资源的利用率,降低服务器的管理成本,从而使您受益。
您可以使用本产品执行以下任务:
当某个组织需要自己的虚拟环境(包括 IP 地址、磁盘存储空间和应用程序)时,容器是他们理想的选择。例如,公司可以为特定的应用设置容器,如邮件服务器、Web 服务器或数据库。公司还可以根据地理区域(如美国、美洲、欧洲和亚太地区)设置容器。同样,公司还可以为职能部门设置容器,如人力资源部门、研发部门和销售部门。
不同的行业会出于不同的目的而使用容器或区域。大学可以为每一位在校生提供一个区域,其中包括一个 OS 实例、一份系统资源和一个超级用户密码。无线公司可以为监视服务设置容器,如长途服务、本地电话服务和语音邮件。有线电视提供商或 Internet 服务提供商可以为 DSL、电缆调制解调器或有线电视服务设置容器。金融机构可以分别为以下用户设置单独的容器:需要在数据库中进行复杂查询的用户,以及需要进行联机交易的用户。独立软件供应商 (ISV) 可以为购买其软件或服务的不同顾客分别设置容器或区域。
本产品对当前运行在 Solaris 8、Solaris 9 和 Solaris 10 发行版上的资源管理实用程序进行了优化组合。特别是,本产品提供的工具简化了 Solaris Resource Manager 1.3 和 Solaris 9 Resource Manager 的配置。
关于 Solaris 资源管理实用程序的详细信息,请参阅《Solaris Resource Manager 1.3 系统管理指南》和《System Administration Guide: Network Services》。
Solaris 容器是一个帮助组织和管理物理系统资源集合的抽象层。通过使用容器,我们可以为应用程序的资源要求创建一份详尽的蓝图。Solaris 容器模型着重解决应用程序的资源要求。此模型的要务是合理分配服务或工作负荷。服务是由应用程序提供的,对系统而言则是工作负荷。工作负荷是一组相关的进程,如一个正在执行的应用程序。
早期的 Solaris Resource Manager 1.3 发行版体现的是基于工作负荷的管理。该版本中,工作负荷与节点限制、lnode 有关。Container Manager 软件便是在这一思路的指引下开发出来的。当前的容器模型提供的一个工具可帮助您根据服务组织和管理当前的资源。常见的服务实例有:包月、顾客订单查询和 Web 服务传送。
进行服务器整合时,您需要具有为应用描述其限定环境的能力。通过这种描述,您可将“在每个服务器上运行一个应用程序”转为“在单个服务器上运行多个应用程序”。容器提供这一描述以及该描述的实例。例如:简单的容器可以描述系统资源,如 CPU、物理内存和带宽。 又如:较复杂的容器可以控制安全、名称空间隔离和应用程序故障。
下列关于 Solaris 容器的图示显示了服务与资源之间的关系。
图中的盒子表示容器。在盒子周围,围绕“服务”沿 x、y 和 z 轴显示了三种资源。此模型中,CPU、内存和带宽是基本资源。“服务”被限制在盒子中,表示该“服务”如何被包含在容器内。在此发行版中,Container Manager 可完全控制上述三种基本资源:CPU、物理内存资源和带宽。
由于 Container Manager 着重解决工作负荷问题,因此无法监视单独的主机所使用的资源量。主机是指安装了 Container Manager 代理软件、并属于 Sun Management Center 服务器环境的一个组成部分的系统。主机安装完毕之后,系统便会自动搜索到该主机,并将其名称添加到“主机”视图的导航窗口。代理软件将监视服务所使用的资源量。在这一模型中,单个服务实例表示在一个主机上至少有一个进程在运行。得出的数据将被保留,以备用于可能的系统运行状况监视与核算。
多个容器可同时在一个主机上处于活动状态。如果一个主机上同时存在多个容器,您可以设置容器的边界,这样主机就可以扩展和约束它们。这种情况下,其他容器当前未使用的资源对于能够使用它们的容器来说都是可用的。最终,能够在某个主机上处于活动状态的容器数将取决于 CPU 数量和可用内存资源以及每个容器保留了多少这样的资源。系统必须能够满足所有活动的容器(由应用程序的需要决定)所需要的全部资源。
关于如何使用 Container Manager 管理容器的详细信息,请参阅第 4 章,管理项目。
通常情况下,资源代表可进行进程绑定的 OS 实体。更具体地讲,资源是指由提供某种形式划分的内核子系统所构造的对象。资源还可以看作是计算系统的一个方面,可以对其进行处理以影响应用程序的行为。资源的实例包括: 物理内存、CPU 或网络带宽。
Container Manager 与 Solaris 8、Solaris 9 和 Solaris 10 发行版中的资源管理实用程序兼容。在 Solaris 8 发行版中,由 Solaris Resource Manager 1.3 提供资源管理实用程序。每一服务都由一个 lnode 表示。lnode 用来记录资源分配策略和随之产生的资源使用数据。lnode 与 UNIX 用户 ID (UID) 相对应。默认状态下,UID 可以代表个人用户和应用程序。关于 lnode 和资源管理的详细信息,请参阅《Solaris Resource Manager 1.3 系统管理指南》中的“限制节点概述”。
在 Solaris 9 和 Solaris 10 发行版中,由资源管理器提供资源管理实用程序。在这一发行版中,项目的概念与 lnode 相似。项目为相关任务提供网络管理标识符。运行在一个容器中的所有进程具有同一个标识符,也称作项目 ID。Solaris 内核通过该项目 ID 跟踪资源使用情况。通过使用扩展核算(使用同一跟踪方法),可以收集历史数据。在 Container Manager 中,项目代表容器。
通过 Container Manager GUI 可以了解与运行在容器中的进程有关的信息。使用本软件创建和管理容器时,数据收集过程对于用户来讲是透明的。
创建容器限制的方法有两种。一种方法是使用资源池来对系统进行分区。另一种方法是通过资源控制在项目上建立限制。
资源池也称为池,是一种 Solaris 9 和 Solaris 10 软件配置机制,可用于对主机资源进行分区。资源集就是一组与进程绑定的资源。举例来讲,内存集和处理器集都属于资源集。目前,在 Solaris 9 和 Solaris 10 发行版中只有处理器集可用。资源池绑定了主机上可用的各种资源集。
一个资源池可以容纳一个或多个项目。如果只有一个项目,则链接到池的资源专属于这一项目。如果同时存在多个项目,则链接到池的资源由这些项目共享。
在 Solaris 10 操作系统中,本产品具有一项称为动态资源池的功能。通过动态资源池,您可以按照系统事件和负荷变化来调整每个池的资源配置,以获得更好性能。动态资源池对此功能进行了介绍。
如果运行在 Solaris 8 操作系统上,一个主机只能拥有一个资源池。 此资源池称为 pool_default。由于此 OS 发行版不具有资源池,因此需要以手动方式创建 pool_default。在运行 Solaris 8 发行版的主机上,所有 CPU 通常被视为位于单个池内。
关于使用 Container Manager 管理资源池的详细信息,请参阅第 5 章,管理资源池。
当将多个项目绑定在一个单独池中时,您可以在一个单独的项目上设置保证或限定。这些限定称为资源控制。举例来讲,使用合理分配调度程序 (FSS) 设置最小 CPU 限定便是一种资源控制。使用 rcapd 守护进程设置一个物理内存容量也是一种资源控制。如果设置了最小 CPU 保证,则一个项目中循环的闲置 CPU 可以被其他项目中的应用程序使用。
区域为运行中的应用程序提供一个隔离的安全环境。利用区域,您可以在一个 Solaris 实例中创建多个虚拟的操作系统环境。区域可使一个或多个进程与系统中其他进程分开独立运行。例如,某个区域中运行的进程只能将信号发送给同一区域中的其他进程,而不考虑其用户 ID 和其他证书信息。一旦发生错误,只会影响到运行在这一区域中的进程。
与先前的 Solaris OS 发行版一样,每个 Solaris 10 系统都包含一个通用全局环境,称为全局区域。全局区域具有以下两种功能:它是系统的默认区域,可用于整个系统的管理控制。如果全局管理员没有创建非全局区域(可简称为区域),则所有进程将运行在全局区域中。
只能从全局区域配置、安装、管理或卸载非全局区域。只有全局区域才可从系统硬件进行引导。只有在全局区域中才具有管理功能,例如:物理设备、路由选定或动态重新配置 (DR)。运行在全局区域中的具有适当特权的进程能够访问与其他区域相关联的对象。
对于非全局区域中具有特权的进程或用户来说是不允许的操作,全局区域中的非特权进程或用户也许可以执行。例如:全局区域中的用户可以查看关于系统中每个进程的信息。在维护整体系统安全时,管理员可以为区域赋予一部分管理功能。
非全局区域不需要专用 CPU、物理设备或物理内存。在单个域或系统中运行的多个区域可以共享这些资源。某些区域的引导和重新引导不会影响到系统中的其他区域。每个区域都可提供一组自定义的服务。为增强基本进程隔离,一个进程只能“看见”或发信号给处于同一区域中的其他进程。区域之间的基础通信是通过赋予每个区域至少一个逻辑网络接口来实现的。即使不同数据包流通过同一个物理接口传送,运行在一个区域中的应用程序也无法看到另一区域中的网络流量。
需要网络连接的每个区域都配置了一个或多个专用 IP 地址。
关于区域的详细信息,请参阅《System Administration Guide: Solaris Containers-Resource Management and Solaris Zones》。
如果您同时安装了性能报告管理器附加产品和 Container Manager,则可以创建报告,其中包含了每个容器、资源池、区域、项目或主机的历史资源使用数据。性能报告管理器数据采集服务将 CPU 数据、内存使用数据和 CPU 扩展核算数据存储在数据库中。您可以通过 GUI 调阅一个详细描述资源使用情况的图形报告,或者将数据导出到一个以逗号分隔的值 (CSV) 文件。例如,后者可用于财会应用程序。
关于性能报告管理器软件的详细信息,请参阅《Sun Management Center 3.5 性能报告管理器用户指南》。关于可用报告与核算数据的详细信息,请参阅关于报告。
在安装和使用 Container Manager 软件之前,请评估您的资源消耗需求。作为容器创建过程的一部分,您需要为将在容器中运行的进程提供最小 CPU 保留和物理内存容量(可选)。如果您已经预先评估了您的需求、制订了您的目标并准备好了一份资源规划,则容器创建过程将变成一件轻松的事情。另外,在您开始使用之前,准备一份包含所有相关硬件说明的主列表也很重要。
成功进行服务器整合的关键在于准备一份详尽准确的主列表,其中要包含所有服务器、存储器和要进行整合的应用程序。在整合计划定案后,您可以按照这一列表开始执行计划。
如果要在数据中心进行服务器整合,您需要在安装和使用 Container Manager 软件之前执行以下几项任务。这些任务的部分列表包括:
选择要整合的应用程序。
标识组件,例如进程、用户组或者组成该应用程序工作负荷的用户。
为每个已定义的工作负荷确定性能要求。这项任务涉及到监视当前系统上应用程序的实时活动,包括 CPU、内存、网络以及存储需求和使用状况。还需要确定工作负荷采用何种类型的文件系统、共享文件系统和共享库(如只读文件系统、库和手册页等)来配置新系统以及有效共享资源。
按照应用程序所需的最大资源及其需要的时间区间来排列将要共享系统资源的工作负荷。您还需要标识处于同一系统上相互竞争的工作负荷。
为这些工作负荷标识项目。您可以将项目作为管理名称,按照您认为有用的方式对相关任务进行分组。例如,您可能拥有一个关于 Web 服务的项目,以及一个关于数据库服务的项目。
尽管 Solaris 操作系统能够拥有几千个容器,但是为了达到实际应用目的和最佳性能,我们推荐您不要使用超过 200 个主机,每个主机拥有大约 10 个区域,每个区域中包含 10 个项目。
关于如何计划和执行服务器整合的详细信息,请参阅 Sun 蓝皮书《Consolidation in the Data Center》(David Hornby 和 Ken Pepple 著)。
以下实例向您介绍如何使用 Container Manager。
在本例中,您拥有一个具有一个区域的默认资源池。然后,您设置一个容器,其中包含一个具有两个区域的资源池。在第一个区域 "zone_ora1" 中含有 Oracle 数据库应用程序;第二个区域 "zone_ws01" 中含有一个 Web 服务器应用程序。每个资源池拥有 2 个 CPU。您为该容器设置 8 个 CPU 份额:" zone_ora1" 占有 4 个份额;"zone_ws01" 占有 3 个份额。该容器使用合理分配调度程序。
在本例中,您可以设置一个含有两个资源池的容器。然后为 "Pool1" 指定 1 到 3 个 CPU。"pool1" 的负荷目标为大于 20% 且小于 80% 。"Pool2" 用于邮件服务器。另一个池是动态的,它的应用程序可以随该邮件服务器负荷要求的变化而使用 1 到 3 个 CPU。
在本例中,您可以设置一个含有两个区域的容器。第一个区域 "zone_ora02" 中含有 7 个项目:一个项目的用户是 ORACLE;一个项目用于由组数据库管理员运行的任意进程;以及 5 个默认项目:system、user.root、noproject、default 和 group.staff。第一个区域总共拥有 100 个 CPU 份额。给每个默认项目各指定 1 份额。给用户 ORACLE 所在的第一个项目指定 75 个份额;给第二个项目 group.dba 指定 20 个份额。
第二个区域 "zone_ws_02" 用于 Web 服务器。
在本例中,应用程序 Oracle 10g 运行在多个系统上。您在系统 1 中创建一个项目,其中含有一个资源池,池中的一个区域用于 Oracle 10g 应用程序。然后,将该项目连同其区域和池复制到第二个系统上,并使第二个系统上的项目与 Oracle 10g 应用程序相关联。
在本例中,您拥有两个系统,每个系统含有两个资源池。系统 1 中的一个项目用于一个 Web 服务器,系统 2 中的一个项目也用于一个 Web 服务器。每个项目拥有 10 个 CPU 份额并为每个 Web 服务器分配了 5 个份额。其他 5 个份额被保留以备将来之用。
与本产品的上一发行版相比,Solaris Container Manager 1.1 中的一些基本术语发生了更改。
表 1–1 Solaris Container Manager 1.1 中更改的术语
N1 Grid Console - Container Manager 1.0 术语 |
Solaris Container Manager 1.1 术语 |
---|---|
容器定义 |
容器 |
容器、活动的容器或容器实例 |
项目 |
Solaris Container Manager 1.1 具有下列新特性,它们因具体操作系统而有所不同。
表 1–2 Solaris Container Manager 1.1 中的新特性
优点 |
功能 |
Solaris 10(SPARC 和 x86) |
Solaris 9(SPARC 和 x86) |
Solaris 8 (SPARC) |
---|---|---|---|---|
在隔离和虚拟 OS 环境中运行进程 |
区域管理 |
是 | ||
设置和获得系统性能目标 |
动态资源池 |
是 | ||
避免网络拥塞 |
IP 服务质量 (IPQoS) |
是 | ||
更加灵活的进程管理 |
能够在容器之间移动进程 |
是 |
是 | |
时间分配调度程序支持 |
支持其他调度程序类型 |
是 |
是 |
是 |
更佳的可视化工具 |
图形功能增强 |
是 |
是 |
是 |
分配了内存并能识别区域的容器 |
容器功能增强 |
是 |
是 |
是 |
5 个最高资源对象的使用报告 |
图形功能增强 |
是 |
是 |
是 |
您可以使用 Container Manager 创建、删除、修改、停止和重新引导非全局区域。Container Manager 的功能还包括:搜索现有的区域;检测区域更改;监视和归档区域的 CPU、内存和网络使用状况;生成区域启动/停止报警。
关于区域的详细信息,请参阅第 6 章,管理区域。
使用动态资源池可以动态地调整每个资源池的资源分配,以期达到预先设置的系统性能目标。使用动态资源池可以简化管理员需要做出的决策,并减少所需的决策数目。系统会自动作出调整以期达到系统管理员指定的系统性能目标。
您可以在 Solaris 10 系统中创建、修改和删除动态资源池。为动态资源池配置了限定(如最小和最大 CPU、使用状况目标、位置目标和 CPU 份额)之后,Container Manager 代理将按照资源可用性和消耗性条件,动态地调整资源池的大小。
在代理和服务数据库中各自保存着一份资源池配置。
IP 服务质量功能可以确保为网络用户提供稳定的服务水平,还可用于管理网络流量。您可以使用此服务来排列、控制和收集网络统计信息。
此功能可控制 Solaris 区域的带内和带外流量。您可以指定区域的 I/O 网络带宽的上限。如果超出了这一限制,将停止传送软件包。由于 IPQoS 会占用不菲的 CPU 开销,因此这是一个可选功能。
Container Manager 监视和收集任务数据并可提供网络使用状况的历史图表。
为提高进程管理的弹性,在 Container Manager 1.1 中,您可以在容器之间移动进程。对于 Solaris 9 系统,您可以在容器之间移动进程。对于 Solaris 10 系统,您只能在处于同一区域的容器之间移动进程。
Container Manager 1.0 仅支持合理分配调度程序 (FSS)。Container Manager 1.1 允许您在创建或修改资源池时选择调度程序类别(合理分配或按时间分配)。调度程序类别决定着进程的优先级和运行次序。
在资源池的调度程序类别更改之后,此资源池中的所有新进程都将随之作出相应更改。Container Manager 不会更改正在运行中的进程的调度程序类别。
Container Manager 1.1 包含下列加强的容器功能:
在 Solaris 10 中,容器能够识别区域。每个区域拥有 5 个默认的容器。
可以为容器分配指定容量的共享内存。
下表列出了与本产品有关的文档资源。要获得这些文档的最新版本,请访问:http://docs.sun.com/app/docs/coll/810.6。
表 1–3 文档资源
任务 |
资源 |
---|---|
安装和管理容器 |
《安装和管理 Solaris Container Manager 1.1》(本书) |
访问本产品的“帮助” |
Solaris Container Manager 1.1 的联机帮助。要访问这一帮助,请单击 Solaris Container Manager GUI 中的“帮助”链接。 |
安装 Sun Management Center 3.5 Update 1 及其附加产品,包括 Container Manager |
《Sun Management Center 3.5 Installation and Configuration Guide》 |
查找安装问题、运行问题、最新发布的消息(包括支持的硬件)以及文档问题 | |
了解 Sun Management Center 3.5 Update 1 的新增特性,以及对于可选附加产品“性能报告管理器”的改进 | |
了解“性能报告管理器”,它是 Container Manager 的一款可选附加产品 | |
如果您使用的是 Solaris 8 操作系统,则应参阅 Solaris Resource Manager 1.3 的相关文档 |
《Solaris Resource Manager 1.3 安装指南》 |
如果您使用的是 Solaris 9 或 10 操作系统,则应参阅 Solaris 资源管理和区域的相关文档 |
《System Administration Guide: Solaris Containers-Resource Management and Solaris Zones》 |
如果您已经安装并设置了 Solaris Container Manager,则以下链接将有助于您尽快熟悉此产品的使用: