QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

Geekbang 圆桌讨论:高效运维之路

  • 2015-06-18
  • 本文字数:4220 字

    阅读完需:约 14 分钟

在最近举行的 Geekbang 科技日“高效运维”专场活动中,触控科技运维总监萧田国、腾讯互娱运营管理中心总监刘栖铜、环信首席架构师梁宇鹏、UnitedStack 技术专家田双进行了圆桌讨论,就如何高效运维发表了自己的意见。

Geekbang:“我想知道在携程,知乎之类的事情发生以后,运维们在部署 IDC 机房的时候都会关注哪些参数或规格?”

梁宇鹏:实际上来讲,在我们这边我们的技术改进是一直在持续进行的,并没有受到它事件的影响。我可以讲一下我们这边部署的话,你说的规格,我理解是云服务器底层的设施,因为我们使用的是云,也可能有基础设施这部分的工作,后面哪位聊一下就行了。我们正常的大部系统,今天我们讲运维成熟度模型,还没有服务,甚至工具化、自动化在完善的过程,这里没有太多跟大家分享的东西。

刘栖铜:其实说实话,我到今天还不是很清楚说,咱们这次携程,知乎这个比较新还没有时间看,携程到底是什么原因,我今天还不是很清楚。但是就这个问题来看的话,我们以前可能有类似的例子,因为我们是自己的 IDC,也是自己去部署,包括机器选型也是我们自己做,但是因为腾讯在底层这块专门有 TEG 这么一个团队专门去做底层的 IDC 包括网络这块。对于我们运维团队来讲,我们可能涉及到 OS 方面的参数的调整,可能以前我们也碰到过,因为系统参数造成我们的服务,比如进程数的瓶颈等等之类的,就是也碰到过这类的问题。

碰到这类问题,因为我们所有的环境设置都是服务器由 TEG 部署交付给我们,我们会把所有的环境设置做初始化,在那里面就会把问题的参数调整过来了,保证每一台拿过来的业务参数是最新的,都是吸取了之前的教训的。

当然回过头来,携程这次事件之后,其实我们也比较忐忑,我们也不知道原因,我们回过头查,包括我们的蓝鲸里面的发布系统里面的回馈机制,我们全部所有的业务都去核查了一遍,保证我们回退是有效的。因为携程这个事情我们之前听到很多传言,包括数据库的数据丢失,或者说因为发布系统造成所有的发布环境的数据全部被删除掉了,这种传言。我们针对这些传言在内部做了一些针对性的切合和梳理。

萧田国:我们觉得本次 5·27 支付宝事件后,对大家而言会关注 IDC 上传目录,看看它是不是真的有这种可用的主备链路,而且我们这些在使用 IDC,特别像网易,网易之前也出了一次很大的事故。同样我们最关注的,还是说是不是有两个或者三个机房互备的关键链路,而且保证机房链路是特别好的状态。这个可能是以后比以前更加关注的地方。

Geekbang:“能不能说一下白盒运维?”

田双:白盒运维我觉得从两方面入手:一个是首先开发人员会要求提供更多的监控参数,然后这样的话,会更早地发现这个问题。可能从运维角度讲的话,多去了解用户的需求,多去了解开发的需求,尽量把这个纽带建起来,尽量地加上更多可能的报警。

Geekbang:做公有云的,云平台有很多告警机制,比如发现问题的时候,会发短信、打电话各种告警,但是发现问题了怎么处理?

田双:首先看一下是什么问题,客户业务放在我们这边,我们能感觉到,只是说我们的主机问题,主要还是硬件方面的问题。因为我们是看不到用户到底在跑什么业务的,我们只能说是会给用户定一个级别,说什么样的级别会用什么样的响应速度,通过什么样的报警方式去通知用户。我们只能告诉他们说,这个服务现在大概到了什么样的状态,比如说存储用的已经达到报警预值了,或者内存跟历史来比的话不太正常,我们只能通过这种方式告知用户。

萧田国:一般我们提出的都是黑盒测试,白盒测试,白盒运维反正我听的不太多。我觉得说明的白盒运维,应该是说开发人员,研发人员试图更多的要对运维进行了解。既然想更多运维的话你就去学呗。基本的 Linux,特别是以后当很多部署是基于 docker 的时候,你自然也要去学各种东西。甚至有人建议,以后的系统的迁移,你从当前的虚拟机或者说物理机上迁上去,这个操作应该由开发部门去做的。

Geekbang:是不是大多数生产环境都跑在云上,虚拟机上,docker上,而跑在物理机上相对越来越少,或者说你们公司的情况怎么样的?

萧田国:对一般公司而言的话,它还是有大量的核心业务是跑在物理机上的,那些新的业务和以前的业务并没有耦合,这个时候会选择云,不管是私有云还是公有云也好。

Geekbang:你们在运维这些问题的时候,比如说你们自己开发可能会有哪些测试,或者哪些手段?客户用你的服务的时候你们会有哪些建议,你们是怎么做的?

