Using crm

From Alteeve Wiki
Jump to navigation Jump to search

 Alteeve Wiki :: How To :: Using crm

This aims to be a complete guide to using Pacemaker's crm cluster resource manager tool.

crm

The crm command is the main method of invoking the cluster resource manager.

  • Called without arguments, it invokes the crm shell.
  • Called with arguments, it acts as a "one-shot" operation, executing all commands following it.
  • Called with crm -f /path/to/file, it will read the file and execute all commands found within.
  • Called with crm -, STDIN is read for arguments.

The crm Shell

The crm shell acts as an interactive shell, allowing for the cluster to be manipulated in real-time.

All commands can be entered in a hierarchical manner. Simply enter a command and press <enter> to decent into that sub-command's menu. To return, type end, cd or up.

At any level, you can type help to get a list of arguments that are valid at the given level you are in.

At any time, you can type quit, bye or exit to leave the shell.

All commands listed in the rest of this document can be entered at the command line as a "one-shot" command. Likewise, a combination of command sequences can be saved in a file and the read into crm.

cib

Manage shadow CIBs

cib > new

Create a new shadow CIB.

usage: new <shadow_cib> [withstatus] [force] [empty]

Example; Create a shadow CIB called stonith:

cib new stonith
INFO: stonith shadow CIB created

cib > delete

Delete a shadow CIB

usage: delete <shadow_cib>

Example; Delete a shadow CIB called stonith.

cib delete stonith
INFO: stonith shadow CIB deleted

cib > reset

Copy live cib to a shadow CIB

usage: reset <shadow_cib>

cib > commit

Copy a shadow CIB to the cluster

usage: commit <shadow_cib>

cib > use

Change working CIB

cib > diff

diff between the shadow CIB and the live CIB

cib > list

list all shadow CIBs

cib > import

import a CIB or PE input file to a shadow

usage: import {<file>|<number>} [<shadow>]

cib > cibstatus

CIB status management and editing

cib > cibstatus > load

load the CIB status section

usage: load {<file>|shadow:<cib>|live}

cib > cibstatus > save

save the CIB status section

cib > cibstatus > origin

display origin of the CIB status section

cib > cibstatus > show

show CIB status section

This shows the raw XML.

cib > cibstatus > node

change node status

usage: node <node> {online|offline|unclean}

cib > cibstatus > op

edit outcome of a resource operation

usage: op <operation> <resource> <exit_code> [<op_status>] [<node>]

cib > cibstatus > quorum

set the quorum

usage: quorum <bool>

cib > cibstatus > run

run policy engine

Also(?) displays the cluster status.

cib > cibstatus > simulate

simulate cluster transition

Also(?) displays the cluster status.

resource

Resources management

resource > status

show status of resources

resource > start

start a resource

usage: start <rsc>

resource > stop

stop a resource

usage: stop <rsc>

resource > restart

restart a resource

usage: restart <rsc>

resource > promote

promote a master-slave resource

usage: promote <rsc>

resource > demote

demote a master-slave resource

usage: demote <rsc>

resource > manage

put a resource into managed mode

usage: manage <rsc>

resource > unmanage

put a resource into unmanaged mode

usage: unmanage <rsc>

resource > migrate

migrate a resource to another node

usage: migrate <rsc> [<node>] [<lifetime>] [force]

resource > unmigrate

unmigrate a resource to another node

usage: unmigrate <rsc>

resource > param

manage a parameter of a resource

usage:
        param <rsc> set <param> <value>
        param <rsc> delete <param>
        param <rsc> show <param>

resource > meta

manage a meta attribute

usage:
        meta <rsc> set <attr> <value>
        meta <rsc> delete <attr>
        meta <rsc> show <attr>

resource > utilization

manage a utilization attribute

usage:
        utilization <rsc> set <attr> <value>
        utilization <rsc> delete <attr>
        utilization <rsc> show <attr>

resource > failcount

manage failcounts

usage:
        failcount <rsc> set <node> <value>
        failcount <rsc> delete <node>
        failcount <rsc> show <node>

resource > cleanup

cleanup resource status

usage: cleanup <rsc> [<node>]

resource > refresh

refresh CIB from the LRM status

resource > reprobe

probe for resources not started by the CRM

configure

CRM cluster configuration

configure > node

