尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

华为云Stack计算节点扩容与缩容实战:从CMDB配置到资源上线全流程

华为云Stack计算节点扩容与缩容实战:从CMDB配置到资源上线全流程 先说个结论华为云Stack扩容这事儿真正麻烦的不是控制台上点“添加节点”那一下而是点按钮之前的一堆准备工作和点完之后的一堆验证动作。我接手过的扩容项目里十次有七八次的故障都出在CMDB配置不一致、网络规划遗漏、节点硬件差异这些“看起来不起眼”的地方。这篇就把我从CMDB配置到计算节点增减容的全过程捋一遍该避的坑一个不落。这篇内容比较适合正在做私有云运维、准备给华为云Stack加计算节点、或者被缩容任务搞得头疼的兄弟们。不管你是刚接触云平台的新手还是已经管过几百台物理机的老手按这个流程走能少走不少弯路。1. 扩容这件事的底层逻辑先想清楚再动手1.1 扩容需求的真实来源与触发条件扩容不是突然想起来了才做的它背后一定有一套明确的信号。最常见的触发条件就三类一是资源水位告警比如某个计算集群的CPU平均使用率连续一周超过70%或者内存分配率超过85%再或者存储池容量接近上限二是业务侧有大促、重大项目上线提前评估需要多少资源三是故障替换后需要补回冗余比如一台物理机损坏下架集群整体冗余度不够了。这里有个容易被忽略的点很多运维团队只看单个指标比如只看CPU结果扩容完了内存又不够。实际上扩容评估要做的是多维度的水线测算CPU、内存、磁盘IO、网络带宽都要看。我习惯把每个计算节点的资源使用情况拉出来看而不是看整个集群的平均值因为有时候平均值还可以但某几台节点已经快被打满了这种不均衡会直接影响扩容后的效果。1.2 为什么优先考虑计算节点扩容计算节点扩容是整个私有云扩容里最频繁的操作原因很简单计算、存储、网络三大类资源里计算资源最容易被业务快速消耗。一台物理机的配置再高也就是固定的那几十颗vCPU、几百GB内存业务虚拟机一多资源池很快就空了。相比之下存储扩容通常走分布式存储加盘或加存储节点的路径网络扩容一般靠调整VLAN、加互联带宽或者升级网关规格这些操作的频次和复杂度跟计算节点扩容不是一个量级。所以当你的华为云Stack计算资源吃紧时最直接、性价比最高的方案往往是加计算节点而不是动存储或者网络架构。但计算节点扩容有个前提就是你的云平台版本要支持节点的水平扩展。华为云Stack的架构从底层就支持这种模式在控制面容量允许的情况下往资源池里加计算节点是可以做到业务无感的。需要注意控制面本身的容量管理节点、控制节点的CPU和内存如果本身已经是高水位先扩控制面再扩计算面别搞反了顺序。1.3 扩容前必须完成的容量评估与方案设计容量评估这事不能拍脑袋。我在项目里一般按这个流程来先确定目标规格。收集现有虚拟机的规格分布统计出当前分配的vCPU总数、内存总数再看现有物理节点的超分比。华为云Stack默认的CPU超分比通常在1:1到1:4之间可以配置内存默认是不超分的。比如你现有100台虚拟机每台2vCPU、4GB内存那物理资源至少要200vCPU、400GB内存再加上平台自身开销和HA冗余余量实际需要的物理资源要在这个基础上多留20%到30%。然后是数量计算。举个具体的例子如果现有资源池已经分配了800个vCPU实际物理节点提供的总vCPU是1000核超分比1.25这时候想要再增加200个vCPU的容量按超分比1.25算考虑预留余量新节点至少要提供200乘1.25再乘1.3大约325个物理核如果单节点是2路20核的配置也就是40物理核那至少需要9台新节点。内存计算同理按不超分来算且要预留平台自身的开销一般每台物理机要预留16到32GB给Hypervisor和管理面。这个计算过程一定要写进扩容方案里因为后期验收的时候要用实际数据来验证是否达标。方案里还要明确网络规划、机柜位置、IP规划这些基础信息一份完整的方案至少应该包含资源池现状、扩容目标、节点规格清单、IP地址规划、网络连接方案、实施步骤、验证标准、回滚方案。2. CMDB配置扩容链路里最容易翻车的一环2.1 CMDB在整个扩容流程中的角色定位CMDB在很多团队里就是个资产记录系统谁用了什么IP、哪台服务器在哪个机柜仅此而已。但在扩容这个场景里CMDB的角色远不止记录这么简单它的核心价值是保证“配置事实”和“物理事实”的一致性。我做扩容前有一个铁律先在CMDB里拿到准确的节点清单和配置信息再动硬件。因为华为云Stack扩容流程里很多步骤是要靠配置文件来驱动的比如节点的IP、主机名、BMC地址、RAID配置、网卡绑定模式这些如果CMDB里记的跟物理机器实际的不一致轻则扩容任务报错重则把已经在线运行的节点配置冲掉。这类事故我见过不止一次。你在CMDB里要重点核对的字段包括节点序列号、BMC IP、管理IP、存储IP、业务IP、位置信息机房/机柜/U位、硬件规格CPU型号、内存大小、磁盘数量、固件版本。任何一个字段跟实际不符都要在扩容开始前解决掉。2.2 扩容前需要梳理的CMDB配置项清单我遇到不少次扩容因为CMDB信息不准被迫中止的情况。所以后来我习惯在扩容前做一次“配置数据核对”列一个清单出来逐项确认确认一项勾一项。下面这个表就是我现在常用的核对清单配置项必核内容容易出现的问题节点基本信息主机名、序列号、厂商型号主机名重复、序列号与实际不符网络配置BMC IP、管理IP、存储IP、业务IPIP冲突、网段规划错误硬件规格CPU型号、内存容量、磁盘容量和数量混插不同代CPU、内存容量不一致RAID配置系统盘RAID级别、数据盘RAID级别盘组策略不一致导致存储性能差异固件版本BIOS、BMC、网卡固件、RAID卡固件版本过旧导致节点无法被纳管物理位置机房、机柜、U位位置记录错误现场操作找不到机器归属信息资源池、集群、业务域错加到其他集群影响业务负载均衡这张清单打印出来每核对一项勾一项。在华为云Stack的环境里节点信息准确尤其重要因为平台纳管节点时需要读取节点的硬件信息来做资源池归类CMDB错了后面的自动化流程就全跟着错。2.3 开源CMDB适配云原生环境的新趋势聊到CMDB现在有个绕不开的话题传统的开源CMDB面对云原生环境越来越吃力了。以前我们管的是物理服务器和虚拟机CMDB的模型就是简单的“设备—IP—机柜—业务”这种层级关系属性字段固定关系链路不太复杂用一套开源CMDB完全够了。但到了云原生时代容器、K8s集群、微服务、PaaS组件这些新对象都是动态的一个Pod可能几秒钟就换一个IP传统CMDB那套静态字段加手动录入的模式根本追不上。现在比较新的做法是走“配置发现”路线用自动化采集工具定时扫集群自动更新CMDB中的实例信息再用标签体系替代传统的固定字段。比如给资源打上“集群名”“命名空间”“应用名”这些动态标签查询的时候就靠标签去检索灵活得多。这就倒逼我们在做华为云Stack这类私有云运维时不要把CMDB当成一个一次性的录入系统而是要想办法让它跟云平台API对接。云平台上的资源池、集群、主机、虚拟机这些对象完全可以通过API自动同步到CMDB里减少人工录入的偏差。这对后续做扩容时的资源测算和变更评估非常有帮助。3. 计算节点扩容实操从硬件就位到资源上线的完整链路3.1 硬件就位与带外管理配置扩容的第一步是硬件上架和接线。这个环节看起来简单但没做好后面全是事。我在现场踩过最典型的坑就是网线插错口因为华为云Stack计算节点通常有多个网口分别承担管理、存储、业务平面的流量一个口插错了节点加进来之后网络就是不通的。上架时拿CMDB核对序列号确认这台机器就是要扩容的那一台。然后接好电源线和网线通电后第一时间配置BMC的带外IP。华为服务器的BMC默认IP通常可以通过前面板或者DHCP获取建议在装机之前就固定好BMC IP并确保能通过带外网络ping通。这一步把IP写好后面远程装机、远程排查都方便得多。上架完成后要在BMC里看硬件健康状态重点关注CPU、内存、硬盘、电源模块的告警。如果有硬件告警比如某块硬盘状态异常或者某个内存条报错别犹豫直接换件不要带病扩容。带病扩容的节点进资源池之后会变成定时炸弹后面业务跑上去了再出问题损失就大了。3.2 节点装机与基础环境一致性检查华为云Stack计算节点的操作系统安装通常是通过PXE或者自动化装机平台来完成的。在开始装机前关键是确认你用的安装镜像和现有集群的版本一致。华为云Stack不同版本的底层OS和内核版本有差异如果新节点的OS版本跟现网不一致轻则功能受影响重则节点加入集群后出现兼容性报错最后还得重装。装机完成后要做一轮基础环境检查我自己的checklist是操作系统版本和内核版本与现网其他节点一致主机名、IP地址、网关、DNS配置正确系统盘和数据盘的分区、RAID配置正确时区和时间同步正常NTP/chrony状态正常网络连通性管理网、存储网、业务网各自互通防火墙和SELinux状态符合平台要求关键服务如sshd正常运行这些检查项看着琐碎但每一项都可能成为后面扩容失败的元凶。尤其是时区时间同步我遇到过一次因为新节点时钟偏差太大导致节点加入集群后一直处于“亚健康”状态的问题排查了很久才发现是时钟没同步。3.3 平台纳管与资源池上线基础环境检查通过后下一步就是把节点加到华为云Stack的管理面里。这个过程在平台界面上的操作其实是“引导式”的你需要指定节点角色计算节点、所属区域Region/AZ、所属集群或者资源池平台会下发对应的配置并执行节点纳管和资源池扩容动作。这里有个经验正式在控制台操作之前先做一次“预检”。很多版本平台提供预检脚本或者预检功能它会自动检查新节点的硬件兼容性、网络连通性、OS版本匹配度等。预检不通过就不要往下走别强行操作不然后面报错排查非常痛苦。纳管过程中会出现一个关键参数计算节点的资源规格。华为云Stack会自动识别新节点的CPU、内存和磁盘信息但你需要确认识别出来的值与你CMDB里的记录是否一致。如果识别出的规格跟预期不一致大概率是BIOS里虚拟化开关没打开或者超线程被关了这些都要在纳管前处理好。节点纳入资源池之后还需要把节点上的计算服务如OpenStack Nova-compute对应的服务启动并注册到集群里。这个过程通常由平台自动完成如果失败可以看服务日志定位原因常见的原因包括网络不通、依赖服务未启动、证书或密钥不匹配。3.4 扩容后的验证清单节点加入资源池不等于扩容成功只能算扩容完成了一半。更重要的另一半是验证而且要用业务视角去验证不能只从平台视角看节点状态。我每次扩容完必做以下几项验证第一节点状态检查。在平台界面上确认新节点状态是“正常”或者“已启用”没有告警。第二虚拟机疏散与均衡性验证。在扩容后的资源池里创建几台测试虚拟机确认可以正常调度到新节点上。比创建测试虚拟机更贴近真实业务的做法是将已有的存量虚拟机做一次冷迁移让它落到新节点上验证新节点的计算、存储、网络全链路是通的。第三性能抽测。在测试虚拟机上跑一轮CPU、内存、磁盘、网络的基准测试把结果跟老节点上的同类虚拟机做对比数值差异在合理范围内才算正常。新老节点如果CPU型号不同跑出来的性能差异可能会非常大这需要你在容量评估的时候就要考虑进去避免把不同代CPU混在一个集群里导致调度不均衡。第四监控告警验证。确认新节点已被监控系统覆盖能上报指标、能触发告警。如果监控没覆盖这个节点就是“黑盒”出了问题你根本不知道。这张验证清单做完扩容才算真正完成可以安心把业务流量一点点打过来了。4. 计算节点缩容实操规模收缩时更容易踩的暗坑4.1 缩容前置条件判断不是想缩就能缩比起扩容缩容往往更让人头疼。扩容是往家里添东西缩容是往外搬东西搬不好就会砸到脚。华为云Stack的计算节点缩容核心约束条件很简单这个节点上不能有正在运行的虚拟机。听起来是废话但实际操作里节点上可能跑着几十台虚拟机你得确保它们都能被安全地迁移走。这里有几个前置条件必须满足一是目标资源池有足够的剩余容量接收迁移过来的虚拟机。你得先算一下目标节点的可用容量够不够容纳待迁移的所有虚拟机。如果不够缩容就是空谈必须先扩别的节点。二是虚拟机不能有“阻止迁移”的配置。比如有的虚拟机绑定了NUMA拓扑、绑定了PCI直通设备或者启用了CPU热插拔、内存热插拔这些特性它们无法被在线迁移。你得提前识别出来走冷迁移或者停机迁移的流程。三是存储网络要保持健康。虚拟机迁移本质上是存储数据的迁移存储网络带宽不够或者存储池性能不足迁移就会很慢甚至超时失败。还有一类特殊情况要特别警惕如果节点上运行的是管理面组件或者控制面组件比如控制节点上的服务这种节点通常不能像计算节点一样直接缩容需要走专门的变更流程把服务先切换到其他节点上再处理物理节点。缩容操作之前务必跟平台架构师确认节点类型。4.2 缩容执行流程与配置回收前置条件满足后缩容流程建议按下面的顺序走在CMDB中标记该节点为“待缩容”状态冻结新虚拟机调度到该节点。这一步很关键避免出现你一边迁移一边又有新虚拟机调度上来的尴尬情况。将节点上的虚拟机逐一迁移到其他节点。优先用在线迁移迁移过程中密切关注网络流量和存储性能。迁移完一台就在清单上勾掉一台。确认节点上没有任何虚拟机后在平台上将节点置于维护模式。维护模式下节点上的计算服务会停止接收新请求这是缩容的安全边界。平台执行节点下线操作。这个过程会停掉节点上的计算服务并从集群中移除该节点。物理下线。关闭服务器电源拔掉网线和电源线做好标签归档。回写CMDB。这是最容易被忽略的一步很多人缩完容就不管CMDB了导致CMDB里还留着已经下线的节点记录时间一长配置信息全乱套。正确做法是立即更新CMDB把节点状态改为“已下线/已退役”并把相关IP地址释放回地址池方便后续复用。4.3 缩容失败的回滚与应急策略缩容过程中最容易出现的问题就是虚拟机迁移失败。可能的原因包括目标节点容量不足、存储网络抖动、虚拟机存在特殊配置等。应对这类问题首先要确保有回滚预案。回滚的第一原则是节点上只要有虚拟机还没迁走就绝对不能执行下线操作。如果迁移失败先把节点从维护模式恢复让它继续提供服务再排查失败原因。在实际操作中我会在迁移前给节点上所有虚拟机做一次快照或者备份特别是数据库这类有状态业务即便目标环境运行正常救急的时候也有后悔药可以吃。这里再分享一个经验缩容最好选在业务低峰期操作而且要做好长时间操作的准备。我经历过一个节点上四五十台虚拟机的迁移存储网络带宽有限迁移持续了近十个小时。如果中途有任何一台虚拟机迁移失败整个变更窗口就可能被拉长到一天以上。所以缩容前一定要跟业务方确认好变更窗口别指望一小时搞定。5. 常见问题与排查技巧实录5.1 高频问题速查表做多了扩容缩容很多问题其实是反复出现的。我整理了一个高频问题速查表遇到同类问题可以直接对号入座问题现象可能原因排查思路与解法新节点无法纳管BMC IP不通、网络连通性异常先ping带外IP再检查交换机端口与VLAN配置节点纳管后服务异常OS版本不匹配、依赖包缺失对比现网节点的OS版本与软件包列表重装或补齐依赖节点一直显示“维护中”计算服务未正常启动登录节点检查计算服务进程与日志确认注册是否成功虚拟机无法调度到新节点新节点可用容量不足或标签不匹配检查资源池剩余容量确认调度策略与主机聚合配置在线迁移失败存储网络抖动、虚拟机存在迁移限制检查存储网络质量对受限虚拟机改走冷迁移缩容后IP复用出问题CMDB未及时释放IP严格按流程回写CMDB释放地址池新节点性能明显偏低CPU型号不一致、BIOS配置有误检查超线程开关和虚拟化开关核对固件版本5.2 三个让我印象最深的坑第一个坑CMDB主机名记录错误导致节点重复冲突。有一次扩容CMDB里写的主机名跟物理机器上的实际主机名不一致结果平台纳管的时候直接把另外一台在线节点的主机名给顶掉了导致那个在线节点的服务异常重启。从那以后我装机之后第一件事就是核对CMDB字段和物理机实际信息不核对完绝不继续下一步。第二个坑新节点固件版本过旧导致不可用。当时新到的一批服务器BMC和BIOS版本还是出厂默认的比现网节点落后了好几个版本。平台纳管时虽然没报错但节点在集群里频繁出现心跳超时业务虚拟机在上面跑得也不稳。最后把固件全部升级到跟现网一致才解决。从那以后我的扩容前检查清单里就加了一条固件版本必须与现网一致。第三个坑缩容时漏掉隐藏虚拟机。有次缩容界面上显示节点上只剩两台虚拟机迁完之后我就准备下线节点了结果执行到一半系统提示节点上还有一台“隐藏的”基础设施虚拟机。这台机器是平台内部组件不在普通的业务虚拟机列表里显示差点被我一并干掉。所以现在我在缩容前一定会反复确认包括查看底层数据库里的实例列表确保没有漏网的虚拟机。这三个坑的共同点是什么都是信息不一致导致的。不管是CMDB的信息、固件的信息还是平台界面上的信息只要有一个环节的信息跟实际情况脱节后面就一定会出问题。所以做扩容缩容最核心的素养就是“较真”每个信息都要验证到一致为止。6. 一点个人心得与长期建议做了这么多轮华为云Stack的节点增减容我最大的感受是扩容缩容本质上不是技术难题而是管理问题。技术操作都有文档可查真正决定成败的是你对现网信息的掌握程度和对流程的执行力度。我给自己定了一个原则节点信息不确定不动手容量估算不精确不动手回滚方案没准备好不动手。这三条看着简单真执行起来能挡住绝大部分故障。另外也建议运维团队把扩容缩容做成标准操作流程SOP沉淀成文档和脚本而不是每次靠某个人临时发挥。流程固化之后新人也能照着做老手也能把精力放到更复杂的架构优化上去。CMDB的维护更是要日常化不要等扩容前才来核对每周花一点时间做配置信息巡检成本远低于扩容时发现问题再返工。
返回列表