刘栖铜:首先白盒运维是第一次听到。我想白盒测试是不是不止是从程序外部来看,而是通过程序内部逻辑持续监控和及时发现问题点,可能是这样的概念。如果是这样的概念的话,在腾讯可能有两种方式:第一种,腾讯自研的业务,像互联网社群,它们的框架里面就已经包含了很多监测点,比如说有模块建调用的成功率,还有响应速度这些指标。这种就比较好去监测内部的逻辑。

还有互娱遇到的情况,像有些是代理的,代理的对我们来说是没有源码的,我们也不清楚里面具体的逻辑,因为开发商不会有完善的文档告诉我们逻辑。所以这里我们有接入标准,这里面有一部分叫做可运维性的评估。这个可运维性评估包含了,我们会要求说开发商开发的这些程序里面,在关键点上一定要有日志输出,我们通过这个日志输出检查内部的逻辑,是不是有故障,有问题,通过这样的方式去及时发现腾讯的问题点。

Geekbang:像游戏用户分布到全国各地,你们有没有遇到跨区域出现的问题,你们有没有运维的解决方案?

梁宇鹏:还是先理解一下白盒运维的事情。我理解黑盒运维,可能是说运维不知道在干什么,它只知道是否在运行。白盒运维的时候,可能你需要知道这个程序到底在干什么,然后它的每一步对资源的消耗是怎么样的。这里都称运维了,为什么分白盒和黑盒呢?我觉得这是一个理念问题。在我们这里推行的理念是开发人员接触的服务器部署越多越好。

刚才说可运维性,这个是慢慢提高的过程,如果你发现这个问题要解决就把它完善,工具化,后面的运维就可以操作了。我们这边的原则,是只要开发能登上服务器,进行一些操作,操作完一遍之后,剩下的事情就是运维的了。不管我是去连到一台虚拟机上,写了几行代码也好,还是我直接通过一个 Rest 接口调一下这个服务,只要我开发能到机上去做,剩下的第二遍,第三遍就是运维的事情了。

从这个角度来讲,可能我们不要界定自己能做什么,不能做什么,或者非要说清楚,这个到底是白盒还是黑盒?我们还是回到我们最开始的,作为一个技术团队整体地来思考,只有这部分跟运维相关就做,跟开发相关的就开发做,我倒不太区分白盒还是黑盒。

Geekbang:“什么情况下或者怎么才能避免出现像携程这样的,因为携程官方发布的是误操作。他说怎么避免这个误操作的发生?”

梁宇鹏:误操作,刚才举的例子,大家都会遇到很多,各种误操作。我这边觉得只要是人就会误操作,你能做的事情就是让它工具化,没必要的人不要上去。你要看日志,我日志搜集起来给你,剩下的事,正常来讲都不应该需要更多的人来参与,首先把人数降到最低。如果你真要上去,那就是工具的问题了。当然刘总上升到更高的高度了,工具的问题等会儿他会介绍,我就不说了。

刘栖铜:梁总说的很对,对于误操作,我们尽量让少的人操作,这样风险就越少。就像梁总说的是人都会有误操作,即使有工具,就算工具简单到在里面填一个数字,比如填 200,我不小心打成 2000 了,这个都可能出现比较严重的后果。对于这种情况怎么规避呢?

当我们已经工具化的时候,对于这种还可能出现的误操作,我们采取的措施是:刚才权限说了,这是最基础的,除了这个之外,第一,我们操作还有一些超限监测,当监测到是超限,非常不合理的时候可以拒绝这个指令,把问题反馈过来,这个就是避免非常严重的后果。当然这个超限还是会有一定的范围,比如我刚好打错了没有超限,这个时候怎么办呢?

我们想还是从人的层面解决问题,当然不是让人审批,像我们在蓝鲸里有一个防误操作,这里面说起来很简单,比如说我们要求所有的关键操作的输入,一定要有输入框的弹出确认的,而且这个输入框弹出确认是有时间限制的。而且输入框按纽的位置还会颠倒。就是当你输这些数字的时候,会要求你二次确认,大家知道二次确认很多时候都是一点就去了,都不会看看,我们是说通过系统的设置,强制操作人能看以下自己的这个操作是不是有效。

当然,还有一种,就是两个人同时确认才能进行操作。这种我们用的非常少,这种除非是非常非常关键的那些我们才会用,因为这种会严重的增加我们的投入成本,降低我们的效率。这种双人确认的机制,在某些关键场景我们也会用。所以我们是这几种方式,减少误操作出现的几率的。

当然我觉得误操作不能避免,这是系统性的事情,除了刚才说除了工具层面解决,还有刚才说的人员层面。所以我刚才在分享的时候有篇幅比较多的讲,说我们对人为失误的低容忍,这就是为了,首先做运维,至少我们自己要有一个比较强的意识,就是人为失误,我们尽量从意识上规避。当然我们也理解,每个人都有打瞌睡的时候,所以在系统上尽量减少措施。

萧田国:这个观点在我刚才的演讲里都有,再讲一下,误操作有两类,一类是真的误操作,是无意的。像这些用刚刚说的,有一些权限,校验,或者两个人检查去做是可以的。但是还有一种误操作是有意的,或者说他就不爽了,有一个老大哥跟我说过,运维是需要关怀的群体。如果你有意误操作,让你整个系统都没有的话,你怎么办?你唯一的只能是多给这些员工一些关怀,不要让他走极端的事情。

