找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

2674

积分

0

好友

378

主题
发表于 昨天 14:36 | 查看: 2| 回复: 0

一、为什么自己搭“开发测试云”

当我们依赖公有云时,开发测试环境往往会面临几个典型痛点:

  1. 成本高昂:按量计费的测试环境需要7×24小时运行,一年下来可能烧掉一台MacBook。
  2. 环境冲突:开发、测试、QA团队共用一套环境,任何配置改动都可能导致整个团队停摆。
  3. 资源闲置:公司内网通常有千兆带宽,许多旧服务器也在吃灰,这些资源不利用起来实在可惜。

今天,我们就用3台二手电脑搭配Proxmox VE 8,带你用30分钟搭建一个功能完备的“开发测试云”,它将包含:

  • 3节点高可用集群(即使宕机一台也无感)
  • 30台“带公网IP”的测试虚拟机(支持一键批量创建)
  • 日志、监控、DNS全自服务(让开发自助使用,无需频繁打扰运维

二、硬件与网络5分钟速配

我们先规划好基础的硬件与网络架构。

节点 主机名 管理 IP 角色
主节点 pve-dev01 192.168.80.11 控制+镜像仓库+日志
计算节点 pve-dev02 192.168.80.12 纯跑虚拟机
计算节点 pve-dev03 192.168.80.13 纯跑虚拟机

硬件与安装要点

  • 每台配置:32 GB内存 + 1 TB SSD,配备两个千兆电口网卡。
  • 安装时,使用ISO制作启动U盘,务必将时区选为 Shanghai,NTP服务器填 ntp.aliyun.com,这能有效防止集群脑裂。
  • 第二块网卡(例如 eno2)在安装时保持未配置状态,后续我们将用它来创建“假公网”桥接 vmbr2

三、集群骨架:仅需3条命令

搭建Proxmox VE集群的过程非常简单。

# ① 在主节点 pve-dev01 上创建集群
pvecm create dev-cluster

# ② 在其他节点(pve-dev02, pve-dev03)上执行,加入集群
pvecm add 192.168.80.11

# ③ 检查集群仲裁状态
pvecm status          # 看到输出 Quorate: Yes 即可

如果你的公司交换机禁用了多播,需要提前修改 /etc/corosync/corosync.conf 配置文件,将 transport: udpu 的注释打开。

四、一键批量创建30+台“公网虚拟机”

1. 网络拓扑(全部虚拟化)

我们设计一个清晰的虚拟网络结构,来实现“假公网”和项目隔离。

vmbr2(192.168.2.1) ← 假公网网关
  │
  ├── vmbr100(VLAN100) ← 项目 A 专用网络
  ├── vmbr101(VLAN101) ← 项目 B 专用网络
  └── vmbr102(VLAN102) ← 项目 C 专用网络
  • 假公网:虚拟机的默认网关指向 192.168.2.1,我们在PVE主机上配置SNAT,这样开发同学就能“假装”在公网环境,方便调试微信回调、OSS上传等需要公网访问的场景。
  • 项目隔离:不同VLAN在二层网络就实现了隔离,即使某个测试虚拟机把网卡流量打满,也不会影响其他项目的网络。

2. 批量创建脚本(利用cloud-init自动配置)

以下脚本利用cloud-init模板,自动为虚拟机注入SSH密钥、扩容磁盘、修改主机名。

#!/usr/bin/env bash
TEMPLATE=9000          # 提前制作好的CentOS 9 Stream cloud-init模板ID
VLAN=100

for i in {1..30}; do
  VMID=200$i
  NAME=proj${VLAN}-vm$i
  qm clone $TEMPLATE $VMID --name $NAME --full
  qm set $VMID --net0 virtio,bridge=vmbr$VLAN,tag=$VLAN
  qm set $VMID --ipconfig0 ip=192.168.${VLAN}.$((100+i))/24,gw=192.168.${VLAN}.1
  qm set $VMID --sshkey /root/.ssh/id_rsa.pub
  qm start $VMID
done

脚本运行大约2分钟后,开发同学就可以直接使用以下命令登录:

ssh proj100-vm7.dev.int

整个过程实现了从虚拟机创建、网络配置到系统启动的全程零手工干预

五、日志、监控与DNS自服务三件套

为了让开发团队能自助运维,我们快速部署三个核心服务。

系统 一键容器化部署命令 给开发带来的价值
日志 docker run -d -p 3100:3100 grafana/loki 可按项目或版本秒级搜索所有虚拟机的日志
监控 docker run -d -p 9090:9090 prom/prometheus 虚拟机宕机后1分钟内通过飞书等工具告警
DNS docker run -d -p 53:5353 coredns/coredns -conf /Corefile 自动解析 xxx.dev.int 域名,彻底告别手动维护hosts文件
  • 日志收集:将Promtail日志采集器预装在虚拟机模板中,并设置开机自启。
  • 动态DNS:CoreDNS可以对接etcd等存储,在上述批量创建脚本中,可以顺手将虚拟机IP和主机名的对应关系写入,实现虚拟机启动即可被解析

六、日常运维:3个核心命令就够用

这个系统搭建好后,日常维护非常简单。

场景 命令
查看集群健康状态 pvecm status
在线迁移虚拟机(不中断服务) qm migrate 2001 pve-dev02 --online
升级前为批量虚拟机创建快照 for id in $(seq 2001 2030); do qm snapshot $id “pre-release”; done

七、成本与收益对比

让我们算一笔经济账,看看自建方案能省下多少。

项目 公有云(1年估算) 自建PVE集群(一次性)
3台 2核4G 长期运行实例 ≈ 1 万元 0 元(利用旧硬件)
500 GB 日志存储费用 ≈ 1.2 万元 0 元(使用本地SSD)
宕机恢复 人工处理,响应时间不定 集群HA自动迁移,业务无感
合计 ≈ 2.2 万元 3台旧电脑 + 30分钟部署时间

八、未来的扩展玩法

基础平台搭建完成后,你还可以探索更多进阶功能:

  1. Ceph超融合:将三台节点的SSD池化,构建一个分布式存储,既能省去额外NAS的开销,还能享受快照、克隆等高级特性。
  2. GitLab CI/CD集成:通过调用 pvesh API,实现 “合并请求(MR)通过即自动创建独立测试环境”,测试完毕后环境自动销毁,资源高效利用。
  3. 支持远程办公:在阿里云等公有云上购买一台轻量应用服务器,通过内网穿透技术将自建集群的网络延伸出去,这样异地同事也能直接 ssh proj100-vm7.dev.int 进行开发和测试。

通过30分钟的部署,你就能为公司搭建起一个高效、经济、自主可控的开发测试云平台。把省下来的数万元预算,拿去团队建设岂不是更好?如果在搭建过程中有任何心得或疑问,也欢迎来到云栈社区与大家交流分享。




上一篇:面向未来办公生态的打印机再设计:从功能堆砌到体验整合
下一篇:程序员996猝死背后:心脏停跳后,工作群仍在@他需求
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-1-27 04:27 , Processed in 0.260874 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表