|Index|Configuring QDevice and QNetd in an Existing High Availability Cluster
SUSE Linux Enterprise High Availability 16.1

Configuring QDevice and QNetd in an Existing High Availability Cluster

Publication Date: 06 Nov 2026

QDevice and QNetd help the cluster make quorum calculations in a split-brain scenario, so the cluster can sustain more node failures than the standard quorum rules allow. We recommend using QDevice and QNetd in clusters with an even number of nodes, especially two-node clusters. QDevice and QNetd can be configured during the cluster installation or later in a running cluster. This article explains how to configure them in a cluster that is already installed and running.

Prerequisites

  • An existing SUSE Linux Enterprise High Availability cluster.

  • An additional SUSE Linux Enterprise Server to run QNetd.

  • We recommend having the cluster nodes reach the QNetd server via a different network than the one Corosync uses. Ideally, the QNetd server should be in a separate rack from the cluster, or at least on a separate PSU and not in the same network segment as the Corosync communication channels.

Important
Important: Maintenance window might be required

Configuring QDevice and QNetd in an existing cluster only takes a few minutes. In some cases, you might need to put the cluster into maintenance mode and restart the cluster services. In this scenario, DLM and DLM-dependent resources require downtime, but most other resources can continue running. However, the resources won't be highly available while the cluster is in maintenance mode.

1 What are QDevice and QNetd?

When communication fails between one or more nodes and the rest of the cluster (a split-brain scenario), a cluster partition occurs. The nodes can only communicate with other nodes in the same partition and are unaware of the separated nodes. A cluster partition has quorum (or is “quorate”) if it has the majority of nodes (or “votes”). This is determined by quorum calculation. Quorum must be calculated so the non-quorate nodes can be fenced.

QDevice and QNetd participate in quorum calculations in a split-brain scenario. QDevice runs on each cluster node and communicates with an arbitrator, QNetd, to provide a configurable number of votes to the cluster. This allows the cluster to sustain more node failures than the standard quorum rules allow. We recommend using QDevice and QNetd for clusters with an even number of nodes, and especially for two-node clusters.

1.1 Components

QDevice (corosync-qdevice)

QDevice runs together with Corosync on each cluster node. It communicates with the arbitrator QNetd to provide a configurable number of votes to help with quorum calculation.

QNetd (corosync-qnetd)

QNetd is an arbitrator that provides a vote to the QDevice service running on the cluster nodes. The QNetd server runs outside the cluster, so you cannot move cluster resources to this server. QNetd can support multiple clusters if each cluster has a unique name.

Algorithms

QDevice supports different algorithms to determine how votes are assigned. “Fifty-fifty split” is helpful for clusters with an even number of nodes. “Last man standing” is helpful for clusters where only one active node needs to remain quorate.

Heuristics

QDevice supports a set of commands (or “heuristics”) that run when the cluster services start (or restart), when the cluster membership changes, and when nodes connect to the QNetd server. Optionally, you can also configure the commands to run at regular intervals. The result is sent to QNetd to help with the quorum calculation. Heuristics can be written in any programming language.

Tiebreaker

This is used as a fallback if the cluster partitions are equal even after the heuristics results are applied. The tie-breaker vote can be configured to go to the node with the lowest node ID, the highest node ID, or a specific node ID.

1.2 Benefits

  • Clusters with an even number of nodes can make quorum calculations more easily.

  • The cluster can sustain more node failures than the standard quorum rules allow.

  • You can write your own heuristics scripts to affect votes. This is especially useful for complex setups.

  • Two-node clusters can use diskless SBD if QDevice is also configured.

  • One QNetd server can provide votes for multiple clusters.

  • QNetd can work with TLS for client certificate checking.

1.3 For more information

For more information, see the man pages corosync-qdevice and corosync-qnetd.

2 Setting up the QNetd server

QNetd is an arbitrator that provides a vote to the QDevice service running on the cluster nodes. The QNetd server runs outside the cluster, so you cannot move cluster resources to this server. QNetd can support multiple clusters if each cluster has a unique name.

