There might be 3 things (or a combination of these 3)
1) check SSL
==========
First check if ssl-certificates are ok, from a good node check:
grep pve-ssl /var/log/syslog
If certificates are ok, what you can do on all nodes (at least I can) at the same time is:
2) restarting services
================
# stopping services
for s in pveproxy spiceproxy pvestatd; do /etc/init.d/$s stop; done
# stopping cluster
/etc/init.d/pve-cluster stop
or (depending on version)
systemctl stop pve-cluster
# stopping corosync
service corosync stop
# check if corosync really stopped
ps uxaw | grep corosync
# if not, just kill it
killall -9 corosync
# restarting cluster
service corosync start
/etc/init.d/pve-cluster start
or (depending on version)
systemctl start pve-cluster
# check if everything is ok
pvecm status
pvecm nodes
# start services
for s in pvestatd spiceproxy pveproxy; do /etc/init.d/$s start; done
3) sqlite
======
If 1 or 2 does not work, it might be a problem with the sqlite database. Even though /etc/pve contains the correct information, it is not the "real" configuration. The real configuration is in a sqlite database inside:
/var/lib/pve-cluster/config.db*
Usually it contains of 3 files:
config.db
config.db-shm
config.db-wal (Write-Ahead-Log)
You can take the sqlite database from a good node and put it on the node not in the cluster:
step 1: stop pve-cluster and corosync on both nodes so the sqlite-database is not in use. Then you will only see 1 file (config.db)
step 2: from the good node, copy the database to the other node: rsync -az /var/lib/pve-cluster/config.db root@<hostname_not_in_cluster>:/var/lib/pve-cluster/
step 3: on both nodes start corosync and pve-cluster.
Regards, Gijsbert