### 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 ```