@gaoxiaoyunwei2017
2021-05-26T14:35:36.000000Z
字数 4131
阅读 1027
未分类
作者简介
王帅,资深稳定性工程专家。从事证券行业系统运维10+年,熟悉证券行业业务规则及系统运行特点,拥有丰富的交易业务系统运维、测试经验,目前专注系统稳定性运行研究、平台建设及产品设计领域,负责稳定性工程平台的产品研究和运营。
王帅:大家上午好!刚才大家看了影片不知道有什么感想和期待?下面我们一起看今天的分享主题“保卫波特姆行动”,稳定性工程能力实践之路。我叫王帅,来自华泰证券,在华泰证券一直做系统运维工作11年,近几年一直在做稳定性工程能力建设,稳定性运行实验。右上角是我的微信,我们会后可以进行技术交流和沟通。
我今天分享的主题分为四个部分,包括业务稳定性分析、定平台能力建设、稳定性工程能力实践,最后是我们对未来稳定性平台建设和实践做一个展望。
首先我们来看一下业务稳定性如何进行理解。各行各业对我们的业务稳定性都有不同的理解,在我们证券行业如何来理解业务稳定性?可以从两个视角,第一是站在客户视角,如果我是我们的客户,希望行情更新快,交易快办业务一定要稳定,不卡顿。第二站在业务视角,如果我是运维人员,希望我的一业务功能和业务流程能够符合预期,顺利办理。二是大行情下,系统不崩溃,能够按照预期运行,最主要是没有收到系统的监控告警,一整天就可以安全多了。我们平时期望的业务保障场景有哪些?包括新功能上线。和业务关键时刻系统运行正常,性能容量水位不超限、首日顺利投产。
我们正常会通过监控关注首单的时间,而且通过我们监控的曲线实时关注曲线。首单没问题,系统交易状态也没有问题,接下来我们就要闯关了。包括9:15、9:25、9:30、13:00、14:57、15:00,在这几个时间段是我们的业务高峰期,而且是我们重点保障的时刻。我们这几个时间点都闯关成功,后面的系统能否经得住大容量或者大行情的挑战呢?我们通过实时监控渠道、集中交易后台业务水位。这些都没有问题,是否就没有问题了?不是这样的,做运维的都知道,人在江湖走,锅从天上来。例如外部线路、基础环境、外部业务节点发生变化,都会对我们的生产运营造成威胁。
实际上的情况是什么样?新业务首日,监控不全,无法及时感知故障。外部环境变化,业务系统被影响。火爆行情下,通过扩容等也做了很多工作,但是还是遇到了平时较难关注的性能瓶颈。日常业务的关键时刻,风险概率大,极易发生故障。对于业务的运维人员运行处置能力是极大的挑战。
这时候有可能锅就来了,外部环境的变化对我们的系统造成了一定的影响。根据我们的生产运营的经验,我们总结出威胁安全稳定运营的六大风险。第包括性能容量风险、功能缺乏风险、单点故障风险、数据丢失损坏风险、运维误操作风险、合规风控风险。
为了应对生产运维中遇到的六大风险,我们通常的做法是测试全覆盖,测试一定要全面。我来进行全面梳理后,无法识别变更风险。日常应急演练偏重演,无法真正提前发现系统风险、提升应急能力。
难道这样就没有问题了?不是这样的。我们日常也做了拓展,引入了混沌工程。大家都知道这个概念吗?不多说了。引入混沌工程以后,我们以战养战,找出我们的技术风险和解决方案。
后面我们来看一下华泰证券的稳定性工程平台。
包括故障发展能力、故障定位能力、故障处置能力,基于阿里商业AHAS CHaos实现故障注入。
阿里AHASChaos的优势,具有场景丰富,并且在各个领域,包括电商、新金融都有广泛的应用。
我们华泰定工程的功能架构,最底层汇聚了华泰内部的Agent监控、一体化监控、统一监控、应用CMDB、自动化服务。这边是演练管理,这是故障演练,后面是对演练自动化,我们演变完并不仅仅是演练,会形成演练知识库,对我们的用户进行演练推荐,并且我们也结合第三方系统开放接口,生成我们的演练报告,对系统进行稳定性评价。最上层是用户视图和演练空间,作右边是对第三方呈现的API开放接口,因为我们内部十五六个系统要和外部打通。
我们华泰证券在故障类型及故障构建能力规划方面,有以下能力。首先是基础设施故障,会有CPU内存等最基础的设施故障。向上一层是单点不可用,去年已经全部消除。第三是应用服务故障,包括进程、内存、CPU、JVM、服务调用等等。第四是云资源故障,第五是数据损坏,误删、丢失等等。最上层是业务卡吊死。我们的应急预案采用了公式型、可量化度量覆盖率的应急预案模式。早期采用抽样式演练,中期采用地毯式演练。
稳定性工程融入运维一体化体系,首先是应用CMDB打通,汇聚到稳定性工程平台。下面是故障输入,能够对接统一监控平台,来观测我们的演练系统和演练节点是否发生了监控报警,是否符合我们的预期。后面考验我们运维人员的应急处置能力,我们通过操作台的限流、熔断或者降级来进行服务。我们引入了统一测试服务台,会在演练的时候同时把业务的背景压力不断的注入,来进行生产的压测。后面是整个演练结束之后,我们会将演练结果报送给运营质量管理平台,对演练全流程进行了评价。看我们是否做到了四个第一,能否第一时间发展问题、处置问题、报告问题、第一时间监控到。最终对应的是应急管理的反馈,通过演练结束之后,把演练报告自动推送给应急管理平台。
为了降低我们的演练门槛,减轻我们的系统运维人员的学习成本,我们会提前预制我们的演练场景库,实现系统模块的机器关联。演练机房没问题,我们选择所有的机房也支持,选择几台机器也可以,同时也支持按随机选择机器,例如选择20%,这是随机的,不会说前面不会演。通过打通CMDB,一键批量生成演练任务。避免有一个节点遗漏的情况。
面向应急,我们构建了故知识库,我们会提供监控告警、应急预案、应急处置三者的关系,我们演练结束会自动形一条故障知识库。我们会和应急处置进行关联,知识库谁来创建谁来确认,都会有关系。
我们演练的最终目的是面向改进,无度量不改进,我们通过量化评估完成了系统的稳定性评价,同时也完成了监控告警的覆盖度评价。
大家可以看一下,后面都是系统间的对接串联。最终我们会完成故障处置之后应急预案覆盖度评估。为了更加准确的评估应急预案的稳定性,我们开辟了五个部分。从这五个方面对我们系统进行整体的稳定性考核。
为了提升我们的易用性,我们对演练爆炸半径进行了可控可视化,根据业务特点,我们建立端到端的实时感知体系,行情、交易、帐户的一体化监控,监控故障演练期间业务表现。最终我们实现了从客户端到后台服务接口全链路的监控体系,大家看,这边是一个我们内部的公众号,这边是业务场景,最终上升到系统模块。
基于我们的稳定性工程平台的能力,我们做了实践,开展了保卫波特姆行动。之前我们建立了稳定性工程模型,演练模型化、体系化。我们通过构建故障演练模型,创建了故障场景矩阵,而且我们在演练过程中也对运维联动情况进行考核评价,最终把近三年真的产生的故障事件进行回放。
我们根据生产的运维经验,总结出来三个典型的业务故障场景,比较通俗的说法是卡吊死。业务卡顿,客户的所有请求都可以被连续处理,但响应的时间标准差比较大,但基本上没有超时出现。吊是系统进程、端口正常,系统响应部分超时或全部超市,长时间无应当或超时重试。最后是死,系统业务进程已不存在,客户的服务请求很快得到反馈。
根据我们的保卫波特姆行动的初心,我们做的故障的演练地毯式覆盖。大家可能对对什么叫保卫波特姆行动有一个疑问?我们做了一个底线,一定要守住我们的运维底线。我们从应用资源、通讯链路、数据、负载均衡和域名都做了覆盖。我们有确定的演练日期和模块以及后面的节点。
为了对我们的稳定性工程或做一个可控的可视化,我们建立了稳定性工程活动看板,通过它能够实时感觉到,看板是开放的,同时我们看到已经做了哪些演练,是否有问题。这边是演练发生的问题,问题分三类,包括业务线问题、平台优化新需求、个性化需求的诉求。最左边是我们演练过程场景的报表,中间是正在演练的,为什么把它放在中间?因为我们演练中也是为了安全,上面是故障未恢复的场景列表,我们不能说因为演练造成了生产故障。右侧是未来的演练趋势,这边都可以一目了然。
怎么样保卫波特姆行动?我们建立了稳定性工程文化运营。首先在演练之初,我们开启了演练启动会,对演练计划和演练范围进行了启动。每天通过系统会自动导出我们的演练报告,我们会对每周的演练数据进行分析,发现哪些系统会经常发生演练业务线问题。第四是以后通过部门的安全生产行动,将演练稳定性工程对接系统全覆盖。后面是对所有的生产事件做季度的质量分析报告,从中吸取我们的教训,哪些系统容易发生故障,为什么发生故障,发生什么类型的故障,能否提前发现或者提前消除,都会进行分析。最后我们会评选在本次演练过程中的季度的保卫波特姆行动大使。我们有平台业务和业务链的同学,我们会正向激励大家参与到我们的演练过程中。
我们通过演练行动取得了一定的效果,我们覆盖了交易、行情、资讯、帐户4大核心业务线,包含27种典型故障场景,完成平台化故障演练750次,3331个场景,发现23类技术风险,发现了潜在隐患,我们针对每个隐患做一个解决方案,一共落实了272个改进项。通过保卫波特姆行动我们发现这么多风险和隐患,如果没有这个行动是否真的有可能发生这些故障事件?
刚才和大家分享我们平台的能力和实践,以及未来我们将要在一下领域做探索和继续研究。
第一是双随机演练,就是随机场景,随机时间,演练场景和演练时间不是由运维人员控制,而是由第三方小伙伴控制的,通过手机或者平板都可以使用,管理者随机进行触发,目的是来实时检验系统的稳定性运行能力和运维人员的保障能力。第二是红蓝对抗,刚才林英老师讲过了,我多不阐述了。第三是系统定能力可视化,我们从故障注入到故障处置、故障恢复,看系统稳定性到底怎么样。第四是对架构风险进行自动感知,我们通过架构分析会给你推荐一个演练路径和演练故障场景。最后结合我们华泰正在开展的AIOPS项目进行演练推荐,通过我们的AIOPS学习故障演练场景一个知识库,未来给运维人员做一个自动场景演练,做到最大的覆盖范围,因为资源都是有成本的。
感谢今天的分享主题,各位小伙伴有什么问题?