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

本文涉及的产品
云服务器 ECS,u1 2核4GB 3个月
云服务器 ECS,u1 4核8GB 1个月
云服务器 ECS,每月免费额度200元 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日志并进行多维度分析。
相关文章
|
6天前
|
Java Maven
Maven 自动化构建
Maven自动化构建确保项目依赖稳定性。当bus-core-api构建完成后,app-web-ui和app-desktop-ui自动构建。app-web-ui依赖bus-core-api的1.0-SNAPSHOT,同样app-desktop-ui也依赖于它。这种方式简化了多项目间的依赖管理和构建流程。
|
6天前
|
JSON 弹性计算 运维
深入浅出资源编排ROS:构建云环境下的自动化运维利器引言
**资源编排ROS是阿里云提供的自动化管理工具,通过声明式模板定义云资源生命周期,简化复杂IT架构的运维。它解析JSON或YAML模板,自动创建、更新资源,确保状态与模板一致。ROS用于环境一致性、故障恢复、成本优化,是现代云管理的关键,助力企业提升效率和成本效益。**
79 3
|
10天前
|
Java Maven
Maven 自动化构建
Maven自动化构建确保依赖稳定性:当`bus-core-api`构建完成后,依赖它的`app-web-ui`和`app-desktop-ui`项目自动构建。`app-web-ui`与`app-desktop-ui`都依赖`bus-core-api`的1.0-SNAPSHOT版本。
|
1天前
|
Java Maven
Maven 自动化构建
**Maven自动化构建确保依赖稳定性**:当`bus-core-api`构建完成后,`app-web-ui`和`app-desktop-ui`这两个依赖它的项目自动构建。`app-web-ui`引用`bus-core-api`的1.0-SNAPSHOT,同样`app-desktop-ui`也依赖相同的版本。
|
2天前
|
XML Java Maven
深入Gradle:初识构建自动化的魅力
深入Gradle:初识构建自动化的魅力
|
3天前
|
Java Maven
Maven 自动化构建
Maven自动化构建确保项目依赖稳定性。当`bus-core-api`构建完成后,`app-web-ui`和`app-desktop-ui`自动构建。两者依赖`bus-core-api`的1.0-SNAPSHOT版本。
|
4天前
|
机器学习/深度学习 运维 监控
自动化运维:提升效率与可靠性的关键
随着信息技术的迅猛发展,企业对高效且可靠的IT运维需求愈发迫切。本文深入探讨了自动化运维在现代IT环境中的重要性及其应用,从多个角度阐述了自动化运维如何提升效率、降低成本、减少人为错误以及增强系统稳定性。
|
7天前
|
Java API Maven
Gradle 自动化项目构建-Gradle 核心之 Project
Gradle 自动化项目构建-Gradle 核心之 Project
23 0
|
8天前
|
Java API Maven
Maven 自动化构建
Maven自动化构建确保依赖稳定性:当`bus-core-api`(1.0-SNAPSHOT)构建后,自动触发`app-web-ui`和`app-desktop-ui`的构建,它们分别依赖此API的不同版本。
|
11天前
|
运维 监控 容灾
构建高可用性运维体系的关键要素
在现代企业中,IT基础设施的稳定性和可用性直接影响业务的连续性和用户体验。本篇文章将深入探讨如何通过精细化的运维管理,建立一个高可用性的运维体系。从自动化运维、监控系统、故障排除到灾备方案,这些关键要素将为企业打造坚实的技术保障。