Proxmox 系列 #7:集群和高可用性

我最喜欢的 Proxmox 功能之一是能够形成多个节点(服务器)的集群。

例如,如果您有三台物理服务器,每台都安装了 Proxmox,您可以将它们组合成一个集群。 这样,如果您需要关闭某个节点进行维护,您可以轻松将该节点上的虚拟机移动到另一台服务器,而不会造成任何停机。

如果集群中至少有三台物理服务器,您还可以在三台服务器之间设置高可用性。

Proxmox 需要至少 3 个节点才能实现此功能,因为它使用仲裁来确定在节点意外故障时自动将虚拟机传输到哪些节点。 为了使其正常工作,您还需要 NAS 或某种类型的共享存储。

在本教程中,我将向您展示如何创建三节点集群、设置高可用性以及从集群中删除节点,这似乎没有正式的详细记录,如果做错了可能会有点混乱。

在 Proxmox 中创建 3 节点集群

这需要至少 3 台物理 Proxmox 服务器。 您可以创建两个节点的集群,但如果集群中的节点少于三个,HA 将不起作用。 登录第一台服务器,点击“数据中心”选项卡,点击“集群”和“创建集群”:

为集群命名,然后单击“创建”。

与 Proxmox 一样,集群会自行创建并在完成后返回“TASK OK”。 关闭活动窗口:

转到第二个服务器,再次单击“数据中心”选项卡,然后单击“加入集群”。

返回到您的第一台服务器并单击“加入信息”,然后单击“复制信息”:

在第二台服务器上,单击检查器中的 Control V 来填写字段。 确保在下面的字段中输入第一台服务器的 root 密码。 如果一切正常,请单击“加入测试集群”(这将根据您为集群指定的名称而有所不同):

加入过程开始。 如果挂了,只需刷新整个页面并重新登录即可。 你最终会看到这样的屏幕:

您的集群中将有两个节点:

要添加第三个节点,请登录到该节点,然后在“数据中心”选项卡中再次单击“集群”。 然后返回到我们的第一个节点,将“加入信息”与 root 密码一起复制并粘贴到“加入信息”字段中的相应区域。 此时基本上可以从第4步开始重复。 最后,所有三个节点将出现在所有 Proxmox 安装上,如下所示:

3 节点集群的高可用性

HA 的优点在于,如果一个节点(服务器)因任何原因发生故障,该服务器上的虚拟机将自动转移到另一个节点。 他们使用仲裁来完成此操作(进行投票,获胜者从故障节点获得虚拟机)。 可以设置一个“仲裁节点”——一个不托管虚拟机、仅进行投票的节点。 然而,这超出了本文的范围。 为了设置 HA,我设置了存储在 NAS 上第一台服务器上的“测试”VM,如下所示:

首先,登录到您的一个节点,然后单击“数据中心”选项卡,然后单击其右侧和下方的 HA 选项。

单击“添加”并选择所需的虚拟机。 我只有一台虚拟机,所以我正在使用它。

现在,您将在受 HA 监控的计算机列表中看到该虚拟机。 您会注意到,当您关闭托管虚拟机的节点时,虚拟机会自动移动到已打开电源的节点。

从集群中删除节点

您要做的第一件事是从要删除的节点中删除所有虚拟机。 另外,请确保您有所有内容的备份,以防出现问题。 要迁移节点,请右键单击该节点,然后单击“迁移”。

在出现的窗口中,选择要将虚拟机存储移动到的节点,然后单击“迁移”。 执行此操作时,请确保您的虚拟 CD/DVD 驱动器是空的,否则它将抱怨并拒绝迁移。

迁移虚拟机需要一些时间,但如果一切顺利,您应该会看到“任务正常”消息。

此时,您应该确保您没有登录到要删除的节点。 如果是,请退出 Proxmox。

通过终端与另一个节点建立SSH连接,如下所示:

ssh [email protected]

就我而言,我将删除“测试虚拟机”。 您可以看到我已登录到 proxmox2 虚拟机,因为它显示“本地”。

root@proxmox2:~# pvecm nodes

Membership information
----------------------
    Nodeid      Votes Name
         1          1 test
         2          1 proxmox2 (local)
         3          1 proxmox3
root@proxmox2:~# 

继续单击节点,然后单击右侧的“关闭”来关闭该节点:

继续,确认关闭并等待节点关闭。

现在,您可以在 SSH 会话中使用以下命令从集群中删除节点:

root@proxmox2:~# pvecm delnode test
Could not kill node (error = CS_ERR_NOT_EXIST)
Killing node 1
root@proxmox2:~# pvecm nodes

Membership information
----------------------
    Nodeid      Votes Name
         2          1 proxmox2 (local)
         3          1 proxmox3
root@proxmox2:~# 

如果您收到类似上面的错误消息,可以忽略它。

您现在可以使用以下命令检查节点是否已被删除:

root@proxmox2:~# pvecm status
Date:             Wed Aug 16 10:47:23 2023
Quorum provider:  corosync_votequorum
Nodes:            2
Node ID:          0x00000002
Ring ID:          2.11
Quorate:          Yes

通过查看仲裁信息下的节点部分,您可以看到该节点已从集群中删除。

请注意,如果您想要将节点重新添加到集群中,则需要在该节点上重新安装 Proxmox 并使用上述说明重新添加它。