Proxmox Virtual Environment,简称 PVE,是一个基于 Debian 的服务器虚拟化环境,虚拟化方案是 QEMU/KVM,同时支持 LXC 容器。
此次搭建使用的镜像是:proxmox-ve_8.0-2.iso
PVE 搭建步骤概览:
- 下载 ISO 镜像,按照步骤安装,选择磁盘,关闭 SWAP,设置 FQDN 和固定 IP
- 安装完成,使用 https://ip:8006 登录管理界面
- 修改网络配置,修改 hosts,添加所有节点的 IP 地址
- 修改软件源,安装更新,安装 Ceph
- 创建集群,加入集群
- 配置 ACME 生成 HTTPS 证书(可选)
- 初始化 Ceph,按照磁盘添加 OSD,为每台主机添加 mon 和 mgr,创建存储池
- 创建 mds,配置 CephFS
- 上传系统安装镜像,安装虚拟机,放置磁盘到 Ceph 存储池
- 配置 HA
下面是详细的操作记录。
环境规划
为了搭建高可用集群,官方的推荐是至少 3 节点,这里使用 3 台虚拟机进行测试,后续也可以继续添加新的节点到集群。
经过测试,在使用 2 节点搭建集群也可以部署 Ceph 集群,执行虚拟机迁移也正常。但是如果有节点离线,Ceph 直接不可用。
实验节点配置如下:
- 硬盘分配
32G 的盘用于安装操作系统,在实际的环境中,应该使用两块 SSD 做成 RAID1 以确保数据安全。
512G 的盘作为数据存储,可以按照实际需求添加。
如果打算使用 Ceph 分布式存储,这些存储盘不应该做 RAID,而是直通到系统,由 Ceph 统一管理(类似 VMware vSAN)。
- 网络规划
管理网络:192.168.1.0/24
集群网络:192.168.10.0/24
存储网络:192.168.20.0/24
集群和存储网络尽可能使用 10Gbps 及以上速率的网卡,也可以使用多网卡做端口聚合。
如果使用虚拟机测试,需要修改下网络设置。
打开虚拟机 vmx 配置文件,找到 ethernet0.virtualDev = "e1000"
这样的内容,ethernet0
是网卡序号,修改对应集群和存储的网卡设置,将 e1000
改成 vmxnet3
,可以实现虚拟机之间的 10Gbps 网络速率。
系统配置
系统安装步骤很简单,和普通的 Linux 安装步骤差不多。
选择正确的磁盘进行安装,如果内存足够,可以在选择磁盘时将 swapsize
设为 0 关闭 swap 虚拟内存。
配置静态 IP,写上 FQDN:
系统安装完成,使用控制台提供的地址登录:https://ip:8006
,用户名 root
,接下来需要完成一些初始配置。
修改软件源
参考:Proxmox 源使用帮助
命令如下:
1 | # 修改 Debian 源 |
修改完成后,执行一次更新:apt update && apt full-upgrade -y
去除未订阅提示
1 | sed -i.bak "s/data.status.toLowerCase() !== 'active'/false/g" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js |
参考来源:pvetools
修改网络配置
在网页选到对应的节点,系统->网络
菜单,创建 Linux Bridge
:
根据规划,修改完成如下:
点击应用配置
后更改生效。
然后在系统->主机
菜单中修改 hosts:
1 | # 管理 |
集群配置
各节点按照上面的步骤配置完成后,可以开始配置集群。
因为 PVE 的集群是去中心化的,可以在任意节点创建集群,然后其他节点加入,完成后可以在任意节点管理整个集群。
登录到网页,在数据中心->集群
中点击创建集群
:
选择合适的集群网络,在实际生产环境中,可以添加多个网络确保高可用。
创建完成后,点击加入信息
,复制加入信息,登录其他节点,在数据中心->集群
中点击加入集群
,粘贴刚才复制的内容后,按照提示填入密码,选择正确的集群网络:
加入完成后,在任意节点的网页都可以看到所有节点,各个节点会配置 ssh 密钥互相免密码登录,集群和虚拟机的配置文件 /etc/pve
会自动同步。
集群内节点要求时间同步一致,默认已经安装了 Chrony
服务,可以用 chronyc makestep
命令手动同步时间。
HTTPS 证书配置
这个步骤不是必须的。
在数据中心->ACME->账户
中点击添加
,按照要求填入注册信息。
因为是测试环境所以就随便填了,注意 ACME 目录
不要选到 Let’s Encrypt V2 Staging 了。
然后在下方的质询插件
中,根据域名服务商填写好对应的信息。
选到对应的节点,系统->凭证->ACME
,中点击添加
,填好对应的信息:
在上方选择之前添加的账户,然后点击立即预定凭证
,等待证书申请完成后,使用对应的域名访问,可以发现 HTTPS 证书已经生效了。
Ceph 分布式存储
Ceph 是一个分布式的软件定义存储,类似于 VMware vSphere 的 vSAN,可以将数据的多个副本存储在多个节点,确保数据高可用。
默认没有安装 Ceph,需要先安装。如果在网页点击安装,将会把 Ceph 软件源改为官方地址,所以这里在各节点用命令安装:apt install ceph -y
安装完成后,在数据中心->Ceph
中点击配置 Ceph
:
选好正确的网络,如有需要,Cluster Network 和 Public Network 可以分开。
参考:Initial Ceph Installation & Configuration
在节点的 Ceph->监视器
,为其他节点也添加 Monitor
和 Manager
,至少 3 个就够了:
在节点的 Ceph->OSD
菜单中,为每个磁盘创建 OSD
:
如果 OSD 创建后被错误的识别为 HDD,可以在创建时指定 设备类型
。
在每个节点都创建完 OSD 后如图:
OSD 配置完成后,需要配置资源池才可以使用 OSD 的容量。在节点的 Ceph->资源池
菜单中,为每个磁盘创建 OSD
:
资源池创建完成后,在数据中心->存储
和每台主机下都可以看到新建的存储 vm_pool
,虚拟机的磁盘也可以放置到 vm_pool
上了。
不过这个存储只能用于存储虚拟机磁盘文件,如果是需要存储 ISO 镜像或备份文件,则需要创建 CephFS
。
在节点的 Ceph->CephFS->元数据服务器
,为每台主机创建,然后创建 CephFS
:
最终的效果如下:
HA 测试
集群和共享存储配置完成后,可以开始测试 HA 高可用环境了。
创建虚拟机,磁盘需要放到共享存储上,如果不是,需要先迁移。
在数据中心->HA->资源
添加虚拟机:
等待状态变成 started
后,HA 就会启用。
和 VMware vSphere 的 HA 功能一样,如果检测到虚拟机所在的节点异常,则会在另外的节点重启虚拟机。
虚拟机启用 HA 的状态:
这里为了测试,在虚拟机安装了 Nginx,使用 tcping 检测 80 端口的连接情况,然后强行关闭虚拟机所在的节点 pve20
。
节点断开后的状态:
等待一段时间后,集群发现 pve20
已离线,在 pve30
重新启动了虚拟机。
虚拟机重启后的情况:
tcping 检测命令:tcping --color -t -w 1 -i 0.1 -p 80 192.168.1.102
检测情况:
使用总结
之前有搭建过 VMware vSphere ESXi 集群,这次搭建 PVE 集群发现了很多和 vSphere 不一样的地方。
- 系统
vCSA 的系统服务挺多,之前部署的时候就因为缺少 DNS 解析而安装失败,也有因为修改 IP 等导致服务无法启动,无法成功启动集群管理界面,只能备份后重装。
PVE 的系统,基本上就是加了网页管理界面的 Debian,对 Debian/Ubuntu 的使用经验完全适用,如果节点发现连不上集群,会自动重启。
vSphere ESXi 主要是面向企业,有一个 vSAN 硬件兼容性检查列表,如果是未被认证的硬件,会在管理界面警告;PVE 和普通的 Linux 一样,在家用机也能正常安装使用。
- 管理
vSphere 每个节点有单独的管理页面,要做集群统一管理必须安装 VMware vCenter Server Appliance(vCSA)进行管理。
如果 vCSA 没做好高可用,放置 vCSA 的节点出现故障的话,将会直接无法管理整个集群。
PVE 是去中心化管理,不需要安装额外的软件或系统,做成集群后,可以通过任意节点的管理页面管理集群内所有节点。
- 存储
vSphere vSAN 有 缓存层
、容量层
这样的方便的设置,而 PVE 中的 Ceph 在管理页面中无论是 SSD 还是 HDD,都是直接添加到容量池使用,如果需要区分,需要手动调整策略。
Ceph 分布式存储也是去中心化的设计,存储的数据会按照设定的副本数存储在多个节点,可以添加多个 Monitor
和 Manager
服务,同时运行的 Manager
只有一个,检测到故障会切换,在有节点出现故障时,只要还有正常工作的 Monitor
和 Manager
服务,虚拟机的 HA 和迁移功能仍然可用。
- 网络
vSphere 可以用分布式交换机 DSwitch
批量管理多个节点的网络,虚拟机在节点间迁移时也可以选择迁移到哪个网络,如果各个节点的网络设置不相同,这个功能会很方便。
在 PVE 暂时没发现这个功能。
- 高可用
VMware vSphere 有 HA 和 FT 两种高可用方式,其中 FT 是虚拟机同时在多个节点运行,通过网络同步内存状态,如果其中一个虚拟机所在的节点出现异常,可以马上切换到备用的,不会丢失运行时状态。
PVE 只有 HA,和 VMware vSphere 一样,都是检测到异常后在另外一个节点重新启动虚拟机,会丢失运行时状态,磁盘数据正常保留。
- 虚拟机
PVE 的 Windows 虚拟机,如果使用 VirtIO 的磁盘或网卡,会因为缺少驱动无法使用,需要在安装系统时加载 VirtIO 驱动盘 安装对应的驱动。