本章介绍 Solaris Container Manager 3.6.1 (Container Manager)。
包括以下主题:
Solaris Container Manager 3.6 是 Sun Management Center 3.6.1 发行版的附加软件产品。本产品可帮助您对服务器进行整合,从而控制包含服务器和软件的大型网络的成本。可以使用容器管理器来创建容器、项目、资源池和区域。这将提高硬件资源的利用率,降低服务器的管理成本,从而使您受益。
可以使用本产品执行以下任务:
当用户需要自己的虚拟环境(包括 IP 地址、磁盘存储空间和应用程序)时,容器是他们理想的选择。例如,公司可以为特定的应用设置容器,如邮件服务器、Web 服务器或数据库。公司还可以根据地理区域设置容器,如美国、美洲、欧洲和亚太。同样,公司还可以为职能部门设置容器,如人力资源部门、研究部门和开发部门和销售部门。
不同的行业会出于不同的目的而使用容器或区域。大学可以为每一位在校生提供一个区域,其中包括一个 OS 实例、一份系统资源和一个超级用户密码。无线公司可以为监视服务设置容器,如长途服务、本地电话服务和语音邮件。电缆供应商或 Internet 服务供应商可以为 DSL、电缆调制解调器或有线电视服务设置容器。金融机构可以分别为以下用户设置单独的容器:需要在数据库中进行复杂查询的用户,以及需要进行联机交易的用户。独立的软件供应商 (Independent Software Vendor, 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》和《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 章,管理项目。
通常情况下,资源表示可与进程绑定的操作系统实体。更多情况下,资源是指提供某种形式分区的内核子系统所构建的对象。还可以将资源视作为了影响应用程序的行为可以对其进行处理的计算系统的一个方面。资源的实例包括物理内存、CPU 或网络带宽。
Container Manager 与 Solaris 8、Solaris 9 和 Solaris 10 发行版中的资源管理实用程序协同运行。在 Solaris 8 发行版中,资源管理由 Solaris Resource Manager 1.3 提供。每个服务均由一个 lnode 表示。lnode 用于记录资源分配策略和累计资源使用数据。lnode 与 UNIX 用户 ID (User IDs, UID) 对应。UID 在默认情况下可以表示单独的用户和应用程序。有关 lnode 和资源管理的更多信息,请参见《Solaris Resource Manager 1.3 System Administration Guide》中的“Limit Node Overview”。
在 Solaris 9 和 Solaris 10 发行版中,资源管理功能由 Resource Manager 提供。在此发行版中,项目与 lnode 类似。项目为相关的工作提供了网络级管理标识符。在一个容器中运行的所有进程具有相同的项目标识符,也称为项目 ID。Solaris 内核通过项目 ID 来跟踪资源的使用情况。使用相同跟踪方法的扩展记帐可以用于收集历史数据。在 Container Manager 中,项目表示容器。
有关在容器中运行的进程的信息可以从 Container Manager GUI 中获取。使用此软件创建和管理容器时,数据的收集对于您是透明的。
创建容器边界可以使用不同的方法。一种方法是使用资源池对系统进行分区。另一种方法是通过资源控制建立对项目的限制。
资源池(或池)是一种 Solaris 9 和 Solaris 10 软件的配置机制,用于对主机的资源进行分区。资源集是可与进程绑定的资源。内存集和处理器集是资源集的实例。在 Solaris 9 和 Solaris 10 发行版中当前只有处理器集可用。资源池可将主机上可用的各种资源集绑定到一起。
一个资源池中可以容纳一个或多个项目。如果只包含一个项目,则链接到该池的资源会专用于该项目。如果包含多个项目,则链接到该池的资源会由这些项目共享。
在 Solaris 10 操作系统上,此产品具有一个称为“动态资源池”的功能。动态资源池允许您根据系统事件和负荷变化对每个池的资源分配进行调整,从而帮助您获取更好的性能。动态资源库中对此功能进行了描述。
在 Solaris 8 操作系统上运行时,一台主机只能具有一个资源池。这个资源池被称为 pool_default。由于在此版本的操作系统中不存在资源池,因此 pool_default 是手动创建的。在运行 Solaris 8 发行版的主机上,所有 CPU 通常都被视为位于单个池内。
有关使用 Container Manager 管理资源池的更多信息,请参见第 5 章,管理资源池。
如果有多个项目绑定到单个资源池,则可以针对单个项目设置保障或限制。这些限制称为资源控制。资源控制的实例是设置最小 CPU 限制,就如使用合理分配调度程序 (Fair Share Scheduler, FSS) 的情况一样。另一个实例是设置物理内存容量,就如使用 rcapd 守护进程的情况一样。设置最小 CPU 保障后,一个项目中的空闲 CPU 周期就可以由其他项目中的应用程序使用。
区域可为应用程序的运行提供隔离和安全的环境。通过区域,可以在 Solaris 实例内创建虚拟的操作系统环境。区域允许一个或多个进程在与系统上的其他进程隔离的状态下运行。例如,在某个区域中运行的进程将只能向同一区域中的其他进程发送信号(无论用户 ID 和其他证书信息如何)。如果发生错误,则只会影响在该区域中运行的进程。
每个 Solaris 10 系统中都包含一个常规的全局环境(和以前的操作系统版本一样),称为“全局区域”。全局区域具有两个功能:它既是系统的默认区域,又是用于系统范围内管理控制的区域。如果全局管理员没有创建任何非全局区域(简称为“区域”),则所有进程均会在全局区域中运行。
只能从全局区域配置、安装、管理或卸载非全局区域。只有全局区域才可从系统硬件进行引导。某些管理功能,如物理设备、路由或动态重新配置 (Dynamic Reconfiguration, DR),只能在全局区域中进行。在全局区域中运行的具有适当权限的进程或用户可以访问与其他区域关联的对象。
全局区域中的非授权进程或用户可能能够在非全局区域中执行不允许授权进程或用户执行的操作。例如,全局区域中的用户可以查看系统中每个进程的信息。在维护系统总体安全性的同时,区域还允许管理员委托一些管理功能。
非全局区域不需要专用的 CPU、物理设备或一部分物理内存。在单个域或系统中运行的多个区域之间可以共享这些资源。可以在不影响系统上其他区域的情况下对区域进行引导和重新引导。每个区域都可提供一组自定义的服务。要强制执行基本的进程隔离,一个进程只能“看到”同一区域中的各个进程,或向这些进程发送信号。区域之间的基本通信是通过为每个区域提供至少一个逻辑网络接口来实现的。在一个区域中运行的应用程序无法看到其他区域的网络流量,即使各个数据包流均要通过相同的物理接口。
系统会为每个需要网络连接的区域配置一个或多个专用的 IP 地址。
有关区域的更多信息,请参见《System Administration Guide: Solaris Containers-Resource Management and Solaris Zones》。
如果您在安装 Container Manager 时安装了性能报告管理器附加产品,则可以按每个容器、资源池、区域、项目或主机创建提供历史资源使用情况数据的报告。CPU 数据、内存使用情况数据和 CPU 扩展记帐数据由性能报告管理器数据收集服务存储在数据库中。从 GUI 中,可以请求详述资源使用情况的图形报告,也可以将这些数据导出到逗号分隔值 (Comma-Separated Value, CSV) 格式的文本文件中。后一种方法可以用在帐单和记帐等应用程序中。
有关性能报告管理器软件的更多信息,请参见《Sun Management Center 3.6.1 Performance Reporting Manager User' s Guide》。有关可用报告和记帐数据的更多信息,请参见关于报告。
在安装和使用 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 服务器应用程序。每个资源池均具有两个 CPU。在容器上设置八个 CPU 份额,其中四个份额用于 zone_ora1,三个份额用于 zone_ws01。该容器使用合理分配调度程序。
在此示例中,设置了一个具有两个资源池的容器。第一个资源池 pool1 具有一到三个指定给它的 CPU。pool1 的负荷目标是大于百分之二十,小于百分之八十。第二个资源池 pool2 由邮件服务器使用。根据邮件服务器需要的负荷,另一个资源池是动态的,可以将一到三个 CPU 用于其应用程序。
在此示例中,设置了一个具有两个区域的容器。第一个区域 zone_ora02 具有七个项目:其中一个项目用于用户 ORACLE,另外一个项目用于组数据库管理员运行的进程,其余五个是默认项目:system、user.root、noproject、default 和 group.staff。第一个区域中共有 100 个 CPU 份额。为每个默认项目均指定了一个份额。为用于用户 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 Solaris Container Manager 3.6 中的新增功能
优点 |
功能 |
Solaris 10(SPARC 和 x86) |
Solaris 9(SPARC 和 x86) |
Solaris 8 (SPARC) |
---|---|---|---|---|
在隔离和虚拟的操作系统环境中运行进程 |
区域管理 |
是 | ||
设置和达到系统性能目标 |
动态资源池 |
是 | ||
避免网络拥塞 |
Internet 协议服务质量 (Internet Protocol Quality of Service, IPQoS) |
是 | ||
更为灵活的进程管理 |
在容器间移动进程的能力 |
是 |
是 | |
支持按时间分配调度程序 |
支持其他调度程序类 |
是 |
是 |
是 |
更好的视觉化工具 |
图形增强 |
是 |
是 |
是 |
区域能够发现的容器(具有内存分配) |
容器增强 |
是 |
是 |
是 |
顶部 5 个资源对象的使用情况报告 |
图形增强 |
是 |
是 |
是 |
在 Solaris Container Manager 3.6.1 中,“区域复制”功能得到增强。您既可以在一台主机上创建非全局区域的多个副本,也可以在多台主机上创建非全局区域的一个副本。有关此功能的信息,请参见第 6 章,管理区域复制非全局区域。
Container Manager 允许您创建、删除、修改、停止和重新引导非全局区域。Container Manager 还可以发现现有的区域,检测区域更改,监视和归档区域的 CPU、内存和网络使用情况以及生成区域的开启/关闭报警。
有关区域的更多信息,请参见第 6 章,管理区域。
动态资源池可动态地调整每个资源池的资源分配以满足已确定的系统性能要求。使用动态资源池可以简化系统管理员需要做出的决策,并降低所需的决策数目。调整是自动进行的,目的是确保始终达到系统管理员指定的系统性能目标。
可以为 Solaris 10 系统创建、修改和删除动态资源池。配置动态资源池限制(比如最小和最大 CPU 数量、使用率目标、位置目标和 CPU 份额)后,Container Manager 代理会根据资源的可用性和消耗情况动态地调整资源池的大小。
资源池配置已保存在代理和服务数据库中。
IP 服务质量功能可帮助您为网络用户提供级别一致的服务,还可以帮助您管理网络流量。此服务允许您对网络统计信息划分等级、进行控制和收集。
此功能可以控制 Solaris 区域的入站和出站流量。由您来指定区域输入/输出网络带宽的上限。如果超过限制,则此软件包将被丢弃。由于 IPQoS 具有相当大数量的 CPU 系统开销,因此这是一种可选功能。
Container Manager 监视并收集工作使用情况数据,并提供历史网络使用情况图。
为提高进程管理的灵活性,Container Manager 3.6 允许将进程从一个容器移动到另一个容器。对于 Solaris 9 系统,可以在容器之间移动进程。对于 Solaris 10 系统,只能在同一区域内的各容器之间移动进程。
Container Manager 1.0 仅支持合理分配调度程序 (Fair Share Scheduler, FSS)。在创建或修改资源池时,Container Manager 3.6 允许选择合理分配或按时间分配作为调度程序类。调度程序类确定了进程的优先级,即下一个要运行的进程。
更改资源池的调度程序类后,该资源池的所有新进程均会使用这个更改后的调度程序类。Container Manager 不会更改正在运行的进程的调度程序类。
Container Manager 中包含以下对容器的增强:
在 Solaris 10 上,区域可以识别容器。每个区域均具有五个默认容器。
您可以为容器分配一定数量的共享内存。
下表列出了可用于本产品的文档资源。有关 Solaris Container Manager 3.6 的文档,请访问 http://docs.sun.com/app/docs/coll/810.4。
表 1–2 文档资源
任务 |
资源 |
---|---|
安装和管理容器 |
《安装和管理 Solaris Container Manager 3.6》(本书) |
访问产品中的帮助 |
Solaris Container Manager 3.6 联机帮助。要访问此帮助,请单击 Solaris Container Manager GUI 中的“帮助”链接。 |
安装 Sun Management Center 3.6 及其附加产品,包括 Container Manager | |
查找安装问题、运行时问题、最新消息(包括支持的硬件)和文档问题 | |
获取有关 Container Manager 支持的性能报告管理器和可选的附加产品的信息 |
《Sun Management Center 3.6.1 Performance Reporting Manager User' s Guide》 |
如果使用的是 Solaris 8 操作系统,则应该了解 Solaris Resource Manager 1.3 |
《Solaris Resource Manager 1.3 Installation Guide》 《Solaris Resource Manager 1.3 System Administration Guide 》 《Solaris Resource Manager 1.3 Release Notes》 |
如果使用的是 Solaris 9 或 10 操作系统,则应该了解 Solaris 资源管理和区域 |
《System Administration Guide: Solaris Containers-Resource Management and Solaris Zones》 |
如果已经安装和设置了 Solaris Container Manager,则以下链接可以帮助您快速地使用产品: