带你读《CloudOps云上自动化运维 白皮书2.0》之20:3. 多个层面构建可靠性

简介: 带你读《CloudOps云上自动化运维 白皮书2.0》之20:3. 多个层面构建可靠性

3. 多个层面构建可靠性

 

云作为基础设施,由于其规模效应积累了大量业务可靠性的经验,并通过产品化方式普惠到每个云上客户。在物理资源层,多地域提供了匀质的资源供给,方便客户根于业务、架构和成本选择最佳资源。

 

在SaaS层,提供企业级的免运维服务,业务可以按需方便集成到系统中,基本做到开箱即用。可靠性工程涉及部署方式、系统架构、应用拓扑和代码质量等多方面,除了在这些层面不断引入最佳实践进行探索,也需要工程化的方式对整体业务进行观测,并把混沌工程能力常态化引入到日常运行的业务中,做到提前、持续发现隐患,并常态化治理。

 

1) 构建多地容灾架构

 

对比于传统的运维,云厂商不仅提供了超大规模的数据中心,同时提供了全球多地域服务,每个地域是完全独立的数据中心,多个地域之间完全独立。而每个地域又有多个可用区,每个可用区之间电力和网络互相独立。云计算有天然的规模化和可靠性优势。

 

对于可靠性要求较高的应用,通常会做同城多机房部署,避免由于单机房的网络、电力等物理故障导致应用整体不可用。该场景下,在云上,用户可以使用同一个地域的多个可用区来部署,通过多个可用区的互通能力来完成应用间通讯,同时多可用区的物理隔离性极大提升了应用的容灾能力。针对多可用区部署的服务,云服务厂商不仅会在云资源的供给上提供物理隔离的多个可用区,同时也会开放OpenAPI能力来供用户查询并控制各个可用区可用购买的不同类型云资源,用户可用基于OpenAPI服务能力来构建自己的多可用区部署能力。

 

特大型的重要商业系统,对系统的容灾能力提出了更高的要求,同城多机房解决的是机房维度的单点问题,无法解决某个城市因为天灾人祸导致的城市级的故障。该场景下,在云上可以使用多地域部署,另外,多地域间物理距离适当远一些,避免单地域故障导致服务整体不可用,提升应用的极致高可用。对比于传统的IDC异地容灾方案,云天然的多地域支持会极大简化用户跨地域运营服务的成本。

 

对于高阶用户,云服务厂商会提供GSLB全球负载均衡以及对应的CDN服务来辅助支撑基础设施的高可用,也会提供自动化运维的Auto Scaling能力,用户可用通过配置Auto Scaling策略来实现自动化的多地域、多可用区自动化部署,保障服务基础设施始终处于高可靠性状态。

 

2) 数据备份和容灾恢复能力

 

云服务厂商在数据的高可靠性上具备天然的优势,不仅体现在存储的多副本,数据可靠性极高的SLA保障上,同时以服务化的方式向用户暴露了OpenAPI,用户可利用云厂商提供的快照、镜像等能力,实现数据备份容灾的高可靠性能力建设。

 

快照能力是云厂商提供的数据备份的核心产品能力,用户可使用快照进行系统盘、数据盘的备份,同时支持增量备份模式,帮助客户节约存储成本。快照支持手动备份与自动备份,推荐使用自动备份方式实现自动快照生成、轮转,对于特定业务场景,可以通过手动方式进行指定快照生成与保留时间,也可以设置为永久保留。当系统出现故障,需要将磁盘(系统盘或者数据盘)数据恢复到历史某一时刻,可以使用快照回滚能力,将指定磁盘回滚,通过快照数据的恢复能力,来提升数据的容灾能力。

 

同样,用户可用自定义镜像, 将快照的操作系统、数据环境信息完整的包含在镜像中。然后使用自定义镜像创建多台具有相同操作系统和数据环境信息的实例。对于多地容灾架构下,用户实现多地域部署时,可以使用镜像的跨地域复制能力来实现镜像备份的分发,从而实现多地域部署情况下的数据备份。


3) 应用可观测能力

 

为了帮助用户更快、更直观、更简单的发现系统内部问题,云服务厂商提供了完善的工具与服务化能力,用户基于此来构建不同层次的可观测能力,同时利用云厂商提供的自助服务来快速发现云资源、甚至自身业务服务的问题。

 

为了支持不同层次的用户需求,云厂商通常会提供以下几大类监控服务能力:云资源监控、应用层APM、业务层监控。

 

