ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

私有云平台整体规划与架构设计:从资源池到高可用的实战指南

私有云平台整体规划与架构设计:从资源池到高可用的实战指南 前几天帮一家制造企业做私有云平台的整体规划从需求梳理到概要设计方案前后磨了一个多月。方案改了三版评审会开了四五次最后落地的架构和最初设想已经有了很大调整。回过头看很多坑其实都能提前避开。今天把这套设计思路整理出来给正在做私有云平台建设的同行当个参考。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虚拟机网络按标准1500VXLAN隧道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环境下网络不通排查路径是有规律的。第一个看MTUVXLAN封装后包变大如果物理网络设了9000但虚拟机里还是1500中间某个环节不一致就会出现“大包不通小包通”。第二个看组播VXLAN依赖组播或集中式控制器做MAC地址学习网络设备禁了组播跨主机通信就会时断时续。排查时可以同时在物理交换机的镜像口和虚拟交换机的端口抓包对比封装前后的报文能在几分钟内定位到是隧道封装问题还是数据面转发问题。这个我在方案里也特别标注“务必在测试环境还原大包传输、跨主机迁移、广播风暴三类场景”。6.3 存储运维Ceph的“手贱”就是最大的坑存储这块的运维经验最核心的一条是别乱操作。Ceph日常不要随意执行rebalance和深度scrub出现PG异常先观察确认原因再决定是否干预。必须干预时先在非业务高峰期操作并且提前评估数据重平衡对网络带宽的影响。有一次我就因为在业务高峰期手动调整了一个OSD的权重结果触发了大量的数据迁移把存储网络打满被业务部门投诉了一整天。容量水位是一个硬指标。分布式存储的容量使用率控制在70%以内超过85%后写入性能会指数级下降极端情况会触发保护性拒绝写入。监控系统要对容量水位设置两级告警75%提示85%警告别等业务部门投诉了才知道存储满了。我个人在这些年项目里最大的体会是私有云建设最难的环节往往不是技术本身而是它要求网络、存储、系统、应用各条线的人真正对齐目标。传统IT环境里大家习惯把机器当私有财产来管虚拟化之后大家要重新理解配额、性能、可用性这些抽象概念这种认知转变需要方案里提前设计使用规范和交付流程来支撑。所以别把概要设计只当成技术文档来写它其实也是你和管理层、和业务部门之间的一份“沟通契约”。先把机制想明白后面踩的坑至少能少一半。
返回列表