以下信息描述由 Oracle Solaris Cluster 定义的资源组属性。
该属性控制在新群集形成时资源组管理器 (Resource Group Manager, RGM) 是否自动启动资源组。默认值为 TRUE。
如果设置为 TRUE,则同时重新引导群集中的所有节点时,RGM 将尝试自动启动资源组以达到 Desired_primaries。
如果设置为 FALSE,则在重新引导群集时资源组不自动启动。资源组将保持脱机状态,直到通过使用 clresourcegroup(1CL) 命令或等效的图形用户界面命令首次将资源组手动切换为联机。之后,资源组恢复正常的故障转移行为。
TRUE
随时
资源组可以在其上同时运行的所需数目的节点。
默认值为 1。Desired_primaries 属性的值必须小于或等于 Maximum_primaries 属性的值。
1,请参见上文
随时
一个布尔值,它指示当某个节点加入群集或者某个节点上满足资源组的强正关联时,是否重新计算资源组联机的一组节点。若重新计算,RGM 可以使组在次优先节点上脱机,在更为优先的节点上联机。有关更多信息,请参见 RG_affinities 属性。
FALSE
随时
指示群集文件系统是否由该资源组中的任何资源使用。管理员可以指定的合法值为星号 (*) 和空字符串 (“”),前者指示所有的全局资源,后者指示无全局资源。
所有的全局资源
随时
一个布尔值,它指示为 TRUE 时,RGM 应该在组中强制非网络地址资源对网络地址资源的隐式强依赖性。这表示 RGM 会在启动组中所有其他资源前先启动所有网络地址资源,在停止所有其他资源后再停止网络地址资源。网络地址资源包括逻辑主机名和共享地址资源类型。
在可伸缩的资源组中,该属性不起作用,因为可伸缩的资源组不包含任何网络地址资源。
TRUE
随时
确定资源组所使用的负载占负载限制的比例。
可以为每个节点配置负载限制,将为资源组分配一组负载因子,这些负载因子与为该节点定义的负载限制相对应。RGM 使资源组联机时,会将每个节点上资源组的负载因子累加,以提供与该节点的负载限制相比较的总负载。资源组的负载分配策略还受 Priority 和 Preemption_mode 属性的设置影响。有关更多信息,请参见 Preemption_mode 和 Priority 属性。
可以使用 clresourcegroup set–p 选项设置 load_factors 属性的值。 load_factors 属性具有一个复合值,该值由格式为 limitname@value 的零个或多个元素的逗号分隔列表组成,其中 limitname 是标识符字符串,value 是非负整数。每个负载因子的默认值是 0,允许的最大值是 1000。在资源组的节点列表中的任何节点上,如果 limitname 未定义为 loadlimit,则认为它在该节点上是无限制的。
如果一组资源组使用公共负载因子,则将在节点之间分配这些资源组,即使在这些节点上未指定对应的负载限制(即,无限制)也是如此。存在非零的负载因子可导致 RGM 分配负载。如果要避免基于负载的资源组分配,请删除负载因子或者将它们设置为零。
有关更多信息,请参见 clresourcegroup(1CL) 和 clnode(1CL) 手册页。
超级用户以外的用户需要具有 solaris.cluster.admin RBAC 授权才能使用该子命令。请参见 rbac(5) 手册页。
资源组可能同时在其中处于联机状态的节点的最大数目。
如果 RG_mode 属性为 Failover,则该属性的值不得大于 1。如果 RG_mode 属性为 Scalable,则允许大于 1 的值。
1,请参见上文
随时
可以按优先顺序使其中的组联机的节点的列表。这些节点称为资源组的潜在主节点。
按任意顺序的所有群集节点的列表
随时
群集文件系统中,组资源可以编写所需管理文件的目录。某些资源可能需要此属性。使 Pathprefix 对每个资源组都是唯一的。
空字符串
随时
RGM 使用的非负整数值(秒),用于确定在重新配置时或者由于执行 scha_control 移交命令或函数而使资源组联机的位置。
对于重新配置情形,如果资源组在过去的 Pingpong_interval 秒内在特定的节点上多次联机失败(由于资源的 Start 或 Prenet_start 方法以非零状态退出或超时),则该节点将被视为没有资格托管资源组,RGM 将寻找其他主节点。
如果资源在给定的节点上执行 scha_control(1HA) 命令或 scha_control(3HA) 移交而导致其资源组故障转移到其他节点,则在经过 Pingpong_interval 秒之前,第一个节点(在其上调用了 scha_control)不能是同一资源执行的其他 scha_control 移交的目标。
3600(1 小时)
随时
确定某个资源组由于节点过载而被优先级较高的资源组从节点中抢占的可能性。
可以使用 clresourcegroup set–p 选项设置 preemption_mode 属性的枚举值。preemption_mode 属性的默认设置是 HAS_COST。
资源组的 preemption_mode 属性可以具有以下值之一:
HAS_COST-为满足负载限制,该资源组可能会被优先级较高的资源组从其当前主节点中取代。抢占该资源组具有与之关联的成本,因此 RGM 会通过选择其他节点来控制优先级较高的资源组,尝试尽可能避免该情况。
NO_COST-为满足负载限制,该资源组可能会被优先级较高的资源组从其当前主节点中取代。抢占该资源组的成本为零。
NEVER-不能从该资源组的当前主节点中取代它以满足负载限制。
有关更多信息,请参见 clresourcegroup(1CL) 和 clnode(1CL) 手册页。
超级用户以外的用户需要具有 solaris.cluster.admin RBAC 授权才能使用该子命令。请参见 rbac(5) 手册页。
确定资源组分配给主节点所依照的顺序。优先级越高,表示服务就越重要。
可以使用 clresourcegroup set–p 选项设置 priority 属性的无符号整数值。优先级值比其他组高的资源组优先,它很可能由其优先节点控制,且不大可能从该节点中被取代。priority 属性的默认值为 500。
如果两个资源组具有相等的优先级并通过 RG_dependencies 或强 RG_affinities 相关,则未指定依赖性或关联的资源组将在依赖资源组之前收到其节点分配。如果两个资源组具有相等的优先级但未通过依赖性或强关联相关,则按任意顺序为它们分配主节点。
有关更多信息,请参见 clresourcegroup(1CL) 和 clnode(1CL) 手册页。
超级用户以外的用户需要具有 solaris.cluster.admin RBAC 授权才能使用该子命令。请参见 rbac(5) 手册页。
包含在组中的资源的列表。管理员不直接设置该属性。而是在管理员向资源组中添加或从中删除资源时由 RGM 更新该属性。
无默认值
从不
RGM 将尝试:(1) 在为另一个给定资源组的当前主节点的计算机上查找资源组(正关联),或者 (2) 在不是给定资源组的当前主节点的计算机上查找资源组(负关联)。
可以将 RG_affinities 设置为以下字符串:
+ 或弱正关联
++ 或强正关联
+++ 或具有故障转移委托的强正关联
- 或弱负关联
-- 或强负关联
例如,RG_affinities=+RG2,--RG3 指示该资源组具有与 RG2 的弱正关联和与 RG3 的强负关联。
在Oracle Solaris Cluster 数据服务规划和管理指南 中的第 2 章 数据服务资源管理中描述了如何使用 RG_affinities。
空字符串
随时
有时配置单计算机群集以达到原型开发目的。如果将资源组配置为在此类群集的多个节点上运行,则在节点级别而不是计算机级别上解释 RG_affinities。例如,强正关联要求两个资源组运行在同一节点中,而不仅仅运行在同一计算机上。请注意,单计算机群集上的所有节点都是同一计算机上的区域。
指示使其他组在同一节点上联机或脱机的优先排序的资源组可选列表。所有强 RG_affinities(正和负)以及 RG_dependencies 的图形不允许包含循环。
例如,假定在资源组 RG1 的 RG_dependencies 列表中列出了资源组 RG2。换句话说,假定 RG1 具有对 RG2 的资源组依赖性。以下列表汇总了该资源组依赖性的效果:
在节点加入群集时,在该节点上的所有 Boot 方法在 RG2 中的资源上完成之前,不会在 RG1 中的资源上运行该节点上的 Boot 方法。
如果 RG1 和 RG2 在同一节点上同时处于 Pending_online 状态,则在 RG2 中的所有资源完成其启动方法之前,不会在 RG1 中的任何资源上运行启动方法(Prenet_start 或 Start)。
如果 RG1 和 RG2 在同一节点上同时处于 Pending_offline 状态,则在 RG1 中的所有资源完成其停止方法之前,不会在 RG2 中的任何资源上运行停止方法(Stop 或 Postnet_stop)。
如果切换主节点使 RG1 在任何节点上保持联机状态而使 RG2 在所有节点上保持脱机状态,则切换 RG1 或 RG2 的主节点的尝试将失败。
如果 Desired_primaries 在 RG2 上设置为零,则不允许在 RG1 上将 Desired_primaries 属性设置为大于零的值。
如果 Auto_start_on_new_cluster 在 RG2 上设置为 FALSE,则不允许在 RG1 上将 Auto_start_on_new_cluster 属性设置为 TRUE。
空列表
随时
资源组的简要描述。
空字符串
随时
一个布尔值,它指示资源组所依赖的全局设备是否要进行切换。如果该属性设置为 TRUE,则全局设备要进行切换。如果该属性设置为 FALSE,则全局设备不进行切换。资源组依赖于全局设备的情况由其 Global_resources_used 属性指示。
不直接设置 RG_is_frozen 属性。RGM 在全局设备的状态改变时会更新 RG_is_frozen 属性。
无默认值
从不
指示资源组是故障转移组还是可伸缩组。如果值为 Failover,则 RGM 将组的 Maximum_primaries 属性设置为 1,并将资源组限制为由单个节点控制。
如果该属性的值为 Scalable,则 RGM 允许将 Maximum_primaries 属性设置为大于 1 的值。因此,该组可以同时由多个节点控制。RGM 不允许将其 Failover 属性为 TRUE 的资源添加到其 RG_mode 为 Scalable 的资源组。
如果 Maximum_primaries 为 1,则默认值是 Failover 。如果 Maximum_primaries 大于 1,则默认值是 Scalable。
依赖于 Maximum_primaries 的值
创建时
与资源组关联的 Solaris 项目名称(请参见 projects(1))。使用该属性可以将 Solaris 资源管理功能(例如 CPU 份额和资源池)应用于群集数据服务。RGM 使资源组联机时,它将对未设置 Resource_project_name 属性的资源启动该项目名称下的相关进程(请参见 r_properties(5))。指定的项目名称在项目数据库中必须存在(请参见 projects(1) 和Oracle Solaris Zones 介绍 )。
文本字符串 "default"
随时
任何有效的 Solaris 项目名称
与资源组关联的 CPU 份额数。
RG_SLM_CPU_SHARES 的最大值是 65535 。零不是 RG_SLM_CPU_SHARES 的可接受值,因为将份额值设置为零会导致 CPU 重载时不调度进程。在资源组联机时对 RG_SLM_CPU_SHARES 进行的更改将动态应用。
由于 RG_SLM_TYPE 设置为 automated,因此 Oracle Solaris Cluster 将创建一个名为 SCSLM_resourcegroup-name 的 project(4),其中 resourcegroup-name 是您为资源组提供的名称。在该项目中将执行属于资源组的资源的每个方法。这些项目是在资源组的区域(全局区域)中创建的。
项目 SCSLM_resourcegroup-name 具有一个设置为 RG_SLM_CPU_SHARES 值的 project.cpu-shares 值。如果未设置 RG_SLM_CPU_SHARES 属性,则通过 project.cpu-shares 值 1 创建该项目。
当 RG_SLM_PSET_TYPE 属性设置为 strong 或 weak 时,RG_SLM_CPU_SHARES 属性的值也用于计算所创建的 pset 的大小(按照约定,100 个份额相当于一个 CPU)。有关更多信息,请参见 RG_SLM_PSET_TYPE 属性。
有关处理器集的信息,请参见Oracle Solaris Zones 介绍 。
1
随时
资源组在其中执行的处理器集中处理器的最小数目。仅在符合以下条件时,才可使用该属性:
使用的操作系统为 Solaris 11。
RG_SLM_TYPE 设置为 automated。
RG_SLM_PSET_TYPE 设置为 strong 或 weak。(请参见 RG_SLM_PSET_TYPE 属性。)
RG_SLM_PSET_MIN 的值必须小于或等于 RG_SLM_CPU_SHARES 除以 100 所得到的值。
RG_SLM_PSET_MIN 的最大值是 655 。Oracle Solaris Cluster 使用 RG_SLM_PSET_MIN 属性的值来计算处理器集的最小大小。
在资源组联机时对 RG_SLM_CPU_SHARES 和 RG_SLM_PSET_MIN 进行的更改将动态应用。但是,如果 RG_SLM_PSET_TYPE 设置为 strong,则当没有足够的 CPU 可用于适应更改时,不会应用为 RG_SLM_PSET_MIN 请求的更改。此时,屏幕显示一条警告消息。在下次切换时,如果没有足够的 CPU 可用于满足为 RG_SLM_PSET_MIN 配置的值,则可能会出现因缺少 CPU 而导致的错误。
有关处理器集的信息,请参见Oracle Solaris Zones 介绍 。
0
随时
允许创建专用处理器集。
RG_SLM_PSET_TYPE 的可能值是 default、strong 和 weak。
如果符合以下所有条件,则可以将 RG_SLM_PSET_TYPE 设置为 strong 或 weak:
使用的操作系统为 Solaris 11。
资源组配置为仅在非全局区域中执行。
RG_SLM_TYPE 设置为 automated。
RG_SLM_PSET_TYPE 的可能值是 default、strong 和 weak。
为了使资源组在该属性为 strong 或 weak 时执行,必须配置该资源组,以便在其节点列表中只有非全局区域。
不得为除默认池 (pool_default) 之外的池配置非全局区域。有关区域配置的信息,请参见 zonecfg(1M)。该非全局区域不得动态绑定到除默认池之外的池。有关池绑定的更多信息,请参见 poolbind(1M)。仅当启动资源组中资源的方法时才验证这两种池情况。
对于在其节点列表中具有相同区域的资源组,值 strong 和 weak 是互斥的。不能将同一区域中的资源组配置为如下情形:一些资源组的 RG_SLM_PSET_TYPE 设置为 strong,而其他资源组的该属性设置为 weak。
如果 RG_SLM_PSET_TYPE 设置为 strong 或 weak,且为 RG_SLM_TYPE 列出的操作设置为 automated,则使资源组联机时,Oracle Solaris Cluster 将执行以下操作:
创建一个池,并将该池动态绑定到启动资源组的非全局区域。
创建一个大小介于最小值和最大值之间的处理器集。
最小值是启动该资源组的区域中所有联机资源组的 RG_SLM_PSET_MIN 值的总和,或者是 1(如果该总和等于零)。
最大值是该区域中所有联机资源组的 RG_SLM_SPU_SHARES 值的总和除以 100 并向上舍入到紧邻的整数,或者是 1(如果计算结果为零)。
将处理器集与池关联。
将 zone.cpu-shares 设置为在区域中运行的所有资源组中 RG_SLM_CPU_SHARES 的总和。
如果 RG_SLM_PSET_TYPE 设置为 strong 或 weak,则使资源组脱机(更确切地说,在执行资源组的第一个资源的 STOP 或 POSTNET_STOP 方法时),如果区域中不再存在任何联机资源组,则 Oracle Solaris Cluster 将销毁处理器集,销毁池,并将区域绑定到默认池 (pool_default)。
如果 RG_SLM_PSET_TYPE 设置为 strong,则资源组的行为就好像 RG_SLM_PSET_TYPE 设置为 strong 一样。但是,如果没有足够的处理器可用于创建处理器集,则池将与默认的处理器集关联。
如果 RG_SLM_PSET_TYPE 设置为 strong,且没有足够的处理器可用于创建处理器集,则一个错误将返回到资源组监视器 (Resource Group Monitor, RGM),且在该节点或区域上不会启动资源组。
CPU 分配的优先级顺序为:defaultpsetmin 最小大小的优先级高于 strong(其优先级高于 weak)。(有关 defaultpsetmin 属性的信息,请参见 clnode(1CL)。)但是,在通过使用 clnode 命令尝试增加默认处理器集的大小但没有足够的可用处理器时,不会保持该优先级。
如果通过使用 clnode 命令将最小数量的 CPU 分配给默认处理器集,则操作是动态完成的。如果指定的 CPU 数不可用,则 Oracle Solaris Cluster 定期地重新尝试为默认处理器集分配该数量的 CPU,随后分配更小数量的 CPU,直到分配最小数量的 CPU。该操作可能会销毁某些 weak 处理器集,但是不会销毁 strong 处理器集。
在其 RG_SLM_PSET_TYPE 配置为 strong 的资源组启动时,它可能会销毁与 weak 处理器集关联的处理器集(如果在这两个处理器集的节点上没有足够的可用 CPU)。在该情况下,weak 处理器集中运行的资源组的处理器将与默认的处理器集关联。
要将处理器集从 weak 更改为 strong 或者从 strong 更改为 weak,必须首先将处理器集更改为将 RG_SLM_PSET_TYPE 设置为 default。
如果将 RG_SLM_PSET_TYPE 设置为 default,则 Oracle Solaris Cluster 将创建池 SCSLM_pool_zone-name,但是不创建处理器集。在这种情况下,SCSLM_pool_zone-name 与默认的处理器集关联。分配给区域的份额由为在该区域中运行的所有资源组的 RG_SLM_CPU_SHARES 设置的值的总和确定。
如果在非全局区域中不再有为 CPU 控制配置的任何联机资源组,则该非全局区域的 CPU 份额值采用在区域配置中找到的 zone.cpu-shares 的值。该参数的默认值为 1。有关区域配置的更多信息,请参见 zonecfg(1M)。
有关资源池和处理器集的信息,请参见Oracle Solaris Zones 介绍 。
文本字符串 "default"
随时
允许您控制系统资源用法,并自动执行一些步骤以在 Oracle Solaris OS 中配置系统资源管理。RG_SLM_TYPE 的可能值是 automated 和 manual。
如果 RG_SLM_TYPE 设置为 automated,则使资源组联机时,Oracle Solaris Cluster 将执行以下操作:
创建一个名为 SCSLM_resourcegroup-name 的项目。该资源组中资源的所有方法都将在该项目中执行。在节点或区域上首次执行该资源组中资源的方法时,会创建该项目。
将与项目关联的 project.cpu_shares 的值设置为 RG_SLM_CPU_SHARES 的值。默认情况下,project.cpu_shares 的值是 1。
将区域的 zone.cpu-shares 设置为所有资源组(其 RG_SLM_TYPE 设置为 automated)的 RG_SLM_CPU_SHARES 的总和。此区域可以是全局区域。有关专用处理器集的信息,请参见 RG_SLM_PSET_TYPE 属性。
当 RG_SLM_TYPE 设置为 automated 时,执行的任何操作都会导致记录消息。
如果 RG_SLM_TYPE 设置为 manual,则资源组将在 RG_project_name 属性指定的项目中执行。
有关资源池和处理器集的信息,请参见Oracle Solaris Zones 介绍 。
不要指定超过 58 个字符的资源组名称。如果资源组名称包含 58 个以上的字符,则不能配置 CPU 控制,即不能将 RG_SLM_TYPE 属性设置为 automated。
避免在资源组名称中包括短划线 (-)。Oracle Solaris Cluster 软件在创建项目时会将资源组名称中的所有短划线替换为下划线 (_)。例如,Oracle Solaris Cluster 对于名为 rg-dev 的资源组创建名为 SCSLM_rg_dev 的项目。如果名为 rg_dev 的资源组已存在,则 Oracle Solaris Cluster 尝试为资源组 rg-dev 创建项目时将出现冲突。
manual
随时
由 RGM 设置为 Unmanaged、Online、Offline、Pending_online、Pending_offline、Error_stop_failed、Online_faulted 或 Pending_online_blocked 以描述每个群集节点上资源组的状态。
不能配置该属性。但是,可以通过使用 clresourcegroup(1CL) 或通过使用等效的 Oracle Solaris Cluster 图形用户界面命令,间接地设置该属性。当资源组不受 RGM 控制时,该组可以 Unmanaged 状态存在。
以下描述对每个状态进行了概述。
资源组内的一个或多个资源无法成功停止且处于 Stop_failed 资源状态。组中的其他资源可能保持联机或脱机状态。在清除 Error_stop_failed 状态之前,不允许该资源组在任何节点上启动。
必须使用管理命令(如 clresourcegroup clear)手动中止 Stop_failed 资源并将其状态重置为 Offline。
资源组已在节点上停止。换句话说,停止方法(Monitor_stop、Stop 和 Postnet_stop,适用于每个资源)在组中的所有已启用资源上都已成功执行。资源组在节点上首次启动之前,该状态也适用。
资源组已在节点上启动。换句话说,启动方法(Prenet_start、Start 和 Monitor_start,每个资源适用的方法)在组中的所有已启用资源上都已成功执行。
资源组为 Pending_online 并在该节点上已完成启动。但是,一个或多个资源以 Start_failed 资源状态或以 Faulted 状态结束。
资源组正在节点上停止。停止方法(Monitor_stop、Stop 和 Postnet_stop ,适用于每个资源)正在组中的已启用资源上执行。
资源组正在节点上启动。启动方法(Prenet_start、Start 和 Monitor_start,适用于每个资源)正在组中的已启用资源上执行。
资源组无法完全启动,因为该资源组中的一个或多个资源对其他资源组中资源的强资源依赖性未得到满足。此类资源将保持 Offline 状态。在满足资源依赖性时,资源组将自动恢复为 Pending_online 状态。
新创建的资源组的初始状态,或以前管理的资源组的状态。Init 方法尚未在组中的资源上运行,或者 Fini 方法已在组中的资源上运行。
组不受 RGM 管理。
无默认值
从不
如果资源组的 RG_system 属性为 TRUE,则只能对该资源组和该资源组包含的资源执行特定的操作。该限制旨在帮助防止意外修改或删除关键的资源组和资源。只有 clresource(1CL) 和 clresourcegroup(1CL) 命令受该属性影响。scha_control(1HA) 和 scha_control(3HA) 的操作不受影响。
对资源组(或资源组的资源)执行受限制操作之前,必须先将资源组的 RG_system 属性设置为 FALSE。修改或删除支持群集服务的资源组时或者修改或删除此类资源组包含的资源时,要小心谨慎。
下表显示了 RG_system 设置为 TRUE 时对资源组限制的操作。
|
如果资源组的 RG_system 属性为 TRUE,则唯一可以编辑的资源组属性是 RG_system 属性本身。换句话说,从不限制编辑 RG_system 属性。
FALSE
随时
一个布尔值,它指示资源组的自动恢复是否已暂停。在群集管理员没有显式发出命令继续执行自动恢复过程之前,已暂停的资源组不会自动重新启动或进行故障转移。无论是联机还是脱机,已暂停的数据服务都仍将处于其当前状态。
资源组已暂停时,可以通过使用带有子命令(如 switch、online、offline、disable 或 enable)的 clresourcegroup (1CL) 或 clresource (1CL) 命令,在特定的节点上将资源组或其资源手动切换到其他状态。无需直接对资源执行操作(如中止应用程序进程或运行应用程序特定的命令),只需使用 clresourcegroup (1CL) 或 clresource (1CL) 命令即可。这样,群集框架就可以保持资源和资源组的当前状态的准确情形,以便在执行 resume 子命令时正确恢复可用性。
如果 Suspend_automatic_recovery 属性设置为 TRUE,则暂停资源组的自动恢复。如果该属性设置为 FALSE,则资源组的自动恢复将继续执行并处于活动状态。
群集管理员不直接设置该属性。当群集管理员暂停或继续执行资源组的自动恢复时,RGM 会更改 Suspend_automatic_recovery 属性的值。群集管理员使用 clresourcegroup suspend 命令暂停自动恢复。群集管理员使用 clresourcegroup resume 命令继续执行自动恢复。可以暂停或继续执行资源组,而不管其 RG_system 属性的设置如何。
FALSE
从不
资源组当前通过 clrg switch、clrg remaster、scha_control 移交或故障恢复操作切换到的节点的列表。如果资源组当前未通过这些操作之一切换到新节点,则查询返回空列表。
该查询通常由 Stop 或 Postnet_stop 停止方法来执行,以搜索是否存在组要切换到的指定的一个或多个目标节点。
无
从不(仅查询)
projects(1)、clnode(1CL)、clresource(1CL)、clresourcegroup(1CL)、scha_control(1HA)、poolbind(1M)、scha_control(3HA)、project(4)、property_attributes(5)、r_properties(5)、rt_properties(5)、scha_resourcegroup_get(1HA) 和 scha_resourcegroup_get(3HA)。
Oracle Solaris Cluster Concepts Guide 、Oracle Solaris Cluster 数据服务规划和管理指南 、Oracle Solaris Zones 介绍 。