云资源监控应用依赖的底层资源监控,比如资源的CPU、内存、网络等指标的使用率等。通过基础监控,用户可以自助发现云资源发生的异常,这是可观测性最基础的能力。云厂商同时会提供云资源的诊断能力,用户可通过一键发起对云资源的诊断,来自助发现云资源可能存在的问题。更进一步,云厂商会提供运维事件能力,用户基于云提供的EventBridge事件总线,通过自动化编排能力方式感知到云资源的异常事件,并完成自定义的自动化运维动作。

 

应用层APM基于云资源部署的具体应用场景,包括应用指标性能(Metric)、系统调用链(Tracing)、日志监控(Logging)三个维度,比如应用的JVM指标、线程池监控、RPC服务的成功率、时延、错误率等。

 

业务层监控应用层监控数据一般通过pull/push方式在数据聚合服务上进行计算,产出业务指标数据。指标数据异常检测也是云上提供的一项基础服务,用户可以选择传统的曲线异动、同比环比异常,甚至高阶的智能基线对比的自动检测能力对业务进行监控。

 

云资源监控只能发现云资源的问题,对于部署在云上的大规模服务来说,应用层问题的监控和定位能力是更加复杂和困难的。

 

云上需要有应用维度的监控和定位能力,在应用维度具备标准监控能力,比如服务端应用运行时、线程池、数据库、中间件、接口调用等,在前端应用,具备从页面打开速度(测速)、页面稳定性(JS Error)和外部服务调用成功率(API)等维度监控页面的健康度的能力。从生态角度,这些能力要提供诸如Prometheus、Kubernetes等开源产品形态。

 

除应用监控外,云上链路追踪Tracing Analysis为分布式应用的开发者提供了完整的调用链路还原、调用请求量统计、链路拓扑、应用依赖分析等工具,可以帮助开发者快速分析和诊断分布式应用架构下的性能瓶颈,提高微服务时代下的开发诊断效率。

 

云服务厂商会通过产品以服务化的方式来提供日志服务,用户使用日志服务做日志、数据的采集与集成,并基于此做Logging和Metering。用户通过自定义应用系统的内容、格式,并通过日志服务收集,并在日志服务中配置自定义细粒度监控大盘,观测自身业务运行情况,同时配置预警体系,建设用户层问题发现与定位能力。

 

4) 弹性容错能力

 

除了在基础设施多地域部署、数据上多副本备份容灾能力外,云服务厂商通常也会提供应用服务的容错能力,帮助用户构建具备弹性、容错能力的分布式系统。

 

弹性容错能力分布式系统核心的两个弹性容错能力是流控与降级,通过流控来保护应用过载,通过降级来容忍业务部分有损换取整体可靠性。传统的流控方式是人工判断干预,高阶的方式是通过监控体系自动发现热点流量或者异常流量,自动化选择自适应过载保护或者设置自动降级策略并执行。

 

混沌工程与故障演练混沌工程(Chaos Engineer)是一种提高分布式系统弹性能力的工程实践,通过主动制造故障,测试系统在各种压力下的行为,在生产环境提前识别潜在的故障,避免故障真实发生。

 

故障演练是遵循混沌工程实验原理的实践之一,其建立了一套标准的演练流程,包含准备阶段、执行阶段、检查阶段和恢复阶段。通过四阶段的流程,覆盖用户从计划到还原的完整演练过程,并通过可视化的方式清晰呈现给用户。结合观测能力和预警能力,通过混沌工程来完成故障巡检、故障注入、以及系统稳态度量。

 

5) 全面分析方法:FMEA

 

设计出可靠性高的系统是一个复杂的过程,由于异常场景很多,只要稍有遗落就会存在隐患,根据墨菲定律“可能出错的事情最终会出错”,因此推荐使用FMEA方法对系统做一个全面分析。

 

FMEA(Failure mode and effects analysis)即故障模式与影响分析,具体分布步骤:

 

给出初始的架构设计图。

假设架构中某个组件发生故障。

分析故障对系统功能造成的影响。