define a cluster node

usage: node <uname>[:<type>]
           [attributes <param>=<value> [<param>=<value>...]]
           [utilization <param>=<value> [<param>=<value>...]]

configure > primitive

define a resource

usage: primitive <rsc> [<class>:[<provider>:]]<type>
        [params <param>=<value> [<param>=<value>...]]
        [meta <attribute>=<value> [<attribute>=<value>...]]
        [utilization <attribute>=<value> [<attribute>=<value>...]]
        [operations id_spec
            [op op_type [<attribute>=<value>...] ...]]

configure > monitor

add monitor operation to a primitive

usage: monitor <rsc>[:<role>] <interval>[:<timeout>]

configure > group

define a group

usage: group <name> <rsc> [<rsc>...]
        [params <param>=<value> [<param>=<value>...]]
        [meta <attribute>=<value> [<attribute>=<value>...]]

configure > clone

define a clone

usage: clone <name> <rsc>
        [params <param>=<value> [<param>=<value>...]]
        [meta <attribute>=<value> [<attribute>=<value>...]]

configure > ms

define a master-slave resource

usage: ms <name> <rsc>
        [params <param>=<value> [<param>=<value>...]]
        [meta <attribute>=<value> [<attribute>=<value>...]]

configure > location

a location preference

usage: location <id> <rsc> {node_pref|rules}

        node_pref :: <score>: <node>

        rules ::
          rule [id_spec] [$role=<role>] <score>: <expression>
          [rule [id_spec] [$role=<role>] <score>: <expression> ...]

        id_spec :: $id=<id> | $id-ref=<id>
        score :: <number> | <attribute> | [-]inf
        expression :: <simple_exp> [bool_op <simple_exp> ...]
        bool_op :: or | and
        simple_exp :: <attribute> [type:]<binary_op> <value>
                      | <unary_op> <attribute>
                      | date <date_expr>
        type :: string | version | number
        binary_op :: lt | gt | lte | gte | eq | ne
        unary_op :: defined | not_defined

configure > colocation

colocate resources

usage: colocation <id> <score>: <rsc>[:<role>] <rsc>[:<role>]

configure > order

order resources

usage: order <id> score-type: <first-rsc>[:<action>] <then-rsc>[:<action>]
        [symmetrical=<bool>]

configure > property

set a cluster property

usage: property [$id=<set_id>] <option>=<value>

configure > rsc_defaults

set resource defaults

usage: rsc_defaults [$id=<set_id>] <option>=<value>

configure > role

define role access rights

role <role-id> rule [rule ...]

        rule :: acl-right cib-spec [attribute:<attribute>]

        acl-right :: read | write | deny

        cib-spec :: xpath-spec | tag-ref-spec
        xpath-spec :: xpath:<xpath> | shortcut
        tag-ref-spec :: tag:<tag> | ref:<id> | tag:<tag> ref:<id>

        shortcut :: meta:<rsc>[:<attr>]
                    params:<rsc>[:<attr>]
                    utilization:<rsc>
                    location:<rsc>
                    property[:<attr>]
                    node[:<node>]
                    nodeattr[:<attr>]
                    nodeutil[:<node>]
                    status

configure > user

define user access rights

user <uid> {roles|rules}

        roles :: role:<role-ref> [role:<role-ref> ...]
        rules :: rule [rule ...]

        (See the role command for details on rules.)

configure > op_defaults

set resource operations defaults

usage: op_defaults [$id=<set_id>] <option>=<value>

configure > show

display CIB objects

Shows the current cluster configuration.

configure > edit

edit CIB objects

This opens an editor (vim?) with the current CIB objects.

configure > filter

filter CIB objects

usage: filter <prog> [xml] [<id>...]

configure > delete

delete CIB objects

usage: delete <id> [<id>...]

configure > default-timeouts

set timeouts for operations to minimums from the meta-data

usage: default-timeouts <id> [<id>...]

configure > rename

rename a CIB object

usage: rename <old_id> <new_id>

configure > refresh

refresh from CIB

This will reload the old CIB, causing any uncommitted changes to be lost.

configure > erase

erase the CIB

This wipes out all CIB objects, leaving only the bare node definitions. If used accidentally, use refresh to restore the current CIB configuration.

configure > ptest

show cluster actions if changes were committed

