集群管理
1 - 集群介绍
参考:
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 集群。
创建集群
登录 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集群
准备工作
加入集群之前,有一些要求,比如不能有 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
5.1 - 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