By default, QNetd runs the corosync-qnetd daemon as the user coroqnetd in the group coroqnetd. This avoids running the daemon as root.

Prerequisites
  • SUSE Linux Enterprise Server is installed and registered with the SUSE Customer Center.

  • You have an additional registration code for SUSE Linux Enterprise High Availability.

  • We recommend having the cluster nodes reach the QNetd server via a different network than the one Corosync uses.

Perform this procedure on a server that is not part of the cluster:

  1. Log in either as the root user or as a user with sudo privileges.

  2. Enable the SUSE Linux Enterprise High Availability extension:

    > sudo SUSEConnect -p sle-ha/16.0/x86_64 -r HA_REGCODE
  3. Install the corosync-qnetd package:

    > sudo zypper install corosync-qnetd

    You do not need to manually start the corosync-qnetd service. It starts automatically when you configure QDevice in the cluster.

The QNetd server is ready to accept connections from a QDevice client (corosync-qdevice). Further configuration is handled by crmsh when you connect QDevice clients.

3 Connecting QDevice to the QNetd server

QDevice runs together with Corosync on each cluster node. It communicates with the arbitrator QNetd to provide a configurable number of votes to help with quorum calculation.

This procedure explains how to configure QDevice after the cluster is already installed and running, not during the initial cluster setup.

Important
Important: Cluster restart required

In this procedure, the setup script has to restart the cluster services. If any non-fence resources are running, put the cluster into maintenance mode before running the script. This allows the services managed by the resources to keep running while the cluster restarts. However, the resources won't be highly available while the cluster is in maintenance mode.

Warning
Warning: Stop DLM before putting the cluster into maintenance mode

To put the cluster into maintenance mode and then stop or restart the cluster services, you must first stop DLM and any resources that depend on it, such as GFS2 or lvmlockd. When the cluster is in maintenance mode, DLM keeps running even if the cluster services are offline. However, DLM depends on Corosync, so if Corosync stops but DLM is still running, the DLM instances on each node consider the other instances lost and request node fencing.

Prerequisites
  • An existing High Availability cluster is already running.

  • The latest corosync-qdevice package is installed on all nodes.

  • The latest corosync-qnetd package is installed on the QNetd server.

  • To connect to the QNetd server as a sudo user: The user must have passwordless sudo permission.

  • To connect to the QNetd server as the root user: Passwordless SSH authentication must be configured between the nodes and the QNetd server.

