Managing Pacemaker services keeps the cluster stable during upgrades, configuration changes, and recovery work where controlled restarts matter more than optimism. Clean service operations prevent the classic “split brain by accident” outcome where nodes disagree loudly and workloads pay the bill.
A typical stack runs corosync for membership and messaging and pacemaker for resource orchestration, both supervised by systemd. On many distributions, the pcsd daemon exposes the pcs API for remote administration, while systemctl and journalctl provide the primary control and troubleshooting surface for the underlying units.
Stopping or restarting cluster services can move resources, drop quorum, or trigger fencing depending on policy and current cluster state. Schedule service work in a maintenance window, keep console access available, and avoid impacting multiple nodes simultaneously unless a full-cluster shutdown is planned.
Related: How to create a Pacemaker cluster
Related: How to create a floating IP address in Pacemaker
| Component | Common unit name | Purpose |
|---|---|---|
| Corosync | corosync.service | Cluster messaging and membership |
| Pacemaker | pacemaker.service | Resource management |
| PCS daemon | pcsd.service | Remote management API for pcs |
| Quorum device (optional) | corosync-qdevice.service | Helps maintain quorum with a QDevice |
$ systemctl list-unit-files --type=service | grep --extended-regexp '^(pacemaker|corosync|pcsd)\.service' corosync.service enabled enabled pacemaker.service enabled enabled pcsd.service enabled enabled
$ sudo systemctl status corosync --no-pager
● corosync.service - Corosync Cluster Engine
Loaded: loaded (/usr/lib/systemd/system/corosync.service; enabled; preset: enabled)
Active: active (running) since Wed 2025-12-31 11:26:55 UTC; 1h 14min ago
Docs: man:corosync
man:corosync.conf
man:corosync_overview
##### snipped #####
$ sudo systemctl status pacemaker --no-pager
● pacemaker.service - Pacemaker High Availability Cluster Manager
Loaded: loaded (/usr/lib/systemd/system/pacemaker.service; enabled; preset: enabled)
Active: active (running) since Wed 2025-12-31 11:26:55 UTC; 1h 14min ago
Docs: man:pacemakerd
https://clusterlabs.org/pacemaker/doc/
##### snipped #####
$ sudo systemctl status pcsd --no-pager
● pcsd.service - PCS GUI and remote configuration interface
Loaded: loaded (/usr/lib/systemd/system/pcsd.service; enabled; preset: enabled)
Active: active (running) since Wed 2025-12-31 08:13:15 UTC; 4h 28min ago
Docs: man:pcsd(8)
man:pcs(8)
##### snipped #####
The pcsd.service unit is not present on every distribution.
$ sudo systemctl restart corosync
Restarting corosync can trigger membership changes and resource failover.
$ sudo systemctl restart pacemaker
Restarting pacemaker can move resources or interrupt clustered workloads.
$ sudo systemctl stop pacemaker
Use pcs node standby to drain resources before stopping pacemaker when a clean evacuation is required.
Stopping pacemaker removes the node from resource management until the service is started again.
$ sudo systemctl stop corosync
Stopping corosync breaks cluster membership for the node.
$ sudo systemctl start corosync
$ sudo systemctl start pacemaker
$ sudo systemctl restart pcsd
The pcsd.service unit is not present on every distribution.
$ sudo systemctl disable --now pacemaker corosync Synchronizing state of pacemaker.service with SysV service script with /usr/lib/systemd/systemd-sysv-install. Executing: /usr/lib/systemd/systemd-sysv-install disable pacemaker Synchronizing state of corosync.service with SysV service script with /usr/lib/systemd/systemd-sysv-install. Executing: /usr/lib/systemd/systemd-sysv-install disable corosync Removed "/etc/systemd/system/multi-user.target.wants/pacemaker.service". Removed "/etc/systemd/system/multi-user.target.wants/corosync.service".
Disabling cluster services prevents the node from joining after reboot.
$ sudo systemctl mask pacemaker corosync Created symlink /etc/systemd/system/pacemaker.service → /dev/null. Created symlink /etc/systemd/system/corosync.service → /dev/null.
Masked units cannot be started until unmasked.
$ sudo systemctl unmask pacemaker corosync Removed "/etc/systemd/system/pacemaker.service". Removed "/etc/systemd/system/corosync.service".
$ sudo systemctl enable --now corosync pacemaker Synchronizing state of corosync.service with SysV service script with /usr/lib/systemd/systemd-sysv-install. Executing: /usr/lib/systemd/systemd-sysv-install enable corosync Synchronizing state of pacemaker.service with SysV service script with /usr/lib/systemd/systemd-sysv-install. Executing: /usr/lib/systemd/systemd-sysv-install enable pacemaker Created symlink /etc/systemd/system/multi-user.target.wants/corosync.service → /usr/lib/systemd/system/corosync.service. Created symlink /etc/systemd/system/multi-user.target.wants/pacemaker.service → /usr/lib/systemd/system/pacemaker.service.
$ sudo journalctl --unit=corosync.service --no-pager --lines=50 Dec 31 11:26:55 node-01 corosync[11118]: [MAIN ] Completed service synchronization, ready to provide service. Dec 31 11:26:55 node-01 systemd[1]: Started corosync.service - Corosync Cluster Engine. Dec 31 11:26:57 node-01 corosync[11118]: [KNET ] rx: host: 3 link: 0 is up ##### snipped #####
$ sudo journalctl --unit=pacemaker.service --no-pager --lines=50 Dec 31 11:56:23 node-01 pacemaker-schedulerd[11133]: notice: Calculated transition 11, saving inputs in /var/lib/pacemaker/pengine/pe-input-13.bz2 Dec 31 11:56:23 node-01 pacemaker-controld[11134]: notice: Transition 11 (Complete=0, Pending=0, Fired=0, Skipped=0, Incomplete=0, Source=/var/lib/pacemaker/pengine/pe-input-13.bz2): Complete Dec 31 11:56:23 node-01 pacemaker-controld[11134]: notice: State transition S_TRANSITION_ENGINE -> S_IDLE ##### snipped #####
$ sudo pcs status Cluster name: clustername Cluster Summary: * Stack: corosync (Pacemaker is running) * Current DC: node-01 (version 2.1.6-6fdc9deea29) - partition with quorum ##### snipped #####