根据分析结果(ROI),判断架构是否需要进行优化。

 


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
22天前
|
监控 jenkins 测试技术
自动化测试框架的构建与实践
【10月更文挑战第40天】在软件开发周期中,测试环节扮演着至关重要的角色。本文将引导你了解如何构建一个高效的自动化测试框架,并深入探讨其设计原则、实现方法及维护策略。通过实际代码示例和清晰的步骤说明,我们将一起探索如何确保软件质量,同时提升开发效率。
35 1
|
28天前
|
测试技术 开发者 Python
自动化测试之美:从零构建你的软件质量防线
【10月更文挑战第34天】在数字化时代的浪潮中,软件成为我们生活和工作不可或缺的一部分。然而,随着软件复杂性的增加,如何保证其质量和稳定性成为开发者面临的一大挑战。自动化测试,作为现代软件开发过程中的关键实践,不仅提高了测试效率,还确保了软件产品的质量。本文将深入浅出地介绍自动化测试的概念、重要性以及实施步骤,带领读者从零基础开始,一步步构建起属于自己的软件质量防线。通过具体实例,我们将探索如何有效地设计和执行自动化测试脚本,最终实现软件开发流程的优化和产品质量的提升。无论你是软件开发新手,还是希望提高项目质量的资深开发者,这篇文章都将为你提供宝贵的指导和启示。
|
10天前
|
数据库 Docker 容器
Docker在现代软件开发中扮演着重要角色,通过Dockerfile自动化构建Docker镜像,实现高效、可重复的构建过程。
Docker在现代软件开发中扮演着重要角色,通过Dockerfile自动化构建Docker镜像,实现高效、可重复的构建过程。Dockerfile定义了构建镜像所需的所有指令,包括基础镜像选择、软件安装、文件复制等,极大提高了开发和部署的灵活性与一致性。掌握Dockerfile的编写,对于提升软件开发效率和环境管理具有重要意义。
25 9
|
24天前
|
运维 监控
构建高效运维体系:从理论到实践
在当今快速发展的信息化时代,高效的运维体系是保障企业信息系统稳定运行的关键。本文旨在探讨如何构建一个高效、可靠的运维体系,通过分析当前运维面临的挑战,提出相应的解决策略,并结合实际案例,展示这些策略的实施效果。文章首先介绍了高效运维的重要性,接着分析了运维过程中常见的问题,然后详细阐述了构建高效运维体系的策略和步骤,最后通过一个实际案例来验证这些策略的有效性。
|
25天前
|
运维 监控 安全
运维自动化:提升效率与可靠性的关键技术
在信息技术飞速发展的今天,企业对IT系统的稳定性和高效性要求越来越高。运维自动化作为实现这一目标的重要手段,通过软件工具来模拟、执行和管理IT运维任务,不仅大幅提高了工作效率,还显著增强了系统的可靠性。本文将探讨运维自动化的概念、实施步骤以及面临的挑战,旨在为读者提供一份关于如何有效实施运维自动化的指南。
|
1月前
|
人工智能 运维 监控
构建高效运维体系:理论与实践的深度融合####
本文旨在探讨高效IT运维体系的构建策略,通过理论框架与实际案例并重的方式,深入剖析了现代企业面临的运维挑战。文章开篇概述了当前运维领域的新趋势,包括自动化、智能化及DevOps文化的兴起,随后详细阐述了如何将这些先进理念融入日常运维管理中,形成一套既灵活又稳定的运维机制。特别地,文中强调了数据驱动决策的重要性,以及在快速迭代的技术环境中保持持续学习与适应的必要性。最终,通过对比分析几个典型企业的运维转型实例,提炼出可复制的成功模式,为读者提供具有实操性的指导建议。 ####
|
2月前
|
运维 监控 jenkins
运维自动化实战:利用Jenkins构建高效CI/CD流程
【10月更文挑战第18天】运维自动化实战:利用Jenkins构建高效CI/CD流程
|
2月前
|
机器学习/深度学习 敏捷开发 运维
构建高效运维体系
本文旨在探讨如何通过技术创新和管理优化,构建一个高效、稳定且可持续发展的运维体系。我们将从自动化工具的应用、监控告警机制的完善、持续集成与持续部署(CI/CD)的实践、以及团队协作与沟通的强化等多个维度,深入剖析运维体系的构建过程。同时,文章将结合实际案例,分析运维过程中可能遇到的挑战及应对策略,为运维人员提供实用的指导和建议。
|
2月前
|
运维 监控 测试技术
构建高效运维体系:从监控到自动化的实践之路
【10月更文挑战第9天】 在当今信息技术飞速发展的时代,运维作为保障系统稳定性与效率的关键角色,正面临前所未有的挑战。本文将探讨如何通过构建一个高效的运维体系来应对这些挑战,包括监控系统的搭建、自动化工具的应用以及故障应急处理机制的制定。我们将结合具体案例,分析这些措施如何帮助提升系统的可靠性和运维团队的工作效率。
55 1
|
1月前
|
存储 运维 监控
运维技术深度解析:构建高效、稳定的运维体系
【10月更文挑战第22天】运维技术深度解析:构建高效、稳定的运维体系
209 0