INFO: install graphviz to see a transition graph

configure > cib

Same menu as cib off the root of the shell.

configure > cibstatus

Same menu as cib > cibstatus.

configure > template

edit and import a configuration from a template

configure > template > new

create a new configuration from templates

usage: new <config> <template> [<template> ...] [params name=value ...]

configure > template > load

load a configuration

configure > template > edit

edit a configuration

configure > template > delete

delete a configuration

usage: delete <config> [force]

configure > template > list

list configurations/templates

configure > template > apply

process and apply the current configuration to the current CIB

configure > template > show

show the processed configuration

configure > commit

commit the changes to the CIB

configure > verify

verify the CIB with crm_verify

configure > upgrade

upgrade the CIB to version 1.0

configure > save

save the CIB to a file

usage: save [xml] <filename>

configure > load

import the CIB from a file

usage: load [xml] {replace|update} {<url>|<path>}

configure > xml

raw xml

usage: xml <xml>

node

Nodes management

node > status

show nodes' status

  • Prints the current node status as XML.

Example:

<nodes>
  <node id="an-node02.alteeve.com" type="normal" uname="an-node02.alteeve.com"/>
  <node id="an-node01.alteeve.com" type="normal" uname="an-node01.alteeve.com"/>
</nodes>

node > show

show node

  • Prints the current node status as plain text.

Example:

an-node02.alteeve.com: normal
an-node01.alteeve.com: normal

node > standby

put node into standby

node > online

set node online

node > fence

fence node

usage: fence <node>

node > clearstate

Clear node state

usage: clearstate <node>

node > delete

delete node

usage: delete <node>

node > attribute

manage attributes

usage:
        attribute <node> set <rsc> <value>
        attribute <node> delete <rsc>
        attribute <node> show <rsc>

node > utilization

manage utilization attributes

usage:
        utilization <node> set <rsc> <value>
        utilization <node> delete <rsc>
        utilization <node> show <rsc>

node > status-attr

manage status attributes

usage:
        status-attr <node> set <rsc> <value>
        status-attr <node> delete <rsc>
        status-attr <node> show <rsc>

options

User preferences

options > skill-level

set skill level

usage: skill-level <level>
        level: operator | administrator | expert

options > user

set the cluster user

options > editor

set preferred editor program

usage: editor <program>

options > pager

set preferred pager program

usage: pager <program>

options > sort-elements

sort CIB elements

usage: sort-elements {yes|no}

options > output

set output type

usage: output <type>

options > colorscheme

set colors for output

usage: colorscheme <colors>

options > check-frequency

when to perform semantic check

usage: check-frequence <freq>

options > check-mode

how to treat semantic errors

usage: check-mode <mode>

options > show

show current user preference

Example:

editor "vim"
pager "less"
user ""
skill-level "expert"
output "color"
colorscheme "yellow,normal,cyan,red,green,magenta"
sort-elements "yes"
check-frequency "always"
check-mode "strict"

options > save

save the user preferences to the rc file

ra

Resource agents information center

ra > classes

list classes and providers

Example:

heartbeat
lsb
ocf / heartbeat linbit pacemaker redhat
stonith

ra > list

list RA for a class (and provider)

usage: list <class> [<provider>]

ra > meta

show meta data for a RA

usage: meta [<class>:[<provider>:]]<type>

ra > providers

show providers for a RA and a class

usage: providers <ra> [<class>]

status

Show cluster status

Example:

============
Last updated: Sun Jul 10 20:56:49 2011
Stack: openais
Current DC: an-node01.alteeve.com - partition WITHOUT quorum
Version: 1.1.5-5.el6-01e86afaaa6d4a8c4836f68df80ababd6ca3902f
2 Nodes configured, 2 expected votes
1 Resources configured.
============

Online: [ an-node01.alteeve.com ]
OFFLINE: [ an-node02.alteeve.com ]

quit, bye, exit

...

help

...

end, cd, up

...

 

Any questions, feedback, advice, complaints or meanderings are welcome.
Alteeve's Niche! Enterprise Support:
Alteeve Support
Community Support
© Alteeve's Niche! Inc. 1997-2024   Anvil! "Intelligent Availability®" Platform
legal stuff: All info is provided "As-Is". Do not use anything here unless you are willing and able to take responsibility for your own actions.