Chapter 11. Configuring cluster resources Create and delete cluster resources with the following commands. The format for the command to create a cluster resource is as follows: Key cluster resource creation options include the following: The --before and --after options specify the position of the added resource relative to a resource that already exists in a resource group. Specifying the --disabled option indicates that the resource is not started automatically. There is no limit to the number of resources you can create in a cluster. You can determine the behavior of a resource in a cluster by configuring constraints for that resource. Resource creation examples The following command creates a resource with the name VirtualIP of standard ocf , provider heartbeat , and type IPaddr2 . The floating address of this resource is 192.168.0.120, and the system will check whether the resource is running every 30 seconds. Alternately, you can omit the standard and provider fields and use the following command. This will default to a standard of ocf and a provider of heartbeat . Deleting a configured resource Delete a configured resource with the following command. For example, the following command deletes an existing resource with a resource ID of VirtualIP . 11.1. Resource agent identifiers The identifiers that you define for a resource tell the cluster which agent to use for the resource, where to find that agent and what standards it conforms to. The following table describes these properties of a resource agent. Table 11.1. Resource Agent Identifiers Field Description standard The standard the agent conforms to. Allowed values and their meaning: * ocf - The specified type is the name of an executable file conforming to the Open Cluster Framework Resource Agent API and located beneath /usr/lib/ocf/resource.d/ provider * lsb - The specified type is the name of an executable file conforming to Linux Standard Base Init Script Actions. If the type does not specify a full path, the system will look for it in the /etc/init.d directory. * systemd - The specified type is the name of an installed systemd unit * service - Pacemaker will search for the specified type , first as an lsb agent, then as a systemd agent * nagios - The specified type is the name of an executable file conforming to the Nagios Plugin API and located in the /usr/libexec/nagios/plugins directory, with OCF-style metadata stored separately in the /usr/share/nagios/plugins-metadata directory (available in the nagios-agents-metadata package for certain common plugins). type The name of the resource agent you wish to use, for example IPaddr or Filesystem provider The OCF spec allows multiple vendors to supply the same resource agent. Most of the agents shipped by Red Hat use heartbeat as the provider. The following table summarizes the commands that display the available resource properties. Table 11.2. Commands to Display Resource Properties pcs Display Command Output pcs resource list Displays a list of all available resources. pcs resource standards Displays a list of available resource agent standards. pcs resource providers Displays a list of available resource agent providers. pcs resource list string Displays a list of available resources filtered by the specified string. You can use this command to display resources filtered by the name of a standard, a provider, or a type. 11.2. Displaying resource-specific parameters For any individual resource, you can use the following command to display a description of the resource, the parameters you can set for that resource, and the default values that are set for the resource. For example, the following command displays information for a resource of type apache . 11.3. Configuring resource meta options In addition to the resource-specific parameters, you can configure additional resource options for any resource. These options are used by the cluster to decide how your resource should behave. The following table describes the resource meta options. Table 11.3. Resource Meta Options Field Default Description priority 0 If not all resources can be active, the cluster will stop lower priority resources in order to keep higher priority ones active. target-role Started Indicates what state the cluster should attempt to keep this resource in. Allowed values: * Stopped - Force the resource to be stopped * Started - Allow the resource to be started (and in the case of promotable clones, promoted if appropriate) * Promoted - Allow the resource to be started and, if appropriate, promoted * Unpromoted - Allow the resource to be started, but only in unpromoted mode if the resource is promotable is-managed true Indicates whether the cluster is allowed to start and stop the resource. Allowed values: true , false resource-stickiness 1 Value to indicate how much the resource prefers to stay where it is. requires Calculated Indicates under what conditions the resource can be started. Defaults to fencing except under the conditions noted below. Possible values: * nothing - The cluster can always start the resource. * quorum - The cluster can only start this resource if a majority of the configured nodes are active. This is the default value if stonith-enabled is false or the resource's standard is stonith . * fencing - The cluster can only start this resource if a majority of the configured nodes are active and any failed or unknown nodes have been fenced. * unfencing - The cluster can only start this resource if a majority of the configured nodes are active and any failed or unknown nodes have been fenced and only on nodes that have been unfenced . This is the default value if the provides=unfencing stonith meta option has been set for a fencing device. migration-threshold INFINITY How many failures may occur for this resource on a node before this node is marked ineligible to host this resource. A value of 0 indicates that this feature is disabled (the node will never be marked ineligible); by contrast, the cluster treats INFINITY (the default) as a very large but finite number. This option has an effect only if the failed operation has on-fail=restart (the default), and additionally for failed start operations if the cluster property start-failure-is-fatal is false . failure-timeout 0 (disabled) Ignore previously failed resource actions after this much time has passed without new failures. This potentially allows the resource to move back to the node on which it failed, if it previously reached its migration threshold there. A value of 0 indicates that failures do not expire. WARNING : If this value is low, and pending cluster activity prevents the cluster from responding to a failure within that time, the failure is ignored completely and does not cause recovery of the resource, even if a recurring action continues to report failure. The value of this option should be at least greater than the longest action timeout for all resources in the cluster. A value in hours or days is reasonable. multiple-active stop_start Indicates what the cluster should do if it ever finds the resource active on more than one node. Allowed values: * block - mark the resource as unmanaged * stop_only - stop all active instances and leave them that way * stop_start - stop all active instances and start the resource in one location only * stop_unexpected - (RHEL 9.1 and later) stop only unexpected instances of the resource, without requiring a full restart. It is the user's responsibility to verify that the service and its resource agent can function with extra active instances without requiring a full restart. critical true Sets the default value for the influence option for all colocation constraints involving the resource as a dependent resource ( target_resource ), including implicit colocation constraints created when the resource is part of a resource group. The influence colocation constraint option determines whether the cluster will move both the primary and dependent resources to another node when the dependent resource reaches its migration threshold for failure, or whether the cluster will leave the dependent resource offline without causing a service switch. The critical resource meta option can have a value of true or false , with a default value of true . allow-unhealthy-nodes false (RHEL 9.1 and later) When set to true , the resource is not forced off a node due to degraded node health. When health resources have this attribute set, the cluster can automatically detect if the node's health recovers and move resources back to it. A node's health is determined by a combination of the health attributes set by health resource agents based on local conditions, and the strategy-related options that determine how the cluster reacts to those conditions. 11.3.1. Changing the default value of a resource option You can change the default value of a resource option for all resources with the pcs resource defaults update command. The following command resets the default value of resource-stickiness to 100. The original pcs resource defaults name = value command, which set defaults for all resources in releases, remains supported unless there is more than one set of defaults configured. However, pcs resource defaults update is now the preferred version of the command. 11.3.2. Changing the default value of a resource option for sets of resources You can create multiple sets of resource defaults with the pcs resource defaults set create command, which allows you to specify a rule that contains resource expressions. Only resource and date expressions, including and , or and parentheses, are allowed in rules that you specify with this command. With the pcs resource defaults set create command, you can configure a default resource value for all resources of a particular type. If, for example, you are running databases which take a long time to stop, you can increase the resource-stickiness default value for all resources of the database type to prevent those resources from moving to other nodes more often than you desire. The following command sets the default value of resource-stickiness to 100 for all resources of type pqsql . The id option, which names the set of resource defaults, is not mandatory. If you do not set this option pcs will generate an ID automatically. Setting this value allows you to provide a more descriptive name. In this example, ::pgsql means a resource of any class, any provider, of type pgsql . Specifying ocf:heartbeat:pgsql would indicate class ocf , provider heartbeat , type pgsql , Specifying ocf:pacemaker: would indicate all resources of class ocf , provider pacemaker , of any type. To change the default values in an existing set, use the pcs resource defaults set update command. 11.3.3. Displaying currently configured resource defaults The pcs resource defaults [config] command displays a list of currently configured default values for resource options, including any rules that you specified. As of Red Hat Enterprise Linux 9.5, you can display the output of this command in text, JSON, and command formats. Specifying --output-format=text displays the configured resource defaults in plain text format, which is the default value for this option. Specifying --output-format=cmd displays the pcs resource defaults commands created from the current cluster defaults configuration. You can use these commands to re-create configured resource defaults on a different system. Specifying --output-format=json displays the configured resource defaults in JSON format, which is suitable for machine parsing. The following examples show the three different output formats of the pcs resource defaults config command after the default values for any ocf:pacemaker:pgsql resource were reset with the following example command: This example displays the configured resource default values in plain text. This example displays the pcs resource defaults commands created from the current cluster defaults configuration. This example displays the configured resource default values in JSON format. 11.3.4. Setting meta options on resource creation Whether you have reset the default value of a resource meta option or not, you can set a resource option for a particular resource to a value other than the default when you create the resource. The following shows the format of the pcs resource create command you use when specifying a value for a resource meta option. For example, the following command creates a resource with a resource-stickiness value of 50. You can also set the value of a resource meta option for an existing resource, group, or cloned resource with the following command. In the following example, there is an existing resource named dummy_resource . This command sets the failure-timeout meta option to 20 seconds, so that the resource can attempt to restart on the same node in 20 seconds. After executing this command, you can display the values for the resource to verify that failure-timeout=20s is set. 11.4. Configuring resource groups One of the most common elements of a cluster is a set of resources that need to be located together, start sequentially, and stop in the reverse order. To simplify this configuration, Pacemaker supports the concept of resource groups. 11.4.1. Creating a resource group You create a resource group with the following command, specifying the resources to include in the group. If the group does not exist, this command creates the group. If the group exists, this command adds additional resources to the group. The resources will start in the order you specify them with this command, and will stop in the reverse order of their starting order. You can use the --before and --after options of this command to specify the position of the added resources relative to a resource that already exists in the group. You can also add a new resource to an existing group when you create the resource, using the following command. The resource you create is added to the group named group_name . If the group group_name does not exist, it will be created. There is no limit to the number of resources a group can contain. The fundamental properties of a group are as follows. Resources are colocated within a group. Resources are started in the order in which you specify them. If a resource in the group cannot run anywhere, then no resource specified after that resource is allowed to run. Resources are stopped in the reverse order in which you specify them. The following example creates a resource group named shortcut that contains the existing resources IPaddr and Email . In this example: The IPaddr is started first, then Email . The Email resource is stopped first, then IPAddr . If IPaddr cannot run anywhere, neither can Email . If Email cannot run anywhere, however, this does not affect IPaddr in any way. 11.4.2. Removing a resource group You remove a resource from a group with the following command. If there are no remaining resources in the group, this command removes the group itself. 11.4.3. Displaying resource groups The following command lists all currently configured resource groups. 11.4.4. Group options You can set the following options for a resource group, and they maintain the same meaning as when they are set for a single resource: priority , target-role , is-managed . For information about resource meta options, see Configuring resource meta options . 11.4.5. Group stickiness Stickiness, the measure of how much a resource wants to stay where it is, is additive in groups. Every active resource of the group will contribute its stickiness value to the group's total. So if the default resource-stickiness is 100, and a group has seven members, five of which are active, then the group as a whole will prefer its current location with a score of 500. 11.5. Determining resource behavior You can determine the behavior of a resource in a cluster by configuring constraints for that resource. You can configure the following categories of constraints: location constraints - A location constraint determines which nodes a resource can run on. For information about configuring location constraints, see Determining which nodes a resource can run on . order constraints - An ordering constraint determines the order in which the resources run. For information about configuring ordering constraints, see Determining the order in which cluster resources are run . colocation constraints - A colocation constraint determines where resources will be placed relative to other resources. For information about colocation constraints, see Colocating cluster resources . As a shorthand for configuring a set of constraints that will locate a set of resources together and ensure that the resources start sequentially and stop in reverse order, Pacemaker supports the concept of resource groups. After you have created a resource group, you can configure constraints on the group itself just as you configure constraints for individual resources.

