其他
作者钟炯恩——阿里云大数据基础工程技术团队运维专家01引言突破规模化运维瓶颈是诸多IT规模增长的企业及组织当前遇到的比较棘手的问题。面对这些问题,多数人的第一反应是上云。但是上云之后我们会发现,即使云上的架构规模增大,也依然存在同样的问题,有时候甚至更严重,因为弹性扩容的云服务器远比买一台物理机更方便,从而导致集群规模也急剧增加。那么,规模化运维为什么会遇到瓶颈?总的来说,规模化运维遇到的瓶颈可以分为三类,分别为稳定性瓶颈、成本瓶颈以及效率瓶颈。第一,稳定性瓶颈,这往往是我们最关注的点。对稳定性影响最大的因素是变更,由变更导致的故障占据70%-80%。因此,我们一般会通过严管变更来减少故障时间,进而提升系统的稳定性。这会导致出现一种微妙的平衡:如果限制变更的次数,则我们会选择将多个变更集中在一次变更里进行,而这会增加回滚的难度,从而导致单次的故障时间变长;而如果不限制变更次数来约束每个变更必须能够回滚,则我们可能会将一个变更分拆为多个变更,虽然出了问题可以立即回滚,影响小,但由于变更总量较大,最终系统的可用性会陷入瓶颈,无法提升。除此之外,在大规模集群中,在成千上万的机器里总会出现一些性能存在问题的机器,可能是硬件问题,可能是内核问题,也可能无法明确问题。而这些机器使得整个系统在某些性能或功能上表现出不明原因的不稳定,如果无法在第一时间抓住它,则会持续产生影响。以物理机为例,物理机的硬件日化故障率约0.03%,而在所有硬件故障中,有1%属于比疑难杂症,无法明确。如果机器保有量为1万台,则平均每月会碰到一例非典型的疑难杂症,影响业务。由此可见,在规模化的效应下,原本罕见的问题会变得常见。第二,成本瓶颈。在过去的一段时间里,这类瓶颈可能不太被重视,但是在降本增效的今天,这些问题变得尤为突出。热点机器是在分布式系统中常出现的问题,明明有大量可用资源,而流量却都打到一台机器上,导致整个集群性能低。而热点机器的成因非常复杂,可能是架构问题,可能是业务问题,也有可能是底层软件、硬件的问题。成本瓶颈的另一方面包括从预算到执行的精细化管理。如果是物理机,则需要考虑采购周期;如果是云服务,则需要考虑区分包年、包月、按次计费等计价模型,还需考虑不同区域费用单价的差异。如果无法很好地对上述问题进行管理,则会导致弹性弹得越猛,成本越高。资源使用的削峰填谷是成本方面需要解决的更高难度的问题。在空间维度上,可以用算法来计算如何减少跨地域依赖,从而节省成本;在时间维度上,可以通过白天运行应用服务,晚上运行离线计算来最大限度利用机器资源。第三,效率瓶颈。该类问题往往发生在人机交互之中。在全自动化的流程中,为了业务需要可能会配置特例化的人工干预节点,导致后续人工干预越来越频繁。那么,如何在业务定制和自动化的标准中保持中立、保持平衡?一个管理平台往往有非常多的功能和配置,配置是直接暴露YAML或json,还是提供可视化的人机交互,也是很大问题。如果提供很多可视化交互,可能会带来较高的开发成本;但如果直接暴露YAML,会存在由改动引发的问题。另外,某些小问题原本很好排查,但在大规模集群中可能需要串联上下游许多机器才能发现,导致排查小问题的时间开销也变得越来越大。那么,如何解决上述瓶颈中涉及的问题?经过大量实践,我们总结出了一套规模化运维的流水线。流水线里包含6大环节,分别是交付、监测、管理、控制、运营、服务。有了全链路图之后,我们可以按图索骥进行查漏补缺。对于已经拥有的能力,可以演进增强;对于尚未拥有的能力,可以用成熟的开源方案进行补位。上图展示了业界常见的开源方案对于上述6大环节中能力的支撑。●