Perform this procedure on only one cluster node:

  1. Log in either as the root user or as a user with sudo privileges.

  2. Check whether any resources are running:

    > sudo crm status
  3. If DLM and any DLM-dependent resources are running, stop them first. If the resources are in a group, you can just stop the group. If the resources aren't in a group, stop the DLM-dependent resources first and then stop DLM. You can stop multiple resources at once:

    > sudo crm --wait resource stop RESOURCE1 RESOURCE2

    Use --wait to make sure the resources have really stopped before the command returns.

  4. If any non-fence resources are running, put the cluster into maintenance mode:

    > sudo crm maintenance on

    In this state, the cluster stops monitoring all resources. This allows the services managed by the resources to keep running while the cluster restarts. However, the resources won't be highly available while the cluster is in maintenance mode.

  5. Run the QDevice stage of the cluster setup script, using the option --qnetd-hostname to specify the IP address or host name of the QNetd server:

    > sudo crm cluster init qdevice --qnetd-hostname [USER@]QNETD_SERVER
    • If you include a non-root user name, a later step will prompt you for the user's password and the script will configure passwordless SSH authentication from the nodes to the QNetd server.

    • If you omit a user name, the script defaults to the root user, so passwordless SSH authentication must already be configured for the nodes to access the QNetd server.

    Additional options

    The setup script automatically uses the default values for the QDevice configuration. If you need to change any of these settings, you can use the following options:

    QNetd communication port

    The default is 5403. You can use the --qnetd-port option to specify a different port.

    Voting decision algorithm

    The default is ffsplit. You can use the --qdevice-algo option to specify a different algorithm.

    • ffsplit (fifty-fifty split): If the cluster splits into two even partitions, one of the partitions gets the vote based on the results of heuristics checks and other factors. This algorithm is helpful for clusters with an even number of nodes.

    • lms (last man standing): If only one remaining node can still communicate with the QNetd server, that node gets the vote. This algorithm is helpful for clusters where only one active node needs to remain quorate.

    Tie-breaker method

    The default is lowest. You can use the --qdevice-tie-breaker option to specify a different method.

    • lowest: The node with the lowest node ID gets the vote.

    • highest: The node with the highest node ID gets the vote.

    • Alternatively, you can set a specific node ID. The designated node always gets the vote.

    TLS for client certificate checking

    The default is on. You can use the --qdevice-tls option to specify a different setting.

    • off: TLS isn't required and shouldn't be tried.

    • on: Attempt to connect with TLS, but connect without TLS if it isn't available.

    • required: TLS is mandatory, so QDevice exits with an error if TLS isn't available.

    Heuristics commands

    You can use the --qdevice-heuristics option to specify heuristics commands to assist in quorum calculation. You can enter one command, multiple commands separated by semicolons, or the path to a script file. The commands can be written in any programming language.

    If you use heuristics commands, you must also use the --qdevice-heuristics-mode option to specify the mode of operation. The default is sync.

    • sync: QDevice runs heuristics when the cluster services start (or restart), when the cluster membership changes, and when nodes connect to the QNetd server.

    • on: QDevice runs heuristics in the same scenarios as sync and also at regular intervals.

  6. If required, the script prompts you for the password of the QNetd server, then configures passwordless SSH authentication between the cluster nodes and the QNetd server.

    The script configures QDevice on the nodes, completes the QNetd server's configuration, and restarts the cluster services.

  7. If the cluster is still in maintenance mode, put it back into normal operation:

    > sudo crm maintenance off
  8. If you stopped DLM and any DLM-dependent resources, you can start them again now. If the resources are in a group, you can just start the group. If the resources aren't in a group, start DLM first and then start the DLM-dependent resources. You can start multiple resources at once:

    > sudo crm resource start RESOURCE1 RESOURCE2

4 Checking the QDevice and QNetd setup

Use the crm corosync status command to check the cluster's quorum status and the status of QDevice and QNetd. You can run this command from any node in the cluster.

The following examples show a cluster with two nodes (alice and bob) and a QNetd server (charlie).

Example 1: Showing the cluster's quorum status
> sudo crm corosync status quorum
1 alice member
2 bob member

Quorum information
------------------
Date:             [...]
Quorum provider:  corosync_votequorum
Nodes:            2
Node ID:          2
Ring ID:          1.e
Quorate:          Yes

Votequorum information
----------------------
Expected votes:   3
Highest expected: 3
Total votes:      3
Quorum:           2
Flags:            Quorate Qdevice

Membership information
----------------------
    Nodeid      Votes    Qdevice Name
         1          1    A,V,NMW alice
         2          1    A,V,NMW bob (local)
         0          1            Qdevice

The Membership information section shows the following status codes:

A (alive) or NA (not alive)

Shows the connectivity status between QDevice and Corosync.

V (vote) or NV (non vote)

Shows if the node has a vote. V means that both nodes can communicate with each other. In a split-brain scenario, one node would be set to V and the other node would be set to NV.

MW (master wins) or NMW (not master wins)

Shows if the master_wins flag is set. By default, the flag is not set, so the status is NMW.

NR (not registered)

Shows that the cluster is not using a quorum device.

Example 2: Showing the status of QDevice
> sudo crm corosync status qdevice
1 alice member
2 bob member

Qdevice information
-------------------
Model:                  Net
Node ID:                1
HB interval:            10000ms
Sync HB interval:       30000ms
Configured node list:
    0   Node ID = 1
    1   Node ID = 2
Heuristics:             Disabled
Ring ID:                1.e
Membership node list:   1, 2
Quorate:                Yes
Quorum node list:
    0   Node ID = 2, State = member
    1   Node ID = 1, State = member
Expected votes:         3
Last poll call:         [...]

