### Order Resources in Pacemaker
Source: https://github.com/clusterlabs/pacemaker/blob/main/doc/sphinx/Clusters_from_Scratch/apache.rst
Defines the order in which resources should start. This example ensures 'ClusterIP' starts before 'WebSite'. The default action is 'start'.
```console
[root@pcmk-1 ~]# pcs constraint order ClusterIP then WebSite
Adding ClusterIP WebSite (kind: Mandatory) (Options: first-action=start then-action=start)
[root@pcmk-1 ~]# pcs constraint
Location Constraints:
Ordering Constraints:
start ClusterIP then start WebSite (kind:Mandatory)
Colocation Constraints:
WebSite with ClusterIP (score:INFINITY)
Ticket Constraints:
```
--------------------------------
### Displaying Metadata for Dummy Resource Agent
Source: https://github.com/clusterlabs/pacemaker/blob/main/doc/sphinx/Pacemaker_Explained/resources.rst
Example command to display the metadata for the Dummy OCF resource agent, including environment variable setup.
```none
# export OCF_ROOT=/usr/lib/ocf
# $OCF_ROOT/resource.d/pacemaker/Dummy meta-data
```
--------------------------------
### Example Installed Fencing Agents Output
Source: https://github.com/clusterlabs/pacemaker/blob/main/doc/sphinx/Pacemaker_Explained/fencing.rst
This is an example of the output you might see when listing installed fencing agents. The actual list may vary depending on your system's installed packages.
```none
# stonith_admin --list-installed
(... some output omitted ...)
fence_idrac
fence_ilo3
fence_ilo4
fence_ilo5
fence_imm
fence_ipmilan
(... some output omitted ...)
```
--------------------------------
### Install Pacemaker and PCS
Source: https://github.com/clusterlabs/pacemaker/blob/main/doc/sphinx/Clusters_from_Scratch/cluster-setup.rst
Install essential cluster management packages on both nodes.
```console
# dnf install -y pacemaker pcs psmisc policycoreutils-python3
```
--------------------------------
### Example Full cts-lab Command
Source: https://github.com/clusterlabs/pacemaker/blob/main/cts/README.md
A comprehensive example command line demonstrating the integration of various options for running the Pacemaker CTS lab.
```bash
/usr/share/pacemaker/tests/cts-lab --nodes "pcmk-1 pcmk-2 pcmk-3" \
--outputfile ~/cts.log --clobber-cib --populate-resources \
--test-ip-base 192.168.9.100 --fencing-agent fence_xvm 50
```
--------------------------------
### Setting Pacemaker Notification Variables
Source: https://github.com/clusterlabs/pacemaker/blob/main/doc/sphinx/Pacemaker_Administration/agents.rst
Example demonstrating how to set environment variables for resource start notifications. These variables specify which resources are to be started and on which nodes.
```none
OCF_RESKEY_CRM_meta_notify_start_resource="clone:0 clone:2 clone:3"
OCF_RESKEY_CRM_meta_notify_start_uname="sles-1 sles-3 sles-2"
```
--------------------------------
### CIB Credentials File Example
Source: https://github.com/clusterlabs/pacemaker/blob/main/doc/sphinx/Pacemaker_Administration/configuring.rst
Example content for a CIB credentials file, typically used for PSK authentication. The file should contain a single key and be readable only by the local user.
```none
# cat ~/cib-credentials
c496618a37acb82672d968de46fb6865eca340409ae5b2620e7d2320c6059a7f
```
--------------------------------
### Resource Ordering Constraint Example
Source: https://github.com/clusterlabs/pacemaker/blob/main/doc/sphinx/Pacemaker_Explained/constraints.rst
This XML snippet defines an ordering constraint. It specifies that the 'Database' resource must start after the 'Webserver' resource has successfully started. This ensures a specific startup sequence for dependent services.
```xml
```
--------------------------------
### Start and Enable PCS Daemon
Source: https://github.com/clusterlabs/pacemaker/blob/main/doc/sphinx/Clusters_from_Scratch/cluster-setup.rst
Ensure the 'pcs' daemon is running and enabled to start on boot on each node.
```console
# systemctl start pcsd.service
# systemctl enable pcsd.service
Created symlink from /etc/systemd/system/multi-user.target.wants/pcsd.service to /usr/lib/systemd/system/pcsd.service.
```
--------------------------------
### Install Apache and wget, Configure Firewall
Source: https://github.com/clusterlabs/pacemaker/blob/main/doc/sphinx/Clusters_from_Scratch/apache.rst
Installs Apache (httpd) and wget on both nodes. Configures the firewall to allow HTTP traffic and reloads the firewall rules. Do not enable the httpd service as Pacemaker will manage it.
```console
# dnf install -y httpd wget
# firewall-cmd --permanent --add-service=http
# firewall-cmd --reload
```
--------------------------------
### Simple Pacemaker Installation
Source: https://github.com/clusterlabs/pacemaker/blob/main/INSTALL.md
Installs Pacemaker using GNU make. Ensure GNU make is your default or use 'gmake'.
```bash
make && sudo make install
```
--------------------------------
### Setup Corosync Configuration
Source: https://github.com/clusterlabs/pacemaker/blob/main/doc/sphinx/Clusters_from_Scratch/cluster-setup.rst
Run 'pcs cluster setup' to generate and synchronize the Corosync configuration across cluster nodes. This command initializes the cluster with the specified nodes.
```console
[root@pcmk-1 ~]# pcs cluster setup mycluster pcmk-1 pcmk-2
No addresses specified for host 'pcmk-1', using 'pcmk-1'
No addresses specified for host 'pcmk-2', using 'pcmk-2'
Destroying cluster on hosts: 'pcmk-1', 'pcmk-2'...
pcmk-2: Successfully destroyed cluster
pcmk-1: Successfully destroyed cluster
Requesting remove 'pcsd settings' from 'pcmk-1', 'pcmk-2'
pcmk-1: successful removal of the file 'pcsd settings'
pcmk-2: successful removal of the file 'pcsd settings'
Sending 'corosync authkey', 'pacemaker authkey' to 'pcmk-1', 'pcmk-2'
pcmk-1: successful distribution of the file 'corosync authkey'
pcmk-1: successful distribution of the file 'pacemaker authkey'
pcmk-2: successful distribution of the file 'corosync authkey'
pcmk-2: successful distribution of the file 'pacemaker authkey'
Sending 'corosync.conf' to 'pcmk-1', 'pcmk-2'
pcmk-1: successful distribution of the file 'corosync.conf'
pcmk-2: successful distribution of the file 'corosync.conf'
Cluster has been successfully set up.
```
--------------------------------
### Start a Cluster Resource
Source: https://github.com/clusterlabs/pacemaker/blob/main/doc/sphinx/Pacemaker_Administration/pcs-crmsh.rst
Starts a specified cluster resource, bringing it online. Use this to manually initiate a resource's operation.
```none
crmsh # crm resource start ClusterIP
pcs # pcs resource enable ClusterIP
pacemaker # crm_resource -r ClusterIP --set-parameter target-role --meta -v Started
```
--------------------------------
### Quorum Calculation Example
Source: https://github.com/clusterlabs/pacemaker/blob/main/doc/sphinx/Clusters_from_Scratch/active-passive.rst
Illustrates the quorum inequality for cluster partitions. This example shows how quorum is maintained in a 5-node cluster split.
```console
total_nodes < 2 * active_nodes
```
--------------------------------
### Running Pacemaker with ASAN Options
Source: https://github.com/clusterlabs/pacemaker/blob/main/doc/sphinx/Pacemaker_Development/helpers.rst
Example of how to run crm_mon with AddressSanitizer (ASAN) options enabled for debugging. This requires ASAN to be configured and installed.
```none
$ ASAN_OPTIONS=verbosity=1:replace_str=true crm_mon -1R
```
--------------------------------
### Listing All Schema Versions
Source: https://github.com/clusterlabs/pacemaker/blob/main/xml/README.md
Run this command to list all available schema versions and get usage information.
```bash
make -C xml schemas
```
--------------------------------
### Import ELRepo GPG Key and Install Repository
Source: https://github.com/clusterlabs/pacemaker/blob/main/doc/sphinx/Clusters_from_Scratch/shared-storage.rst
Import the ELRepo package signing key and enable the repository on both nodes. This is a prerequisite for installing DRBD utilities.
```console
[root@pcmk-1 ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
[root@pcmk-1 ~]# dnf install -y https://www.elrepo.org/elrepo-release-9.el9.elrepo.noarch.rpm
```
--------------------------------
### Example output for cluster-delay query
Source: https://github.com/clusterlabs/pacemaker/blob/main/doc/sphinx/Pacemaker_Administration/configuring.rst
This shows the typical output when querying for an existing cluster option like 'cluster-delay'.
```bash
# crm_attribute -G -n cluster-delay
scope=crm_config name=cluster-delay value=60s
```
--------------------------------
### Start Cluster Services on All Nodes
Source: https://github.com/clusterlabs/pacemaker/blob/main/doc/sphinx/Clusters_from_Scratch/verification.rst
Use this command to start both Corosync and Pacemaker services on all nodes in the cluster simultaneously. Ensure Corosync is already configured.
```console
[root@pcmk-1 ~]# pcs cluster start --all
pcmk-1: Starting Cluster...
pcmk-2: Starting Cluster...
```
--------------------------------
### Failed Test Suite Summary Example
Source: https://github.com/clusterlabs/pacemaker/blob/main/doc/sphinx/Pacemaker_Development/helpers.rst
Example output showing a test suite with failures and errors. The process stops at the first failure, and the summary indicates the number of tests that passed, failed, or errored.
```none
PASS: pcmk__scan_double_test 3 - trailing_chars
FAIL: pcmk__scan_double_test 4 - typical_case
PASS: pcmk__scan_double_test 5 - double_overflow
PASS: pcmk__scan_double_test 6 - double_underflow
ERROR: pcmk__scan_double_test - exited with status 1
PASS: pcmk__starts_with_test 1 - bad_input
============================================================================
Testsuite summary for pacemaker 2.1.0
============================================================================
# TOTAL: 56
# PASS: 54
# SKIP: 0
# XFAIL: 0
# FAIL: 1
# XPASS: 0
# ERROR: 1
============================================================================
See lib/common/tests/strings/test-suite.log
Please report to users@clusterlabs.org
```
--------------------------------
### Install DLM and GFS2 Utilities
Source: https://github.com/clusterlabs/pacemaker/blob/main/doc/sphinx/Clusters_from_Scratch/active-active.rst
Installs the necessary packages for Distributed Lock Manager (DLM) and GFS2 filesystem utilities on both nodes. Ensure the 'resilientstorage' repository is enabled.
```console
# dnf config-manager --set-enabled resilientstorage
# dnf install -y dlm gfs2-utils
```
--------------------------------
### Option Precedence Example
Source: https://github.com/clusterlabs/pacemaker/blob/main/doc/sphinx/Pacemaker_Explained/cluster-options.rst
Illustrates option precedence within Pacemaker configurations, showing how scores and order of appearance determine which values are applied. This example highlights that the first encountered value for an option is used.
```xml
```
--------------------------------
### Show Configuration of Fencing Resources
Source: https://github.com/clusterlabs/pacemaker/blob/main/doc/sphinx/Pacemaker_Administration/pcs-crmsh.rst
Displays the configuration of fencing resources (STONITH devices). Essential for verifying fencing setup.
```none
crmsh # crm resource status
pcs-0.9 # pcs stonith show --full
pcs-0.10 # pcs stonith config
```
--------------------------------
### Running include-what-you-use Tool
Source: https://github.com/clusterlabs/pacemaker/blob/main/doc/sphinx/Pacemaker_Development/c.rst
Command to run the include-what-you-use tool to analyze and report on header dependencies.
```none
$ cd daemons/attrd
$ make -k CC=include-what-you-use CFLAGS="-I /usr/lib/clang/20/include -Xiwyu --error_always" attrd_messages.o
```
--------------------------------
### Simple Monitor Operation History Entry
Source: https://github.com/clusterlabs/pacemaker/blob/main/doc/sphinx/Pacemaker_Explained/status.rst
Example of a history entry for a monitor operation on the 'apcfencing' resource. This entry shows the state of a resource probe when a node starts.
```xml
```
--------------------------------
### Create and Configure Pre-Shared Key for Remote Access
Source: https://github.com/clusterlabs/pacemaker/blob/main/doc/sphinx/Pacemaker_Administration/configuring.rst
Use 'psktool' to generate a pre-shared key for a user and store it in the 'cib-credentials' file. Ensure correct ownership and permissions for the key file.
```none
# psktool -u hacluster -p /etc/pacemaker/cib-credentials
Generating a random key for user 'hacluster'
Key stored to cib-credentials
# cat /etc/pacemaker/cib-credentials
hacluster:c496618a37acb82672d968de46fb6865eca340409ae5b2620e7d2320c6059a7f
# chown hacluster:haclient /etc/pacemaker/cib-credentials
# chmod 600 /etc/pacemaker/cib-credentials
```
--------------------------------
### XML Ordering with Promotable Clone Resource Sets
Source: https://github.com/clusterlabs/pacemaker/blob/main/doc/sphinx/Pacemaker_Explained/collective.rst
Demonstrates ordering constraints involving resource sets with promotable clone resources. This defines the sequence of actions (promote, start) for resources within the sets.
```xml
```
--------------------------------
### Example HealthIOWait Resource Configuration
Source: https://github.com/clusterlabs/pacemaker/blob/main/doc/sphinx/Pacemaker_Explained/nodes.rst
This XML snippet shows how to configure the HealthIOWait resource agent as a cloned resource. It includes instance attributes for red and yellow limits and defines monitor, start, and stop operations.
```xml
```
--------------------------------
### Start Cluster Service on Current Node
Source: https://github.com/clusterlabs/pacemaker/blob/main/doc/sphinx/Clusters_from_Scratch/verification.rst
This command starts the Corosync cluster service on the node where it is executed. It's an alternative to starting all nodes at once.
```console
# pcs cluster start
Starting Cluster...
```
--------------------------------
### Configure Non-Default Start Timeout for OCF Resource
Source: https://github.com/clusterlabs/pacemaker/blob/main/doc/sphinx/Pacemaker_Explained/operations.rst
This XML snippet shows how to configure a specific start timeout for an OCF resource. It overrides the default timeout for the 'start' operation.
```xml
```
--------------------------------
### Bundle for a Containerized Web Server (Podman)
Source: https://github.com/clusterlabs/pacemaker/blob/main/doc/sphinx/Pacemaker_Explained/collective.rst
Configure a bundle for a containerized web server using Podman. This example specifies image, replicas, network configuration with port mapping, and storage mappings for logs and data.
```xml
```
--------------------------------
### Sample Corosync Configuration
Source: https://github.com/clusterlabs/pacemaker/blob/main/doc/sphinx/Clusters_from_Scratch/ap-corosync-conf.rst
This is a sample corosync.conf file for a two-node cluster. It includes totem, nodelist, quorum, and logging configurations.
```none
totem {
version: 2
cluster_name: mycluster
transport: knet
crypto_cipher: aes256
crypto_hash: sha256
cluster_uuid: e592f61f916943978bdf7c046a195980
}
nodelist {
node {
ring0_addr: pcmk-1
name: pcmk-1
nodeid: 1
}
node {
ring0_addr: pcmk-2
name: pcmk-2
nodeid: 2
}
}
quorum {
provider: corosync_votequorum
two_node: 1
}
logging {
to_logfile: yes
logfile: /var/log/cluster/corosync.log
to_syslog: yes
timestamp: on
}
```
--------------------------------
### OCF Resource with Start and Monitor Operations
Source: https://github.com/clusterlabs/pacemaker/blob/main/doc/sphinx/Pacemaker_Explained/operations.rst
Defines an OCF IPaddr resource with explicit start and monitor operations. The start operation has a timeout of 60 seconds, and the monitor operation, intended for health checks, also has a 60-second interval.
```xml
```
--------------------------------
### Create Fencing Resource Configuration
Source: https://github.com/clusterlabs/pacemaker/blob/main/doc/sphinx/Pacemaker_Explained/fencing.rst
Create an XML file defining a primitive resource for your fence device. Ensure the class is 'stonith' and the type matches the agent name. Include parameters obtained from the metadata step.
```bash
# cibadmin --create --scope resources --xml-file fencing.xml
```
--------------------------------
### Verify LSB Service Start
Source: https://github.com/clusterlabs/pacemaker/blob/main/doc/sphinx/Pacemaker_Administration/agents.rst
Execute this command to check if an LSB-compliant service starts correctly and returns a success code.
```none
# /etc/init.d/some_service start ; echo "result: $?"
```
--------------------------------
### Import BuildOptions from Pacemaker
Source: https://github.com/clusterlabs/pacemaker/blob/main/doc/sphinx/Pacemaker_Python_API/pacemaker.rst
Demonstrates the correct way to import the BuildOptions class from the pacemaker module.
```python
from pacemaker import BuildOptions
```
--------------------------------
### Install DRBD Kernel Module and Utilities
Source: https://github.com/clusterlabs/pacemaker/blob/main/doc/sphinx/Clusters_from_Scratch/shared-storage.rst
Install the necessary DRBD kernel module and user-space utilities after enabling the ELRepo repository.
```console
# dnf install -y kmod-drbd9x drbd9x-utils
```
--------------------------------
### Example CIB XML attributes
Source: https://github.com/clusterlabs/pacemaker/blob/main/doc/sphinx/Pacemaker_Administration/configuring.rst
This snippet shows an example of the XML attributes that might be set for a 'cib' element in Pacemaker's configuration.
```xml
```
--------------------------------
### Mount, Populate, and Unmount Filesystem
Source: https://github.com/clusterlabs/pacemaker/blob/main/doc/sphinx/Clusters_from_Scratch/active-active.rst
Mounts the DRBD device, populates it with an index.html file, sets SELinux context, and then unmounts the device. This prepares the filesystem for cluster use.
```console
[root@pcmk-1 ~]# mount /dev/drbd1 /mnt
[root@pcmk-1 ~]# cat <<-END >/mnt/index.html
My Test Site - GFS2
END
[root@pcmk-1 ~]# chcon -R --reference=/var/www/html /mnt
[root@pcmk-1 ~]# umount /dev/drbd1
[root@pcmk-1 ~]# drbdadm verify wwwdata
```
--------------------------------
### Configure Apache Service Dependencies
Source: https://github.com/clusterlabs/pacemaker/blob/main/doc/sphinx/Clusters_from_Scratch/shared-storage.rst
Sets up colocation and ordering constraints to ensure the 'WebSite' (Apache) service runs on the same node as 'WebFS' and starts after 'WebFS' is active.
```console
[root@pcmk-1 ~]# pcs -f fs_cfg constraint colocation add WebSite with WebFS
[root@pcmk-1 ~]# pcs -f fs_cfg constraint order WebFS then WebSite
Adding WebFS WebSite (kind: Mandatory) (Options: first-action=start then-action=start)
```
--------------------------------
### Start Corosync and Pacemaker Services Manually
Source: https://github.com/clusterlabs/pacemaker/blob/main/doc/sphinx/Clusters_from_Scratch/verification.rst
Manually start the Corosync and Pacemaker services using systemctl. This is an alternative to pcs commands and can be run on each node individually.
```console
# systemctl start corosync.service
# systemctl start pacemaker.service
```
--------------------------------
### Install CTS Helpers
Source: https://github.com/clusterlabs/pacemaker/blob/main/cts/README.md
Installs necessary helper scripts for component regression tests and the CTS lab. These helpers are required for certain tests to function correctly.
```bash
/usr/libexec/pacemaker/cts-support install
```
--------------------------------
### Reading CIB Configuration with Environment Variables
Source: https://github.com/clusterlabs/pacemaker/blob/main/doc/sphinx/Pacemaker_Administration/configuring.rst
Demonstrates how to set environment variables to connect to a remote Pacemaker CIB and read its configuration using cibadmin. This example assumes PSK authentication is enabled and requires a credentials file.
```bash
# export CIB_server=node1; export CIB_port=1234; export CIB_encrypted=true
# export CIB_key_file=~/cib-credentials
# cibadmin -Q
```
--------------------------------
### Create DRBD Metadata
Source: https://github.com/clusterlabs/pacemaker/blob/main/doc/sphinx/Clusters_from_Scratch/shared-storage.rst
Run this command on one node to create the local metadata for the DRBD resource. This initializes the activity log and bitmap.
```console
[root@pcmk-1 ~]# drbdadm create-md wwwdata
initializing activity log
initializing bitmap (16 KB) to all zero
Writing meta data...
New drbd meta data block successfully created.
success
```
--------------------------------
### View Pacemaker Features and Version
Source: https://github.com/clusterlabs/pacemaker/blob/main/doc/sphinx/Clusters_from_Scratch/cluster-setup.rst
Displays the installed Pacemaker version and a list of supported cluster stack features. This command is useful for verifying the Pacemaker installation and its capabilities.
```console
[root@pcmk-1 ~]# pacemakerd --features
Pacemaker 2.1.2-4.el9 (Build: ada5c3b36e2)
Supporting v3.13.0: agent-manpages cibsecrets corosync-ge-2 default-resource-stickiness default-sbd-sync generated-manpages monotonic nagios ncurses remote systemd
```
--------------------------------
### Pacemaker String Comparison Test Example
Source: https://github.com/clusterlabs/pacemaker/blob/main/doc/sphinx/Pacemaker_Development/helpers.rst
An example of a test function demonstrating the use of pcmk__strcmp for regular expression matching. It includes assertions for various comparison scenarios.
```c
static void
regex(void **state) {
const char *s1 = "abcd";
const char *s2 = "ABCD";
assert_true(pcmk__strcmp(NULL, "a..d", pcmk__str_regex) < 0);
assert_true(pcmk__strcmp(s1, NULL, pcmk__str_regex) > 0);
assert_int_equal(pcmk__strcmp(s1, "a..d", pcmk__str_regex), 0);
}
```
--------------------------------
### Load Configuration and Enable Resource
Source: https://github.com/clusterlabs/pacemaker/blob/main/doc/sphinx/Clusters_from_Scratch/active-active.rst
Push the updated configuration to the cluster and re-enable the 'WebFS' resource. This applies all changes and ensures the filesystem resource is active.
```console
[root@pcmk-1 ~]# pcs cluster cib-push active_cfg --config
CIB updated
[root@pcmk-1 ~]# pcs resource enable WebFS
```
--------------------------------
### Force Node Start State
Source: https://github.com/clusterlabs/pacemaker/blob/main/doc/sphinx/Pacemaker_Explained/local-options.rst
Control the initial state of a node when Pacemaker starts using PCMK_node_start_state. It can force the node to join as 'standby' or 'online', overriding the default behavior.
```shell
PCMK_node_start_state="standby"
```
--------------------------------
### Mount and Prepare DRBD Filesystem
Source: https://github.com/clusterlabs/pacemaker/blob/main/doc/sphinx/Clusters_from_Scratch/shared-storage.rst
Mounts a DRBD device, populates it with web content, applies SELinux policies, and unmounts it. This prepares the shared storage before cluster integration.
```console
[root@pcmk-1 ~]# mount /dev/drbd1 /mnt
[root@pcmk-1 ~]# cat <<-END >/mnt/index.html
My Test Site - DRBD
END
[root@pcmk-1 ~]# chcon -R --reference=/var/www/html /mnt
[root@pcmk-1 ~]# umount /dev/drbd1
```
--------------------------------
### Example Transient Node Attributes
Source: https://github.com/clusterlabs/pacemaker/blob/main/doc/sphinx/Pacemaker_Explained/status.rst
An example of the 'transient_attributes' section for a node, illustrating how Pacemaker stores dynamic state information such as ping status and failure counts. This data is not persistent.
```xml
```
--------------------------------
### Referencing Attributes, Options, and Operations
Source: https://github.com/clusterlabs/pacemaker/blob/main/doc/sphinx/Pacemaker_Explained/reusing-configuration.rst
Demonstrates how to reference instance attributes, meta attributes, and operations from other resources using 'id-ref'. This promotes configuration reuse and reduces redundancy.
```xml
```
--------------------------------
### Ordered Sets of Unordered Resources
Source: https://github.com/clusterlabs/pacemaker/blob/main/doc/sphinx/Pacemaker_Explained/constraints.rst
Orders two sets of resources: {A, B} can start in parallel, followed by {C, D} which can also start in parallel. This demonstrates ordering between unordered resource sets.
```xml
```
--------------------------------
### Show Configuration of All Resources
Source: https://github.com/clusterlabs/pacemaker/blob/main/doc/sphinx/Pacemaker_Administration/pcs-crmsh.rst
Displays the configuration details for all resources in the cluster. Use this for a comprehensive overview of resource settings.
```none
crmsh # crm configure show
pcs-0.9 # pcs resource show --full
pcs-0.10 # pcs resource config
```
--------------------------------
### List Installed Fencing Agents
Source: https://github.com/clusterlabs/pacemaker/blob/main/doc/sphinx/Pacemaker_Explained/fencing.rst
Use this command to discover available fence agent drivers on your system. You may need to install additional packages to make specific agents available.
```bash
# stonith_admin --list-installed
```
--------------------------------
### Load DRBD Module and Bring Resource Up
Source: https://github.com/clusterlabs/pacemaker/blob/main/doc/sphinx/Clusters_from_Scratch/shared-storage.rst
Ensures the DRBD kernel module is loaded and brings the DRBD resource online. Run these commands on one node.
```console
[root@pcmk-1 ~]# modprobe drbd
[root@pcmk-1 ~]# drbdadm up wwwdata
```