In reference to the docs [1] the flag "NR" on pve2 indicates that the Qdevice is not registered with this node and such it only has two votes instead of three.
In this case the cluster would still fail if pve3 fails, since pve2 seems to be unable to communicate with the Qdevice.
How did you install and configure the Qdevice?
Were there any error messages during the install?
I got no error messages and i am pretty sure i did the " pvecm qdevice setup <QDEVICE-IP>" on node pve2.
The network 192.168.2.0/24 is a separate 1GB network where only the 2 PVE nodes and the qdevice are connected.
Ping from each node to qdevice and vice versa works. Ping latency is below 0.25ms.
Anything i can do to repair this? Can i safely issue the setup command again?
Edit: 1 day after seting this up i simulated an outage and removed power from one of the nodes. HA did work and start the machines of the failed node. But i do not remember which node i shut down.
Then uninstalled all corosync packages with purge on the qdevice.
Re-installed those packages and did another setup (this time from node pve3). Got no error message. Status is now the same on both nodes:
Code:
pve2:~# pvecm status
Cluster information
-------------------
Name: PVE-CLUSTER
Config Version: 7
Transport: knet
Secure auth: on
Quorum information
------------------
Date: Tue Jun 2 11:58:52 2026
Quorum provider: corosync_votequorum
Nodes: 2
Node ID: 0x00000001
Ring ID: 1.39
Quorate: Yes
Votequorum information
----------------------
Expected votes: 3
Highest expected: 3
Total votes: 2
Quorum: 2
Flags: Quorate Qdevice
Membership information
----------------------
Nodeid Votes Qdevice Name
0x00000001 1 A,NV,NMW 192.168.2.2 (local)
0x00000002 1 A,NV,NMW 192.168.2.3
0x00000000 0 Qdevice (votes 1)
------------------------------------------------------
pve3:~# pvecm status
Cluster information
-------------------
Name: PVE-CLUSTER
Config Version: 7
Transport: knet
Secure auth: on
Quorum information
------------------
Date: Tue Jun 2 12:41:11 2026
Quorum provider: corosync_votequorum
Nodes: 2
Node ID: 0x00000002
Ring ID: 1.39
Quorate: Yes
Votequorum information
----------------------
Expected votes: 3
Highest expected: 3
Total votes: 2
Quorum: 2
Flags: Quorate Qdevice
Membership information
----------------------
Nodeid Votes Qdevice Name
0x00000001 1 A,NV,NMW 192.168.2.2
0x00000002 1 A,NV,NMW 192.168.2.3 (local)
0x00000000 0 Qdevice (votes 1)
So: i do not know why this issue occured, but it looks better ( to me) now.
Edit: Only thing that confuses me a bit is the expected votes is 3 but the total votes are only 2.
looks pretty much the same to me.
Well, journalctl says there is a problem with some certificate:
Code:
Jun 02 13:17:56 cdppve2 corosync-qdevice[1986900]: Server certificate verification failure. (-8182): Peer's certificate has an invalid signature.
Jun 02 13:18:38 cdppve3 corosync-qdevice[1941324]: Server certificate verification failure. (-8182): Peer's certificate has an invalid signature.
Both nodes have certificates from our internal CA installed. This was done after creatiing the cluster, as certificates are lost during cluster creation. Those certificates contain all dns names but only the management IP as alternate names.
The qdevice did not get any certificate from us, so i assume it is using a self signed one.
Edit: `pvecm updatecerts --force` did not change anything
reading a few more threads to crosync with qdevice and removing/setting it up some more times, it is still not voting.
collected some more information. so on the pve nodes i have the follwing packages installed:
Code:
pve3:~# dpkg -l | grep corosy
ii corosync 3.1.10-pve2 amd64 cluster engine daemon and utilities
ii corosync-qdevice 3.0.3-2 amd64 cluster engine quorum device daemon
ii libcorosync-common4:amd64 3.1.10-pve2 amd64 cluster engine common library
on the qdevice:
Code:
pveq:~# dpkg -l | grep corosy
ii corosync 3.1.6-1ubuntu1.2 amd64 cluster engine daemon and utilities
ii corosync-qnetd 3.0.1-1 amd64 cluster engine quorum device network daemon
ii libcorosync-common4:amd64 3.1.6-1ubuntu1.2 amd64 cluster engine common library
output of the pvecm qdevice setup does not contain any warning, error or failure.
Status of qdevice service (on both nodes):
Code:
pve3:~# systemctl status corosync-qdevice.service
● corosync-qdevice.service - Corosync Qdevice daemon
Loaded: loaded (/usr/lib/systemd/system/corosync-qdevice.service; enabled; preset: enabled)
Active: active (running) since Tue 2026-06-02 13:53:44 CEST; 7min ago
Invocation: f2f00a9bd87749ba88fbaba48f849c90
Docs: man:corosync-qdevice
Main PID: 1994592 (corosync-qdevic)
Tasks: 2 (limit: 34840)
Memory: 2.8M (peak: 3.1M)
CPU: 82ms
CGroup: /system.slice/corosync-qdevice.service
├─1994592 /usr/sbin/corosync-qdevice -f
└─1994594 /usr/sbin/corosync-qdevice -f
Jun 02 14:00:24 cdppve3 corosync-qdevice[1994592]: Connect timeout
Jun 02 14:00:24 cdppve3 corosync-qdevice[1994592]: Can't connect to qnetd host. (-5986): Network addres>
Jun 02 14:00:32 cdppve3 corosync-qdevice[1994592]: Connect timeout
Jun 02 14:00:32 cdppve3 corosync-qdevice[1994592]: Can't connect to qnetd host. (-5986): Network addres>
ssh from both pve nodes to qdevice is working (without password).
ping from/to qdevice and pve is working.
qdevice is an ubuntu 22.04 LTS on a normal PC hardware. running nothing more than caorosync-qdevice.
It is connected to the corosync network (192.168.2.0/24) and the management network (172.16.0.0/16).
pve3:~# pvecm qdevice setup 192.168.2.10
/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/bin/ssh-copy-id: WARNING: All keys were skipped because they already exist on the remote system.
(if you think this is a mistake, you may want to use -f option)
INFO: initializing qnetd server
Certificate database (/etc/corosync/qnetd/nssdb) already exists. Delete it to initialize new db
INFO: copying CA cert and initializing on all nodes
node 'pve2': Creating /etc/corosync/qdevice/net/nssdb
password file contains no data
node 'pve2': Creating new key and cert db
node 'pve2': Creating new noise file /etc/corosync/qdevice/net/nssdb/noise.txt
node 'pve2': Importing CA
node 'pve3': Creating /etc/corosync/qdevice/net/nssdb
password file contains no data
node 'pve3': Creating new key and cert db
node 'pve3': Creating new noise file /etc/corosync/qdevice/net/nssdb/noise.txt
node 'pve3': Importing CA
INFO: generating cert request
Creating new certificate request
Generating key. This may take a few moments...
Certificate request stored in /etc/corosync/qdevice/net/nssdb/qdevice-net-node.crq
INFO: copying exported cert request to qnetd server
INFO: sign and export cluster cert
Signing cluster certificate
Certificate stored in /etc/corosync/qnetd/nssdb/cluster-PVE-CLUSTER.crt
INFO: copy exported CRT
INFO: import certificate
Importing signed cluster certificate
Notice: Trust flag u is set automatically if the private key is present.
pk12util: PKCS12 EXPORT SUCCESSFUL
Certificate stored in /etc/corosync/qdevice/net/nssdb/qdevice-net-node.p12
INFO: copy and import pk12 cert to all nodes
node 'pve2': Importing cluster certificate and key
node 'pve2': pk12util: PKCS12 IMPORT SUCCESSFUL
node 'pve3': Importing cluster certificate and key
node 'pve3': pk12util: PKCS12 IMPORT SUCCESSFUL
INFO: add QDevice to cluster configuration
INFO: start and enable corosync qdevice daemon on node 'pve2'...
Synchronizing state of corosync-qdevice.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install enable corosync-qdevice
Created symlink '/etc/systemd/system/multi-user.target.wants/corosync-qdevice.service' -> '/usr/lib/systemd/system/corosync-qdevice.service'.
INFO: start and enable corosync qdevice daemon on node 'pve3'...
Synchronizing state of corosync-qdevice.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install enable corosync-qdevice
Created symlink '/etc/systemd/system/multi-user.target.wants/corosync-qdevice.service' -> '/usr/lib/systemd/system/corosync-qdevice.service'.
Reloading corosync.conf...
Done
even though ufw is not configured, i completly disabled the ufw deamon on qdevice. But no luck...
getting short of further ideas.
Looks like i got it working, even though, i do not know how.
This is what i did (again):
on pve:
pvecm qdevice remove
on qdevice:
apt purge corosyc corosync-qnetd
check that /etc/corosync is gone
apt install corosync-qnetd
check that /etc/corosync is back
check that corosync-qnetd is running
on pve:
pvecm qdevice setup 192.168.2.10
got same messages as last time!
checked corosync-qdevice.service is running
Now i have the following status:
Code:
pve3:~# pvecm status
Cluster information
-------------------
Name: PVE-CLUSTER
Config Version: 13
Transport: knet
Secure auth: on
Quorum information
------------------
Date: Tue Jun 2 15:26:19 2026
Quorum provider: corosync_votequorum
Nodes: 2
Node ID: 0x00000002
Ring ID: 1.4b
Quorate: Yes
Votequorum information
----------------------
Expected votes: 3
Highest expected: 3
Total votes: 3
Quorum: 2
Flags: Quorate Qdevice
Membership information
----------------------
Nodeid Votes Qdevice Name
0x00000001 1 A,V,NMW 192.168.2.2
0x00000002 1 A,V,NMW 192.168.2.3 (local)
0x00000000 1 Qdevice
Thanks all for your help and input. As i said, i did this multiple times , but it did not work until now.