前几天帮一家制造企业做私有云平台的整体规划,从需求梳理到概要设计方案,前后磨了一个多月。方案改了三版,评审会开了四五次,最后落地的架构和最初设想已经有了很大调整。回过头看,很多坑其实都能提前避开。今天把这套设计思路整理出来,给正在做私有云平台建设的同行当个参考。
1. 为什么还要自己建私有云——先想清楚再动手
1.1 私有云到底解决了什么问题
很多团队一听到“私有云”这三个字,第一反应就是OpenStack、就是一堆服务器跑KVM、就是要招懂虚拟化的运维。但做了这么多年私有云项目,我最大的感受是:私有云本质上不是技术问题,而是资源交付模式的变革。它把过去“买一台物理机、装一个系统、绑定一个业务”的哑资源模式,变成“从一个庞大的资源池里随手取出一小块能力”的服务模式。
前几年帮那家制造企业做私有云规划,他们的痛点非常典型。业务部门申请一台服务器要两个星期,采购、上架、装系统、配置网络,每一步都有流程;晚上上线高峰期核心数据库CPU跑满,想临时加一台机器,根本没人敢动,因为所有机器的IP、角色、业务全绑死了。做完私有云之后,新环境从申请到交付控制在10分钟以内,再也不用为了扩容去反复走采购流程。
总结下来,私有云真正给企业带来的价值就三条:资源池化,把分散的物理机变成可统一调度的计算、存储、网络资源;服务自动化,申请、审批、交付全流程线上化;运维标准化,监控、备份、告警、生命周期管理统一入口。这不只是技术选型,更是IT管理方式的升级。
1.2 哪些场景适合自建,哪些直接用公有云更香
找我来咨询的企业,十家有八家说想建私有云,但真正适合自建的,我觉得不到一半。自建之前先问自己三个问题:数据能不能出机房?业务量未来三年会不会爆发式增长?团队有没有人持续维护平台?如果答案都是“否”,那直接用公有云加专线比自建划算得多。
适合自建的场景一般有几类。第一是金融、政务、医疗这类合规要求高的行业,数据必须留在自有机房;第二是核心业务对延迟和存储性能极度敏感、体量又大,长期走公有云成本太高;第三是开发测试环境密集,需要频繁创建销毁环境,而且要和生产环境做强隔离;第四是已经有几百台存量服务器,需要统一纳管、提升资源利用率。
反过来,团队规模不到一定临界值、业务又在高速扩张期,自建私有云反而是负担。我通常给一个经验阈值:服务器总量未来三年达不到100台,业务系统少于30套,自建私有云的性价比大概率是负的。别为了“上云”而“上云”,这话在私有云领域尤其适用。
2. 整体架构与概要设计:先把蓝图分层画清楚
2.1 四层架构:别把云管平台和虚拟化混为一谈
概要设计的第一步是画架构图,但很多人画的是“虚拟化拓扑”,不是“私有云蓝图”。我习惯把私有云平台拆成四个层次,每一层承担不同职责,设计思路跟着分层走。
物理基础设施层是底盘,包括服务器、存储、网络和安全设备。这一层强调标准化,服务器的型号、CPU代数、内存规格尽量统一。采购时不统一的硬件,会让后面的资源调度和故障排查都变得很痛苦,我一个项目里遇到过三种不同代的CPU混用,虚拟机的性能表现忽高忽低,花了很长时间才定位到是硬件差异导致。
虚拟化资源池层是核心,负责把物理资源抽象成可调度的逻辑资源,计算、存储、网络三个池子在这里成型。这一层的设计决定平台性能上限,也是整份概要方案里技术含量最高的部分。
云管平台层是大脑,负责资源管理、项目配额、镜像服务、流程审批、计量计费这些控制面能力。很多人以为装了云管平台就有了云,错了,云管平台只是入口,资源池才是底盘,没有扎实的资源池,云管平台做得再花哨也是空中楼阁。
服务运营层是门面,面向用户和运维,包括自助门户、工单系统、监控告警、备份恢复、容量分析。这一层做得越精细,后期运维越轻松,但方案里常常被一笔带过,我建议至少用一节篇幅详细设计服务目录和运维流程。
2.2 三大技术路线怎么选:OpenStack、ZStack、VMware
技术选型是概要设计方案里最容易起争论的地方。我把主流的方案分三条路线。
第一条是商用路线,以VMware vSphere加vRealize为代表。功能最成熟、运维门槛低、人才市场上也好招人。缺点是授权费随规模上升明显,底层对深度定制支持有限,很多企业用着用着会被续费成本逼着考虑替代方案。如果预算充足、业务系统又特别复杂,这条路确实省心。
第二条是OpenStack路线,开源免费、组件丰富,适合几百台起步的大规模场景。但它的部署和升级复杂度都很高,光是把核心组件之间的版本兼容关系理清楚,就足够一个专职团队忙大半年。没有专门云团队的企业,我不建议碰,真出了问题,排查链路长到让人崩溃。
第三条是ZStack这类国产云平台,部署快、架构精简、有商业支持,对百台左右规模、只有两三个运维人员的企业是最平衡的选择。我这两年落地最多的也是这条路。它当然有深度定制能力受限的问题,但对企业私有化部署来说,多数场景下用不到那么深的定制。
三个方案的对比表我直接贴在方案里给别人评审用:
| 方案 | 核心优势 | 主要短板 | 推荐规模 | 运维门槛 |
|---|---|---|---|---|
| VMware vSphere | 功能完整、生态成熟、人才好招 | 授权成本高、定制受限 | 任意规模 | 低 |
| OpenStack | 开源、弹性、扩展性好 | 部署运维复杂、升级成本高 | 数百台以上 | 高,需专职团队 |
| ZStack | 架构精简、部署快、支持好 | 生态相对封闭 | 百台左右 | 中低 |
选型的原则只有一条:用你团队的能力去匹配平台的复杂度,而不是看哪个方案宣传得最热闹。
3. 核心资源池设计:算力、存储、网络怎么搭才稳
3.1 计算资源池:超分比怎么定,模板为什么有用
计算资源池的核心设计参数是超分比。CPU超分比建议控制在1:2到1:4之间。业务如果以数据库批处理这种高消耗为主,1:1都不过分;如果主要是Web服务和开发测试虚拟机,普遍负载不高,超到1:4问题不大。我见过有团队把CPU超分比设到1:8,高峰期一台物理机上挤了三十台虚拟机,业务方天天说系统卡,最后迁走一半虚拟机才恢复正常。
内存超分要慎之又慎。内存超分带来的性能抖动比CPU严重得多,最坏情况是触发OOM Killer,把虚拟机整个杀掉。我做方案时几乎不做内存超分,宁可多采购一点内存。操作系统层面,KSM页面合并我通常是关闭的,它虽然能省内存,但会引入CPU开销和延迟抖动,生产环境不划算。
还有个容易被忽视的设计:计算规格模板。在云管平台上只开放2C4G、4C8G、8C16G、16C32G这几种标准规格,禁止随意创建非标规格。这么做的理由很实在:标准化之后虚拟机调度更均匀,资源碎片化少,后期容量规划口径也清晰。不然你数一遍环境里的几百台虚拟机,会发现有几十种规格,扩容时根本没法精确判断该加多少台宿主机。
3.2 存储资源池:容量怎么算,性能怎么分档
存储层是私有云里最容易踩坑的地方。我见过太多项目,服务器买了顶级配置,存储随便给了一台NAS,虚拟机一多,半夜跑批任务时存储延迟飙到几百毫秒,整条业务线跟着瘫痪。
先算容量。假设规划300台虚拟机,平均每台200GB系统盘加300GB数据盘,裸数据量就是300乘500GB,约150TB。考虑快照、模板、回收站这些额外开销,增加15%余量,再乘上Ceph三副本的3倍因子,裸容量需求大约是172.5TB,再预留15%左右防止集群写满,最终规划容量放200TB以上比较稳妥。这个计算过程建议每个方案都保留下来,评审时别人能看到你的规划逻辑,而不是拍脑袋报一个数字。
IOPS和带宽往往是真正的瓶颈。我的建议是存储分三档:性能型放全闪,承载生产数据库和核心系统;容量型用SATA SSD或高性能机械盘做混合存储,承接开发测试和日志类业务;归档型放廉价大容量盘,放冷数据。Ceph或者ZStack的ZStor,都是我常用的分布式存储方案。
一个非常重要的提醒:不要把分布式存储集群规模搞得过大。Ceph集群太大之后,网络抖动会导致PG状态异常,任何一次操作OSD都要非常小心。我经历过一次误操作触发的大规模数据重平衡,把整个业务网络打满,前端延迟高到不可接受。存储节点要么规模控制好,要么把存储网络和管理网络充分隔离,并且定期做故障演练。
3.3 网络资源池:VXLAN、bond配置与MTU一致性问题
网络层是私有云概要设计里最容易被低估的部分。它要和现有物理网络对接,还要做到租户隔离。目前主流选择是VXLAN的Overlay网络,它把虚拟机和物理网络之间的绑定关系完全解耦,虚拟机漂移后IP不变,这个特性对传统业务来说特别重要。
物理服务器网卡建议至少4个万兆口,业务网络和管理网络分开。管理网一旦拥堵,整个云平台会失去管控能力,所以宁可多花两千块加网卡,也不要裸奔。以下是我常用的bond4配置示例,拿过去改下IP就能用:
nmcli connection add type bond ifname bond0 mode 802.3ad ipv4.method manual ipv4.addresses 192.168.10.10/24 nmcli connection add type ethernet slave-type bond master bond0 ifname eth0 nmcli connection add type ethernet slave-type bond master bond0 ifname eth1还有一个特别容易踩的坑:MTU一致性。VXLAN封装之后包头变大,物理交换机、宿主机网卡、虚拟机网卡三层的MTU如果不统一,会出现“小包正常、大包不通”的诡异现象。设计阶段必须约定好:物理网络MTU设9000,虚拟机网络按标准1500,VXLAN隧道MTU设1450左右。这个细节写在方案里只需要一行,但能省掉未来无数个排查的夜晚。
特别提醒:不要在没有完成POC验证的情况下直接采购全部硬件。我至少见过三个项目,硬件买齐了才发现方案选的虚拟化平台和现有存储阵列不兼容,最后要么换存储要么换平台,都是大几百万的返工。
4. 高可用、容灾与安全设计
4.1 控制节点:高可用是底线,不能有单点
私有云平台里,控制节点如果挂了,虽然业务虚拟机还能继续跑,但整个平台就失去了管控能力,没人能迁移虚拟机、没人能回收资源、没人在告警系统里看到异常。这等于平台处在半失控状态,比业务停机还让人难受。
所以控制节点的高可用是底线。至少部署三台控制节点做集群,数据库、消息队列这类基础组件也要高可用,避免脑裂。控制节点和计算节点要分开部署,不要图省事堆在同一个物理集群里,否则一次计算节点重启就可能把控制面一起带崩。
网络层面同样不能有单点。控制节点的心跳和业务流量要走不同物理链路,所有设备都接在一台交换机上,就算不上下面的HA配置。核心网络设备至少成对,预算再紧,也不能在控制面网络上省这一笔。
4.2 计算节点:故障域和预留机的价值
计算节点的高可用,靠的是故障域设计和迁移策略。一台物理机就是一个故障域,设计时要通过“反亲和性”策略把同一业务的多台虚拟机分散到不同宿主机上,避免一台机器故障时整个业务所有节点同时消失。做过真实故障演练的都清楚,单台宿主机电源宕掉,如果能自动把虚拟机漂走,业务方几乎无感知;如果没有反亲和性策略,业务可能直接全军覆没。
另外一定要预留一两台空主机,不承载任何业务虚拟机,专门用于故障时的漂移和迁移。很多团队舍不得这几台机器的成本,觉得浪费,真正到了物理机突然宕机的那一天,这台预留机就是你争取维护时间的救星。方案里写清楚“预留N%的冗余容量”,评审时更经得起推敲。
4.3 安全设计:租户隔离、账号权限与审计
私有云的安全设计经常被一句话带过,实际上它决定了平台能不能真正让业务部门放心用。租户隔离是最基础的要求,不同部门或项目组之间的虚拟网络、存储和镜像必须强隔离,基于项目配额限制资源使用上限,防止某个团队耗尽平台容量。
账号权限模型要做细,运维管理员、租户管理员、普通业务用户三个角色分开,权限最小化。所有操作要留审计日志,特别是虚拟机的创建、删除、快照恢复这类高危操作,出了问题要能追溯到人。我见过的很多私有云事故,追查起来都是一片空白,就是因为审计日志没开或者没保留策略。
平台自身的认证体系要尽量和企业现有的AD或统一身份源对接,不要另起炉灶建一套孤立账号体系。不然账号管理本身就会变成一个新的运维负担,每加一个人都要在多个系统里各配一遍权限。
4.4 备份与容灾:不能只说“有备份”
方案里写“每日备份”很容易,真正难的是备份可用性。我评审方案时一定会追问:备份能不能恢复到预期时间点?备份数据放在哪里?有没有做过恢复演练?这三个问题答不上来的方案,基本可以断定备份设计是纸面的。
给客户设计时我一般分三级:核心生产数据库做连续日志备份加每日全量,文件类业务做每日增量加每周全量,开发测试环境做快照。备份数据单独存放在独立资源池,不要和生产虚拟机放在一起,杜绝“一个故障把在线数据和备份一起带走”的可能。
备份恢复演练要纳入运维计划,每季度随机恢复一台虚拟机,验证流程和RTO。有些企业的备份任务跑了几年都没失败过,第一次做恢复演练就发现备份存储其实早就满了,所有备份任务从第三个月起就在“假成功”。这个例子我每次做方案评审都会讲一遍。
5. 实施落地流程:从POC到业务迁移
5.1 POC验证:哪些指标必须现场验收
建设私有云,我强烈建议先POC再正式实施。POC环境的规模不用大,三台物理机、一套最小分布式存储、一个完整云管平台就够了。关键是验证场景要贴近真实业务,不是跑几个测试用例就完事。
POC必须覆盖四个场景:批量创建和销毁虚拟机,看资源池调度是否均匀;直接拔掉一台宿主机电源,做高可用演练,观察业务虚拟机能否自动迁移;用FIO模拟数据库读写,测存储延迟,尤其是混合读写时4K随机写的表现;跨主机、跨租户做网络连通性测试,验证VXLAN结合现有网络设备的整条链路质量。
这些场景如果POC阶段没有问题,再进生产环境心里就有底了。我们做POC时,直接在业务高峰前拔了一台机器电源,结果虚拟机迁移用了十几分钟,业务中断时间远超预期,后来发现是存储网络带宽不够,现场就把存储网络从千兆换成万兆,问题才解决。
5.2 部署实施:主机名、时间同步、自动拉起
正式部署阶段,有几个看似不起眼但影响很大的细节,方案里一定要写进去。
第一,NTP时间同步。所有节点统一走chrony或NTP,时间漂移会造成虚拟化元数据混乱、日志分析困难和证书校验失败。配置其实很简单,一个是打开NTP,另一个是验证同步状态:
timedatectl set-ntp yes chronyc sources -v第二,主机名和IP规划。部署前把每台节点的主机名、管理IP、存储IP、业务IP全部写进一张规划表,上线后不要随便改主机名。像Ceph这种组件对主机名有强依赖,很多分布式集群在改主机名之后都出现过异常,重加节点的工作量让人欲哭无泪。
第三,设置好物理机重启后的虚拟机自动拉起策略。不要指望管理员在断电之后一台台手动开机,策略配置好,机房断电恢复后才能尽快恢复业务。这个策略在方案评审时也要写清楚,别等事故发生了才想起来。
5.3 业务迁移:先周边后核心,virtio驱动别漏了
迁移顺序上,原则是“先易后难、先周边后核心”。把非敏感、非核心的系统先迁过去练手,数据库和核心交易系统放在最后,给团队留出学习和调整的时间。
如果你有存量VMware虚拟机要迁到KVM平台,用v2v工具批量迁移即可。但有个问题特别容易漏:虚拟机里必须提前装好virtio驱动。没有virtio驱动的Windows虚机跑在KVM上,网卡和磁盘都走软件模拟,性能差到没法用。迁移前先把virtio驱动离线装进去,再走迁移流程。
物理机转虚拟机的P2V场景,重点是清点源机器的硬件依赖,特殊PCI设备、加密狗这类硬件往往没法虚拟化,要提前评估业务改造方案,不要等迁移到一半才发现关键设备无法识别,那才是真正的进退两难。
6. 常见问题与运维经验实录
6.1 虚拟机变慢:先查存储延迟,再怀疑超分
业务反馈虚拟机变慢,我排查的顺序是先看存储延迟,再看CPU超分,最后看网络。很多云平台“玄学卡顿”都出在存储层,而存储层的争抢又不那么直观,容易被监控面板表面的CPU空转误导向应用层排查。
判断标准很简单。FIO测出来的4K随机写延迟如果超过20毫秒,基本可以断定存储已经吃紧。CPU超分则是另一种情况——宿主机负载高、虚拟机数目多,虽然每个虚拟机CPU利用率看起来不高,但实际的调度延迟会明显增加。处理方式是降低超分比,对高负载业务开启优先级调度。
6.2 VXLAN网络不通:MTU和组播是两大罪魁
VXLAN环境下网络不通,排查路径是有规律的。第一个看MTU,VXLAN封装后包变大,如果物理网络设了9000,但虚拟机里还是1500,中间某个环节不一致,就会出现“大包不通小包通”。第二个看组播,VXLAN依赖组播或集中式控制器做MAC地址学习,网络设备禁了组播,跨主机通信就会时断时续。
排查时可以同时在物理交换机的镜像口和虚拟交换机的端口抓包,对比封装前后的报文,能在几分钟内定位到是隧道封装问题还是数据面转发问题。这个我在方案里也特别标注“务必在测试环境还原大包传输、跨主机迁移、广播风暴三类场景”。
6.3 存储运维:Ceph的“手贱”就是最大的坑
存储这块的运维经验,最核心的一条是别乱操作。Ceph日常不要随意执行rebalance和深度scrub,出现PG异常先观察确认原因,再决定是否干预。必须干预时先在非业务高峰期操作,并且提前评估数据重平衡对网络带宽的影响。有一次我就因为在业务高峰期手动调整了一个OSD的权重,结果触发了大量的数据迁移,把存储网络打满,被业务部门投诉了一整天。
容量水位是一个硬指标。分布式存储的容量使用率控制在70%以内,超过85%后写入性能会指数级下降,极端情况会触发保护性拒绝写入。监控系统要对容量水位设置两级告警,75%提示,85%警告,别等业务部门投诉了才知道存储满了。
我个人在这些年项目里最大的体会是:私有云建设最难的环节,往往不是技术本身,而是它要求网络、存储、系统、应用各条线的人真正对齐目标。传统IT环境里大家习惯把机器当私有财产来管,虚拟化之后,大家要重新理解配额、性能、可用性这些抽象概念,这种认知转变需要方案里提前设计使用规范和交付流程来支撑。所以,别把概要设计只当成技术文档来写,它其实也是你和管理层、和业务部门之间的一份“沟通契约”。先把机制想明白,后面踩的坑至少能少一半。