具有 2 个节点 proxmox 的 HA 集群

HA Cluster with 2 node proxmox

我想实现1个节点挂掉时VM自动迁移。我创建了 proxmox claster,设置了复制,并安装了 watchdog ipmi。但是随着 1 个节点的丢失,什么也不会发生。 我用了 https://pve.proxmox.com/pve-docs/chapter-ha-manager.html, and https://pve.proxmox.com/wiki/High_Availability_Cluster_4.x#Hardware_Watchdogs

ha-manager config
ct:100
        group HA
        max_restart 0
        state started

ha-manager status
quorum OK
master node1 (active, Mon May 18 09:18:59 2020)
lrm node1 (idle, Mon May 18 09:19:00 2020)
lrm node2 (active, Mon May 18 09:19:02 2020)
service ct:100 (node2, started)

当我关闭 node2 时,我记录了:

May 18 08:12:37 node1 pve-ha-crm[2222]: lost lock 'ha_manager_lock - cfs lock update failed - Operation not permitted
May 18 08:12:38 node1 pmxcfs[2008]: [dcdb] notice: start cluster connection
May 18 08:12:38 node1 pmxcfs[2008]: [dcdb] crit: cpg_join failed: 14
May 18 08:12:38 node1 pmxcfs[2008]: [dcdb] crit: can't initialize service
May 18 08:12:42 node1 pve-ha-crm[2222]: status change master => lost_manager_lock
May 18 08:12:42 node1 pve-ha-crm[2222]: watchdog closed (disabled)
May 18 08:12:42 node1 pve-ha-crm[2222]: status change lost_manager_lock => wait_for_quorum
May 18 08:12:44 node1 pmxcfs[2008]: [dcdb] notice: members: 1/2008
May 18 08:12:44 node1 pmxcfs[2008]: [dcdb] notice: all data is up to date
May 18 08:13:00 node1 systemd[1]: Starting Proxmox VE replication runner...
May 18 08:13:01 node1 pvesr[40781]: trying to acquire cfs lock 'file-replication_cfg' ...
May 18 08:13:02 node1 pvesr[40781]: trying to acquire cfs lock 'file-replication_cfg' ...
May 18 08:13:03 node1 pvesr[40781]: trying to acquire cfs lock 'file-replication_cfg' ...
May 18 08:13:04 node1 pvesr[40781]: trying to acquire cfs lock 'file-replication_cfg' ...
May 18 08:13:05 node1 pvesr[40781]: trying to acquire cfs lock 'file-replication_cfg' ...
May 18 08:13:05 node1 pveproxy[39495]: proxy detected vanished client connection
May 18 08:13:06 node1 pvesr[40781]: trying to acquire cfs lock 'file-replication_cfg' ...
May 18 08:13:07 node1 pvesr[40781]: trying to acquire cfs lock 'file-replication_cfg' ...
May 18 08:13:08 node1 pvesr[40781]: trying to acquire cfs lock 'file-replication_cfg' ...
May 18 08:13:09 node1 pvesr[40781]: trying to acquire cfs lock 'file-replication_cfg' ...
May 18 08:13:10 node1 pvesr[40781]: error with cfs lock 'file-replication_cfg': no quorum!

需要 3 个节点有 HA 工作。第三个节点可以替换为另一个 qdevice 以提供所需的投票。参见 https://pve.proxmox.com/wiki/Cluster_Manager

问题出在法定人数上。并且是 non-trivial 并且不能直观地工作。 如果你设置了一个 Proxmox 集群,它就会开启一个仲裁机制。要在集群上执行任何操作,它需要来自它了解正在发生的事情的每个节点的投票。需要50%的现有节点+1才能接受投票。

创建 2 节点集群时有一个愚蠢的默认设置:它需要 50%+1=2 个节点来做任何事情。因此,尽管 'cluster' 如果一个节点死亡,您甚至无法打开 vm /container 的电源,直到两个节点都在工作。

有一个解决方法:在 corosync.conf (/etc/corosync/corosync.conf) 中,您必须启用两个参数: two_node: 1 wait_for_all: 0

第一个参数定义在两个节点集群情况下需要1票来执行操作。但是对于年轻玩家来说还有一个陷阱:这个设置会自动启用另一个设置:wait_for_all,它会在所有节点出现之前禁用集群在开机时的操作。所以这实际上又在破坏集群。所以你也要克服这个。

仔细阅读此手册页: https://www.systutorials.com/docs/linux/man/5-votequorum/

但是还有一个问题。 corosync.conf 有两个版本: /etc/corosync/corosync.conf 和 /etc/pve/corosync.conf

并且每当第二个被改变时第一个被覆盖 所以你必须编辑后面的那个。但是,当您的第二个节点出现故障时,您必须先暂时禁用法定人数,然后再编辑文件。