本地服务架构设计2:pve虚拟化平台
1.pve内容
Proxmox VE(Proxmox Virtual Environment)是一种企业级开源虚拟化平台,基于Debian Linux操作系统。它被设计用来运行虚拟机和容器,并支持KVM(Kernel-based Virtual Machine)用于全虚拟化以及LXC(Linux Containers)用于操作系统级的虚拟化。
2.pve的作用
- 资源隔离与扩展性:PVE支持虚拟机(VM)和容器(LXC),可在一台主机上同时运行多个服务器实例,实现服务隔离
- 实时迁移:可以在不中断服务的情况下将虚拟机从一个物理主机迁移到另一个。
- 高可用性集群:确保虚拟机在硬件故障时能够自动恢复运行。
- 内建系统模板:便于快速部署新的虚拟机或容器。
- 备份和恢复:提供虚拟机和容器的备份功能,以便于灾难恢复。
- 命令行工具:除了Web界面外,还提供命令行工具来管理环境。
- ZFS和Ceph存储集成:为高级存储功能如快照、复制等提供支持
3.pve的作用缺点
- 性能损耗:虚拟化层会占用约5%-10%的硬件资源(如CPU和内存),可能影响计算密集型任务
- 复杂度较高:PVE需配置网络、存储和虚拟机模板,有一定门槛
4.pve 安装
4.1下载pve iso镜像
PS:pve占用2~4g内存使用,可以考虑给到8gb内存
4.2下载Rufus来制作系统引导盘
rufus下载地址
使用 Rufus 或其他工具将下载的 ISO 文件写入 USB 启动盘
将 USB 插入目标服务器并重启,进入 BIOS 设置启动顺序,从 USB 启动。
4.3选择安装的磁盘和文件系统
1.选择的磁盘会被全盘格式化
2.文件系统有以下类型(个人选ext4)
- ext4 是Linux基础支持的文件系统,可以在线扩容和缩容
- xfs 是“面向大数据”的文件系统,有相对ext4更好一点的性能,可扩容,但不支持缩容。
- zfs需要多盘,作为最后一代文件系统设计,以存储池为单位,写时拷贝,高可靠性;但一旦建立存储池,便不可改变文件系统raid类型。
- btrfs 被设计为下一代的Linux文件系统,旨在解决ext系列文件系统的一些限制,但RAID级别的实现存在一些问题,特别是RAID5/6的实现曾遭遇过严重的数据丢失风险
4.4 选择地区
China 上海
4.5 配置PVE主机名、网络IP等信息
hostname:自定义域名,比如pve.local
ip: 内网ip,注意核实是否被占用(IP后面的/24是子网掩码长度,子网掩码 255.255.255.0 就是 /24)
网关:路由器的IP
DNS服务器:路由器的IP
4.6 web界面配置
安装完成后,访问 Proxmox VE Web 界面,通常为 http://ip:8006
4.7 合并默认的分区 local 和Local-lvm
PVE默认将硬盘分成两个分区,存放备份和镜像的local 和 存放实际虚拟机数据的local-lvm
- 网页上右键pve节点,选择 shell 进入命令行控制台
- 使用指令 lvs 查看当前有几个 logic volume
要做的就是把data 给合并到 root
- 删除lvm分区( 请一定确保删除的时候分区内没有数据请一定确保删除的时候分区内没有数据 ),shell输入:
1 | lvremove pve/data |
- 将空出来的空间分给local,shell输入:
1 | lvextend -l +100%FREE -r pve/root |
- 数据中心-存储-删除local-lvm
- 调整local,允许存放所有类型的内容
4.8 取消企业订阅
付费订阅对于未认证的个人,不取消会在apt更新信息的时候报错
取消PVE自带的企业订阅,文件位于:
/etc/apt/sources.list.d/pve-enterprise.list 和 /etc/apt/sources.list.d/ceph.list
注销里面的内容
注销里面的内容
1 | nano /etc/apt/sources.list.d/pve-enterprise.list |
1 | nano /etc/apt/sources.list.d/ceph.list |
4.9 更换软件源
1 | /etc/apt/sources.list |
注释其中原有的源,并更换源为PVE对应Debian版本的阿里源:
如果是 PVE 8 版本,替换为Debian12的源:
1 | deb https://mirrors.aliyun.com/debian/ bookworm main non-free non-free-firmware contrib |
最后执行更新检查
1 | apt update && apt upgrade -y |
4.11 创建虚拟机
先获取虚拟机镜像文件,再点击创建虚拟机,配置虚拟机的基本信息,如名称、操作系统类型(linux)、CPU 核心数、内存大小等,然后选择安装介质(上传的ISO镜像文件或者已有的镜像文件(个人使用的是Ubuntu server)。注意虚拟机桥接模式,路由器上固定IP,这样才可以内网中使用。
4.11.1上传ISO镜像文件
4.11.2选择创建的虚拟机的操作系统
4.11.3配置磁盘大小
4.11.4 配置cpu大小
注意:由于物理机是 6核12线程,会在cpu识别为12核,通过分配支持多线程技术可以让虚拟机利用到相当于12个逻辑处理器的能力,但不等同于提供了12个物理核心(实际上许多云服务商的通用服型服务器和轻量服务器也是基于多线程技术来虚拟cpu使用)
4.11.5配置内存大小
4.11.6配置网络
注意:内网使用防火墙可以选择关闭,后期可在pve中重新开启
5. pve 集群
5.1pve 集群简述
作用:可以同时对多台物理机进行网络监控,健康监控,虚拟机监控,方便统一管理
需求:物理机需要在同一网络中
5.2 pve集群配置
- 在一个节点上的pve web界面上创建一个新集群
数据中心-集群-创建集群
加入信息-复制信息
- 其他节点上pve web界面上加入该集群
- 所有节点加入完成后,任意节点的pve web界面访问都可以查看集群状态和配置
6.实践:三台物理机配置
三台物理机(极摩客M6)来源上一篇文章:
本地服务架构设计
第一台64g 1TB ssd
名称 | 内存 | 硬盘 | 核数配置 | 应用服务 |
---|---|---|---|---|
pve | 预留 8g | 预留 200g | 2 | pve服务 |
node1 | 32g | 400g | 6 | 集群主节点,frp |
node2 | 24g | 400g 不到 | 6 | 集群工作节点,frp |
第二台64g 1TB ssd
名称 | 内存 | 硬盘 | 核数配置 | 应用服务 |
---|---|---|---|---|
pve | 预留8g | 预留 200g | 2 | pve服务 |
node3 | 32g | 400g | 6 | 集群主节点,frp |
node4 | 24g | 400g 不到 | 6 | 集群工作节点,frp |
第三台32g 500gb ssd
名称 | 内存 | 硬盘 | 核数配置 | 应用服务 |
---|---|---|---|---|
pve | 预留 8g | 预留100g | 2 | pve服务 |
node5 | 24g | 400g 不到 | 6 | rancher,mysql,minio,redis,frp |
虚拟化设计思路
三台物理机虚拟化为5台ubuntu server虚机机
1台搭建rancher 服务,mysql服务,redis服务,minio服务
2台搭建k8s 主节点(control,etcd,worker)
2台搭建k8s 工作节点(worker)
ps:
1.记得配置物理机通电自动开机启动,极摩客M6开机启动时按esc键,可以进入bios设置通电自动启动。
2.虚拟机配置开机启动,在pve配置
7.实践效果图
7.1pve效果图
ps:后续发现在pve中其实可以设置所有线程当作cpu,不需要拆分,拆分的好处是防止冲突,不拆分的坏处是让cpu分片执行,性能效率会减低,所以有了node6节点
7.2rancher效果图
2台物理机预留了 20c,108g 部署项目(node1,node2,node3,node4)
8.其他扩展:第三方备份
可以使用阿里云oss挂载在pve服务器上
然后定时任务把pve的备份数据复制到oss,双重备份机制。
ps:pve有备份和快照功能