Skip to content

Instantly share code, notes, and snippets.

@sorquan
Last active March 12, 2021 12:08
Show Gist options
  • Save sorquan/c14c2606b373bab477d0b5ce6314b12e to your computer and use it in GitHub Desktop.
Save sorquan/c14c2606b373bab477d0b5ce6314b12e to your computer and use it in GitHub Desktop.

Pacemaker - pcs & crmsh cheatsheet

General Operations

Display the configuration

crmsh # crm configure show xml
pcs   # pcs cluster cib

To show a simplified (non-xml) syntax

crmsh # crm configure show
pcs   # pcs config

Display the current status

crmsh # crm status
pcs   # pcs status

also

# crm_mon -1

Node standby

Put node in standby

crmsh    # crm node standby pcmk-1
pcs-0.9  # pcs cluster standby pcmk-1
pcs-0.10 # pcs node standby pcmk-1

Remove node from standby

crmsh    # crm node online pcmk-1
pcs-0.9  # pcs cluster unstandby pcmk-1
pcs-0.10 # pcs node unstandby pcmk-1

crm has the ability to set the status on reboot or forever. pcs can apply the change to all the nodes.

Set cluster property

crmsh # crm configure property stonith-enabled=false
pcs   # pcs property set stonith-enabled=false

Resource manipulation

List Resource Agent (RA) classes

crmsh # crm ra classes
pcs   # pcs resource standards

List available RAs

crmsh # crm ra list ocf
crmsh # crm ra list lsb
crmsh # crm ra list service
crmsh # crm ra list stonith
pcs   # pcs resource agents ocf
pcs   # pcs resource agents lsb
pcs   # pcs resource agents service
pcs   # pcs resource agents stonith
pcs   # pcs resource agents

You can also filter by provider

crmsh # crm ra list ocf pacemaker
pcs   # pcs resource agents ocf:pacemaker

List RA info

crmsh # crm ra meta IPaddr2
pcs   # pcs resource describe IPaddr2

Use any RA name (like IPaddr2) from the list displayed with the previous command You can also use the full class:provider:RA format if multiple RAs with the same name are available :

crmsh # crm ra meta ocf:heartbeat:IPaddr2
pcs   # pcs resource describe ocf:heartbeat:IPaddr2

Create a resource

crmsh # crm configure primitive ClusterIP ocf:heartbeat:IPaddr2 \
        params ip=192.168.122.120 cidr_netmask=24 \
        op monitor interval=30s 
pcs   # pcs resource create ClusterIP IPaddr2 ip=192.168.0.120 cidr_netmask=24

The standard and provider (ocf:heartbeat) are determined automatically since IPaddr2 is unique. The monitor operation is automatically created based on the agent's metadata.

Display a resource

crmsh    # crm configure show
pcs-0.9  # pcs resource show --full
pcs-0.10 # pcs resource config

crmsh also displays fencing resources. The result can be filtered by supplying a resource name (IE ClusterIP):

crmsh    # crm configure show ClusterIP
pcs-0.9  # pcs resource show ClusterIP
pcs-0.10 # pcs resource config ClusterIP

crmsh also displays fencing resources.

Display fencing resources

crmsh    # crm resource show
pcs-0.9  # pcs stonith show --full
pcs-0.10 # pcs stonith config

pcs treats STONITH devices separately.

Display Stonith RA info

crmsh # crm ra meta stonith:fence_ipmilan
pcs   # pcs stonith describe fence_ipmilan

Start a resource

crmsh # crm resource start ClusterIP
pcs   # pcs resource enable ClusterIP

Stop a resource

crmsh # crm resource stop ClusterIP
pcs   # pcs resource disable ClusterIP

Remove a resource

crmsh # crm configure delete ClusterIP
pcs   # pcs resource delete ClusterIP

Modify a resource

crmsh # crm resource param ClusterIP set clusterip_hash=sourceip
pcs   # pcs resource update ClusterIP clusterip_hash=sourceip

crmsh also has an edit command which edits the simplified CIB syntax (same commands as the command line) via a configurable text editor.

crmsh # crm configure edit ClusterIP

Using the interactive shell mode of crmsh, multiple changes can be edited and verified before committing to the live configuration.

crmsh # crm configure
crmsh # edit
crmsh # verify
crmsh # commit

Delete parameters for a given resource

crmsh # crm resource param ClusterIP delete nic
pcs   # pcs resource update ClusterIP ip=192.168.0.98 nic=  

List the current resource defaults

crmsh # crm configure show type:rsc_defaults
pcs   # pcs resource defaults

Set resource defaults

crmsh # crm configure rsc_defaults resource-stickiness=100
pcs   # pcs resource defaults resource-stickiness=100

List the current operation defaults

crmsh # crm configure show type:op_defaults
pcs   # pcs resource op defaults

Set operation defaults