Geekbang:之前做程序开发,可能是为了防止误操作,会写很多类,很多库,和API,像青云上也放了很多API,这个规范的目的就是为了防止误操作,所以我想问一下,从原来田双你们的角度,因为你是做公有云的,对客户遇到这种问题的时候你们会有哪些建议?

田双:误操作大家确实都遇到过,就像刚才几位老师讲到的,我们只能尽力去避免,然后我们这边能做的不多吧。

Geekbang:就是说在云不上开发东西,像环信做的SAAS层的,像就开放一些API,能不能避免这种误操作?

梁宇鹏:我举个例子,我们是用云服务的,但是我们的负载均衡也是服务,负载均衡的权重调整可能会有这样的问题,如果在你们实现负载均衡权重 API 时是不是有限制?还有不是怎么做呢?

田双:负载均衡这方面,我觉得软件层面的限制,像配置方面限制的话,这个可能跟各个业务有关系吧,只是说我们如果要做的话,只是会提供一个模板,具体到底怎么限制,包括权重要做一个人为限制的话,我们应该只能提供的是一个模板。

Geekbang 的微信号是 geekbang01,读者也可以扫描下方二维码来关注。

2015-06-18 20:491484
用户头像

发布了 501 篇内容, 共 259.9 次阅读, 收获喜欢 61 次。

关注

评论

发布
暂无评论
发现更多内容

未来智安2周年 | 行则将至,未来可期

未来智安XDR SEC

使用Python的requests库爬取网页表情包

何极光

Python 10月月更 爬虫案例

JavaScript刷LeetCode心得

js2030code

JavaScript LeetCode

华为云网站安全解决方案,站在企业安全的最前沿

科技之光

嵌入式 Linux 入门 环境篇(一、开发板初体验)

矜辰所致

Linux 开发板 启动流程 10月月更

Flowable 服务任务执行的三种方式

江南一点雨

Java spring springboot flowable JavaEE

华为云同步科技信息端,海量存储性能

爱尚科技

华为云

鏖战 48 小时,TiDB Hackathon 都诞生了哪些硬核创意?

PingCAP

TiDB

Go | 基本数据类型的相互转换

甜点cc

golang 学习笔记 10月月更

Linux网络-HTTP协议

可口也可樂

Linux 网络协议 HTTP 10月月更

训练大模型的九大深度学习库;谷歌转向文字→视频生成的两大利器|AI系统前沿动态

OneFlow

人工智能 深度学习

启科量子 QuBranch 正式开源

启科量子开发者官方号

量子计算 编程工具 启科量子

算术四则混合运算表达式的求值

可口也可樂

算法 10月月更 四则运算

JavaScript刷LeetCode模板技巧篇(一)

Geek_07a724

JavaScript LeetCode

华为云焕新数字生活,打造情景化智能产业链条

爱尚科技

华为云

完整议程 | 2022 XDR网络安全运营新理念峰会

未来智安XDR SEC

网络安全

一文带你走进C++【内存泄漏】

C++后台开发

c++ 后端开发 内存泄漏 Linux服务器开发 C++开发

覆水也可收, 破镜可重圆! EasyRecovery帮你轻松找回丢失数据

淋雨

数据恢复 EasyRecovery

闻道Go语言,6月龄必知必会

有态度的马甲

“程”风破浪的开发者|C#下WPF中实现贪吃蛇小游戏(超详细步骤附带源码)

木偶

C# 学习方法 贪吃蛇 10月月更 “程”风破浪的开发者

C++中的四种类型转换

可口也可樂

c++ 类型转换 10月月更

认识VueCLI和Vite🔥

渔戈

前端 Vue3 10月月更

「云渲染」渲染农场的架构原理、特点

Finovy Cloud

架构 原理 云渲染 云渲染农场

华为云加固企业网站安全堤坝,助您业务稳定流畅

科技之光

个人和初创企业想要搭建网站,如何挑选一台便宜合适的云主机?

京东科技开发者

云主机 网站搭建 测评 性能评测

校园大赛 | 数云融合 叩响未来——神州数码集团2022年校园大赛火热开启!

科技热闻

蒙牛前数科部总监刘瑞宝分享蒙牛数字化转型成果-星策社区大咖说(一)

星策开源社区

决策 智能化转型 数据链路 蒙牛

深入浅出来谈谈webpack🔥

渔戈

前端 Vue3 10月月更

启科量子可视化量子编程——QuComposer

启科量子开发者官方号

量子计算 可视化开发 启科量子

大咖说·小码王|人工智能时代,如何让孩子掌握与机器交流的语言?

大咖说

人工智能 阿里云 降本增效

Vue3组件开发之:父子组件之间的通信方式🔥

渔戈

前端 Vue3 10月月更

Geekbang圆桌讨论:高效运维之路_DevOps & 平台工程_崔康_InfoQ精选文章