这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

集群管理

配置管理pve集群

1 - 集群介绍

介绍pve集群

参考:

https://pve.proxmox.com/pve-docs/pve-admin-guide.html#chapter_pvecm

集群

Proxmox VE集群管理器pvecm是创建一组物理服务器的工具。这样的组称为群集。我们使用Corosync集群引擎进行可靠的群组通信。群集中的节点数没有明确限制。实际上,实际可能的节点计数可能受到主机和网络性能的限制。目前(2021 年),有报告称集群(使用高端企业硬件)在生产中有超过 50 个节点。

pvecm 可用于创建新群集、将节点加入群集、离开群集、获取状态信息以及执行各种其他与群集相关的任务。Proxmox 群集文件系统 (“pmxcfs”) 用于透明地将群集配置分发到所有群集节点。

将节点分组到群集中具有以下优点:

  • 基于 Web 的集中式管理
  • 多主集群:每个节点可以完成所有管理任务
  • 使用 pmxcfs(一种数据库驱动的文件系统)来存储配置文件,并使用 corosync 在所有节点上实时复制
  • 在物理主机之间轻松迁移虚拟机和容器
  • 快速部署
  • 群集范围的服务,如防火墙和 HA

2 - 创建pve集群

创建pve集群

选择一台机器(通常我会选择软路由所在的机器),开始创建 pve 集群。

创建集群

登录 web 界面,选择 “data center”,找到 “cluster” ,然后 “create cluster”.

创建完成后,点击 “Join Information”,然后 “copy information”。

设置vote

修改这台机器的配置:

vi /etc/pve/corosync.conf

修改 nodelist 中这台机器的 quorum_votes 参数,设置的大一些,保证只要这台机器启动就能满足法定人数的需求:

nodelist {
  node {
    name: skyrouter2
    nodeid: 1
    quorum_votes: 3
    ring0_addr: 192.168.20.9
  }
}

比如我这个集群只有三台机器,因此我设置软路由所在机器的 quorum_votes 为 3,保证只要软路由这台机器处于开机状态(同样软路由是24小时开机的),集群的法定人数就足以满足要求,其他机器全部关机都不受影响。

备注:这个操作的主要原因是家庭环境下,其他 pve 机器都是按需开启的,不会24小时在线,因此必须处理法定人数的问题。

3 - 加u人pve集群

加入pve集群

准备工作

加入集群之前,有一些要求,比如不能有 guest 虚拟机。

现有集群的备份和恢复

如果有的话,需要先备份,然后删除。待加入集群成功之后,再恢复回来

这个稍后再试。

全新机器

比较干净的方式是刚安装完成的 pve 节点,在进行其他操作之前,现行加入集群,避免麻烦。

加入集群

选择另一台pve机器,登录 web 界面,选择 “data center”,找到 “cluster” ,然后 “join cluster”.

“Join Information” 选择前面复制的 “Join Information” 即可。

注意:

Join cluster 提交之后,页面可能会显示 connection fail 之类的错误信息,这是因为节点加入群集后,其当前节点证书将替换为从群集证书颁发机构 (CA) 签名的证书。这意味着当前会话将在几秒钟后停止工作。

这时要做的是重新打开 web 页面,再次登录,然后再查看集群信息就能发现已经顺利加入集群。

4 - 删除集群节点

将节点从集群中删除

参考:

https://pve.proxmox.com/pve-docs/pve-admin-guide.html#_remove_a_cluster_node

注意:

删除节点后,其 SSH 指纹仍将驻留在其他节点的known_hosts中。如果您在重新加入具有相同 IP 或主机名的节点后收到 SSH 错误,请在重新添加的节点上运行一次 pvecm 更新证书,以更新其指纹集群范围。

退出节点

登录集群中待退出之外的其他任意一个节点,执行

pvecm nodes

输出如下:

    Nodeid      Votes Name
         1          1 skyserver (local)
         2          1 skyaio2
         3          1 skyserver2
         4          1 skyserver3
         5          1 skyserver4
         6          1 skyserver5
         7          1 skyserver6
         8          1 skyaio

现在来让 skyaio 节点退出。

先关闭 skyaio 节点,确保该节点已经关机。

pvecm delnode skyaio

节点删除之后检验一下:

pvecm nodes

可以看到 skyaio 节点已经不在了:

    Nodeid      Votes Name
         1          1 skyserver (local)
         2          1 skyaio2
         3          1 skyserver2
         4          1 skyserver3
         5          1 skyserver4
         6          1 skyserver5
         7          1 skyserver6

用命令查看集群状态:

pvecm status

可以看到 skyaio 节点已经不在了:

......
Membership information
----------------------
    Nodeid      Votes Name
0x00000001          1 192.168.0.18 (local)
0x00000002          1 192.168.0.82
0x00000003          1 192.168.0.28
0x00000004          1 192.168.0.38
0x00000005          1 192.168.0.48
0x00000006          1 192.168.0.58
0x00000007          1 192.168.0.68

清理残存信息

从web页面列表中清除

打开 pve 的 web 页面时,会发现 skyaio 节点还在列表中,但已经无法连接。

依然是登录任意一个节点,

cd /etc/pve/nodes
ls
skyaio  skyaio2  skyserver  skyserver2  skyserver3  skyserver4  skyserver5  skyserver6

删除 skyaio 目录:

rm -rf skyaio

刷新页面即可看到 skyaio 节点消失了。

清除 authorized_keys 和 known_hosts

cd /etc/pve/priv

清理 authorized_keys

vi authorized_keys

打开后搜索 skyaio,然后删除该行。

vi known_hosts

同样在打开后搜索 skyaio,然后删除该行。

清除其他信息

查找其他位置可能存在的节点信息:

grep skyaio /etc -r  

排除 /etc/pve/.clusterlog 之外,比如这个文件:

/etc/pve/storage.cfg:	nodes skyserver2,skyaio,skyserver6,skyserver5,skyserver4,skyaio2,skyserver3,skyserver

打开后删除 skyaio 即可。

5 - pmxcfs

pmxcfs 群集文件系统

5.1 - pmxcfs介绍

pmxcfs是一个数据库驱动的文件系统,用于存储配置文件

参考:

https://pve.proxmox.com/pve-docs/pve-admin-guide.html#chapter_pmxcfs

pmxcfs

Proxmox 集群文件系统 (“pmxcfs”) 是一个数据库驱动的文件系统,用于存储配置文件,使用 corosync 实时复制到所有集群节点。我们使用它来存储所有与Proxmox VE相关的配置文件。

尽管文件系统将所有数据存储在磁盘上的持久数据库中,但数据的副本驻留在 RAM 中。这对最大大小施加了限制,目前为 128 MiB。这仍然足以存储数千个虚拟机的配置。

该系统具有以下优点:

  • 将所有配置实时无缝复制到所有节点
  • 提供强大的一致性检查以避免重复的虚拟机 ID
  • 节点丢失仲裁时为只读
  • 自动更新所有节点的同步群集配置
  • 包括分布式锁定机制

文件系统挂载在:

/etc/pve