Commands:
pcs resource create resource_id [ standard :[ provider :]] type [ resource_options ] [op operation_action operation_options [ operation_action operation options ]...] [meta meta_options ...] [clone [ clone_id ] [ clone_options ] | promotable [ clone_id ] [ clone_options ] [--wait[= n ]]
pcs resource create VirtualIP ocf:heartbeat:IPaddr2 ip=192.168.0.120 cidr_netmask=24 op monitor interval=30s
pcs resource create VirtualIP IPaddr2 ip=192.168.0.120 cidr_netmask=24 op monitor interval=30s
pcs resource delete resource_id
pcs resource delete VirtualIP
pcs resource describe [ standard :[ provider :]] type
pcs resource describe ocf:heartbeat:apache This is the resource agent for the Apache Web server. This resource agent operates both version 1.x and version 2.x Apache servers.
pcs resource defaults update resource-stickiness=100
pcs resource defaults set create id=pgsql-stickiness meta resource-stickiness=100 rule resource ::pgsql
pcs resource defaults set create id=set-1 score=100 meta resource-stickiness=10 rule resource ocf:pacemaker:pgsql
pcs resource defaults config Meta Attrs: build-resource-defaults resource-stickiness=1 Meta Attrs: set-1 score=100 resource-stickiness=10 Rule: boolean-op=and score=INFINITY Expression: resource ocf:pacemaker:pgsql
pcs resource defaults config --output-format=cmd pcs -- resource defaults set create id=build-resource-defaults meta resource-stickiness=1; pcs -- resource defaults set create id=set-1 score=100 meta resource-stickiness=10 rule 'resource ocf:pacemaker:pgsql'
pcs resource defaults config --output-format=json {"instance_attributes": [], "meta_attributes": [{"id": "build-resource-defaults", "options": {}, "rule": null, "nvpairs": [{"id": "build-resource-stickiness", "name": "resource-stickiness", "value": "1"}]}, {"id": "set-1", "options": {"score": "100"}, "rule": {"id": "set-1-rule", "type": "RULE", "in_effect": "UNKNOWN", "options": {"boolean-op": "and", "score": "INFINITY"}, "date_spec": null, "duration": null, "expressions": [{"id": "set-1-rule-rsc-ocf-pacemaker-pgsql", "type": "RSC_EXPRESSION", "in_effect": "UNKNOWN", "options": {"class": "ocf", "provider": "pacemaker", "type": "pgsql"}, "date_spec": null, "duration": null, "expressions": [], "as_string": "resource ocf:pacemaker:pgsql"}], "as_string": "resource ocf:pacemaker:pgsql"}, "nvpairs": [{"id": "set-1-resource-stickiness", "name": "resource-stickiness", "value": "10"}]}]}
pcs resource create resource_id [ standard :[ provider :]] type [ resource options ] [meta meta_options ...]
pcs resource create VirtualIP ocf:heartbeat:IPaddr2 ip=192.168.0.120 meta resource-stickiness=50
pcs resource meta resource_id | group_id | clone_id meta_options
pcs resource meta dummy_resource failure-timeout=20s
pcs resource config dummy_resource Resource: dummy_resource (class=ocf provider=heartbeat type=Dummy) Meta Attrs: failure-timeout=20s
pcs resource group add group_name resource_id [ resource_id ] ... [ resource_id ] [--before resource_id | --after resource_id ]
pcs resource create resource_id [ standard :[ provider :]] type [resource_options] [op operation_action operation_options ] --group group_name
pcs resource group add shortcut IPaddr Email
pcs resource group remove group_name resource_id
pcs resource group list