Qdevice-net information
----------------------
Cluster name:           hacluster
QNetd host:             charlie:5403
Connect timeout:        8000ms
HB interval:            8000ms
VQ vote timer interval: 5000ms
TLS:                    Supported
Algorithm:              Fifty-Fifty split
Tie-breaker:            Node with lowest node ID
KAP Tie-breaker:        Enabled
Poll timer running:     Yes (cast vote)
State:                  Connected
TLS active:             Yes (client certificate sent)
Connected since:        [...]
Echo reply received:    [...]
Example 3: Showing the status of QNetd
> sudo crm corosync status qnetd
1 alice member
2 bob member

Cluster "hacluster":
    Algorithm:          Fifty-Fifty split (KAP Tie-breaker)
    Tie-breaker:        Node with lowest node ID
    Node ID 1:
        Client address:         ::ffff:192.168.1.185:45676
        HB interval:            8000ms
        Configured node list:   1, 2
        Ring ID:                1.e
        Membership node list:   1, 2
        Heuristics:             Undefined (membership: Undefined, regular: Undefined)
        TLS active:             Yes (client certificate verified)
        Vote:                   ACK (ACK)
    Node ID 2:
        Client address:         ::ffff:192.168.1.168:55034
        HB interval:            8000ms
        Configured node list:   1, 2
        Ring ID:                1.e
        Membership node list:   1, 2
        Heuristics:             Undefined (membership: Undefined, regular: Undefined)
        TLS active:             Yes (client certificate verified)
        Vote:                   No change (ACK)

5 Changing the QDevice or QNetd configuration

Use this procedure to change the configuration of QDevice or QNetd (for example, to change the tie-breaker method from lowest to highest).

Important
Important: Cluster restart required

In this procedure, you must stop the cluster services. If any non-fence resources are running, put the cluster into maintenance mode first. This allows the services managed by the resources to keep running even when you stop the cluster services. However, the resources won't be highly available while the cluster is in maintenance mode.

Warning
Warning: Stop DLM before putting the cluster into maintenance mode

To put the cluster into maintenance mode and then stop or restart the cluster services, you must first stop DLM and any resources that depend on it, such as GFS2 or lvmlockd. When the cluster is in maintenance mode, DLM keeps running even if the cluster services are offline. However, DLM depends on Corosync, so if Corosync stops but DLM is still running, the DLM instances on each node consider the other instances lost and request node fencing.

Perform this procedure on only one cluster node:

  1. Log in either as the root user or as a user with sudo privileges.

  2. Check whether any resources are running:

    > sudo crm status
  3. If DLM and any DLM-dependent resources are running, stop them first. If the resources are in a group, you can just stop the group. If the resources aren't in a group, stop the DLM-dependent resources first and then stop DLM. You can stop multiple resources at once:

    > sudo crm --wait resource stop RESOURCE1 RESOURCE2

    Use --wait to make sure the resources have really stopped before the command returns.

  4. If any non-fence resources are running, put the cluster into maintenance mode:

    > sudo crm maintenance on

    In this state, the cluster stops monitoring all resources. This allows the services managed by the resources to keep running even when you stop the cluster services. However, the resources won't be highly available while the cluster is in maintenance mode.

  5. Stop the cluster services on all nodes:

    > sudo crm cluster stop --all
  6. Open the Corosync configuration file:

    > sudo crm corosync edit
  7. Change the required setting in the quorum section, then save and close the file.

  8. Copy the new configuration to all nodes:

    > sudo crm corosync push
  9. Start the cluster service on all nodes:

    > sudo crm cluster start --all
  10. Check the status of the cluster:

    > sudo crm status

    The nodes will have the status UNCLEAN (offline), but will soon change to Online.

  11. When the nodes are back online, put the cluster back into normal operation:

    > sudo crm maintenance off
  12. If you stopped DLM and any DLM-dependent resources, you can start them again now. If the resources are in a group, you can just start the group. If the resources aren't in a group, start DLM first and then start the DLM-dependent resources. You can start multiple resources at once:

    > sudo crm resource start RESOURCE1 RESOURCE2
  13. Verify that the change was successful:

    > sudo crm corosync status qnetd