crmsh # crm configure op_defaults timeout=240s
pcs   # pcs resource op defaults timeout=240s

Set Colocation

crmsh # crm configure colocation website-with-ip INFINITY: WebSite ClusterIP
pcs   # pcs constraint colocation add ClusterIP with WebSite INFINITY

With roles

crmsh # crm configure colocation another-ip-with-website inf: AnotherIP WebSite:Master
pcs   # pcs constraint colocation add Started AnotherIP with Master WebSite INFINITY

Set ordering

crmsh # crm configure order apache-after-ip mandatory: ClusterIP WebSite
pcs   # pcs constraint order ClusterIP then WebSite

With roles:

crmsh # crm configure order ip-after-website Mandatory: WebSite:Master AnotherIP
pcs   # pcs constraint order promote WebSite then start AnotherIP

Set preferred location

crmsh # crm configure location prefer-pcmk-1 WebSite 50: pcmk-1
pcs   # pcs constraint location WebSite prefers pcmk-1=50

With roles:

crmsh # crm configure location prefer-pcmk-1 WebSite rule role=Master 50: \#uname eq pcmk-1
pcs   # pcs constraint location WebSite rule role=master 50 \#uname eq pcmk-1

Move resources

crmsh # crm resource move WebSite pcmk-1
pcs   # pcs resource move WebSite pcmk-1
crmsh # crm resource unmove WebSite
pcs   # pcs resource clear WebSite

A resource can also be moved away from a given node:

crmsh # crm resource ban Website pcmk-2
pcs   # pcs resource ban Website pcmk-2

Remember that moving a resource sets a stickyness to -INF to a given node until unmoved

Resource tracing

crmsh # crm resource trace Website

Clear fail counts

crmsh # crm resource cleanup Website
pcs   # pcs resource cleanup Website

Edit fail counts

crmsh # crm resource failcount Website show pcmk-1
crmsh # crm resource failcount Website set pcmk-1 100

Handling configuration elements by type

pcs deals with constraints differently. These can be manipulated by the command above as well as the following and others

pcs   # pcs constraint list --full
pcs   # pcs constraint remove cli-ban-Website-on-pcmk-1

Removing a constraint in crmsh uses the same command as removing a resource.

crmsh # crm configure remove cli-ban-Website-on-pcmk-1

The show and edit commands in crmsh can be used to manage resources and constraints by type:

crmsh # crm configure show type:primitive
crmsh # crm configure edit type:colocation

Create a clone

crmsh # crm configure clone WebIP ClusterIP meta globally-unique=true clone-max=2 clone-node-max=2
pcs   # pcs resource clone ClusterIP globally-unique=true clone-max=2 clone-node-max=2

Create a promotable (master/slave) clone

crmsh    # crm configure ms WebDataClone WebData \
           meta master-max=1 master-node-max=1 \
           clone-max=2 clone-node-max=1 notify=true
pcs-0.9  # pcs resource master WebDataClone WebData \
           master-max=1 master-node-max=1 \
           clone-max=2 clone-node-max=1 notify=true
pcs-0.10 # pcs resource promotable WebData \
           promoted-max=1 promoted-node-max=1 \
           clone-max=2 clone-node-max=1 notify=true

Other operations

Batch changes

crmsh # crm
crmsh # cib new drbd_cfg
crmsh # configure primitive WebData ocf:linbit:drbd params drbd_resource=wwwdata \
        op monitor interval=60s
crmsh # configure ms WebDataClone WebData meta master-max=1 master-node-max=1 \
        clone-max=2 clone-node-max=1 notify=true
crmsh # cib commit drbd_cfg
crmsh # quit
pcs      # pcs cluster cib drbd_cfg
pcs      # pcs -f drbd_cfg resource create WebData ocf:linbit:drbd drbd_resource=wwwdata \
           op monitor interval=60s
pcs-0.9  # pcs -f drbd_cfg resource master WebDataClone WebData master-max=1 master-node-max=1 \
           clone-max=2 clone-node-max=1 notify=true
pcs-0.10 # pcs -f drbd_cfg resource promotable WebData promoted-max=1 promoted-node-max=1 \
           clone-max=2 clone-node-max=1 notify=true
pcs      # pcs cluster push cib drbd_cfg

Template creation

Create a resource template based on a list of primitives of the same type

crmsh # crm configure assist template ClusterIP AdminIP

Log analysis

Display information about recent cluster events

crmsh # crm history
crmsh # peinputs
crmsh # transition pe-input-10
crmsh # transition log pe-input-10

Configuration scripts

Create and apply multiple-step cluster configurations including configuration of cluster resources

crmsh # crm script show apache
crmsh # crm script run apache \
    id=WebSite \
    install=true \
    virtual-ip:ip=192.168.0.15 \
    database:id=WebData \
    database:install=true
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment