写点什么

UCloud 邱模炯:为什么内核是云平台稳定性的关键

  • 2014-09-24
  • 本文字数:3516 字

    阅读完需:约 12 分钟

评估一个云平台的 SLA,一般以可用性、数据可靠性为主要指标,而因为单机稳定性存在天花板以及云计算系统的集群属性,谈及云计算 SLA 时讨论的重点主要在分布式系统而非单机。但在今年 ArchSummit 大会上,UCloud 资深工程师邱模炯的分享《 Linux 内核在 UCloud 云平台上的实践》则主要着眼于单机上的云主机稳定性,UCloud 广泛应用的 Linux 内核热补丁技术可以实现宿主机不重启的情况下完成内核升级,从而避免对上面云主机的业务中断。

InfoQ 中文站编辑跟邱模炯进行了一次交流,了解 UCloud 关注单机稳定性背后的原因。

嘉宾简介

邱模炯,UCloud 资深工程师,2007 年研究生毕业于北京大学计算机系,之后分别在 VMware、腾讯工作过,目前供职于 UCloud。技术经历上以 Linux 内核、虚拟化技术和数据中心自动化运维等方面为主。热爱服务器和数据中心的各种技术,研发和运维兼顾,硬件和软件兼顾,底层和应用兼顾。

邱模炯是 2014 年 10 月 QCon 上海大会《扩展性、可用性和高性能》专场的出品人

InfoQ:云平台的稳定性是怎么定义的?它跟我们说的“可用性”是否是一个概念?它从整体的统计角度和从用户的角度,分别意味着什么?

邱模炯:稳定性和可用性两个概念本来是很接近,说说我的看法。

稳定性是指持续一段时间内一个系统不出故障的概率,也可以把它转化为“一段时间内系统有多少次故障”。

可用性是指一段时间内这个系统可以正常运行的时间是多少。

举个例子,比如说一个小时内一个系统出了 10 次故障,但每次故障只要十秒钟就恢复了,那么这一个小时就一百秒出问题。另一个情况是,我一个小时内出一次故障,这一个故障花了半小时。这两个谁更严重?从稳定性的角度来讲,前面一个更严重,虽然它故障的时间只有一百秒;从可用性的角度来讲的话,后面一个更加严重一些,因为一个小时有半个小时都不能工作。这是关于稳定性、可用性的概念。

这两个指标都是用户可以感知的:稳定性关系到给用户带来的打扰次数,可用性关系到用户的业务能够保持正常运行的时间。我们现在对云平台的可用性一般会设置一个量化指标,比如 UCloud 对外的服务,云主机的可用性是 99.95%,存储的可用性比如说是四个九、五个九。而另一方面,很少有人在量化指标里去提稳定性,大家更关心的是可用性的概念。

InfoQ:你们在内部,如何把稳定性目标转化为可监控、可量化的指标?

邱模炯:从研发角度来看,稳定性和可用性同样的重要。我们不能说把一次故障时间尽量的压缩,比如压缩到十秒内,然后我们就可以一个小时内打扰用户十次,这样对用户业务也同样会产生很大的影响。

稳定性这个指标以云主机为例,我们会统计它的宕机次数,宕机次数反映稳定性,相对于宕机累计的时间则反映可用性。

影响稳定性、可用性的因素,涉及到整个云平台技术方方面面。从上往下看整个云平台技术,首先是一个云管理平台——如 OpenStack 这样的平台,然后是虚拟化技术——也是云平台的一个核心技术,下面是 Linux 内核,然后是硬件——云平台最终是把数据中心的硬件、资源给池化,然后卖给用户,所以涉及到硬件技术。然后,我们这么多的硬件,我们的内核、虚拟化、云管理平台,我们要怎么样运维它。这些方面都影响稳定性、可用性,哪个环节做得不好都会导致稳定性、可用性的下降。

在这些因素里边,我个人认为内核技术是最关键的。为什么呢?内核是个承上启下的东西。

所谓承上,就是上面有云管理平台、虚拟化,而虚拟化技术跟内核技术也是紧密相关的。内核就像地基一样,地基不稳,上面就是搭空架子。

所谓启下是说,因为硬件有不可避免的故障率,总是会有问题,但是我们可以通过内核技术去降低硬件的故障率。我们还可以通过内核的工作去减少运维的工作量。比如我们在 UCloud 开发了热补丁技术,做到免重启修复内核。如果没有热补丁技术,每次内核升级不但运维非常痛苦,因为他要重启所有机器;而且用户也会被打扰,一重启,用户云主机就中断了。但是热补丁技术解决了这个问题:运维很 Happy,不用重启机器了,用户也很 Happy,他感受不到中断。

InfoQ:你这个观点挺有意思,因为一般我们听到的观点是说,云计算用分布式系统加上自动化的运维模式,去除单点,把底层故障对系统造成的影响隐蔽掉,这个关注点在于故障预测、快速的自动恢复。是什么原因造成你们的关注点不同?

邱模炯:你说的对,大家提到云平台,非常容易想到有个大的分布式系统,有分布式存储、分布式网络。

但分布式存储追求的是什么?我们平时为了提升性能,为了数据可靠性,往往通过分布式系统里边的一些技术,比如说通过写多份去避免单份失效,通过集群去解决总体性能。

但是云主机这个基础产品,在性能上面是单点:因为一台特定的云主机只能来自于一台物理服务器。

云主机在可用性上也是单点。分布式系统追求的是怎么样去避免单点故障,但是我们现在看到各种分布式技术里面,它没有办法有效地解决云主机这个性能和可用性单点。所以我们现在尽可能地去挖掘单台物理器的性能的极限,还有可用性的极限。

UCloud 的团队成员主要是来自于国内顶级的互联网公司,所以对于分布式系统方面非常有经验,大家想到的第一印象的东西——分布式系统、分布式存储、SDN 网络——我们已经具备深厚的技术背景,已经把这方面做得很好了。所以我们进一步要把这个事情从良好做到优秀,就要挖掘内核。我们越做,越觉得内核在这里边起到的作用非常关键。

你刚刚提到我们做内核工作是要去提升它的稳定性和可用性。我们做这些工作,追求的是:云主机永远不要宕机。听起来好像有点夸张,其实我们已经非常接近这个目标了。

云主机的宕机有几个因素影响:一个是内核不稳定,另一个是下面的硬件故障,主要是这两个。内核不稳定,我们有热补丁技术给它修复,宿主机内核还是云主机内核都可以。至于下面的硬件——特别是内存,内存是硬件宕机故障的大头,那我们通过内核技术把内存硬件故障给隔离开,避免它引发宕机。

我昨天还想了想,过去至少连续三个月,我都没有收到任何一起宿主机内核引发宕机的报警短信。

InfoQ:所以其实你们认为云主机完全不出故障是一个可以实现的目标?

邱模炯:对。除非出现一些不可抗力,比如说一个机房、一台服务器突然断电,那我是没有办法。

InfoQ:你在演讲中提到内核工作的第二个目标是提升性能,包括 IO 加速模块,将 IO 读写顺序化记入 Cache 盘组,然后获得 IOPS 的性能还是非常高的。但是它是不是可能会对数据可靠性有影响?你们做过持续很长时间的测试,它的表现怎么样?

邱模炯:我们不光是测试,我们已经在生产环境下面稳定运营了快一年,从来没有发现过可靠性的问题。相反,其实我们恰恰是从可靠性的角度来做这项工作的。

用户是我们的核心资产,UCloud 以用户为中心,从用户角度看待我们的产品。我们的研发、产品的工作都是围绕我们的用户而作的。

我们的用户需要那么高的 IOPS,怎么办?用 SSD。但是,虽然现在厂商认为 SSD 已经非常稳定了,过去还是发生过一些事件,导致 SSD 盘的数据丢失。SSD 盘数据丢失和我们平时那些机械盘数据丢失是不同的概念,SSD 盘要是坏了一个点,就有可能整个盘的数据没法恢复。所以说,我们是从数据可靠性的角度来做这项工作,不光是性能。

InfoQ:能有一个量级的提升吗?

邱模炯:数据可靠性有一个量级的提升,性能是两个量级的提升:对于 IOPS 机械盘一般是一百到两百,我们把它提升到两万到三万。

InfoQ:最后一个问题是有关内核人才这方面。国内的内核人才其实比较稀缺,而 UCloud 现在还算是一个初创企业。你们怎么去评估自己维护内核团队是不是划算这件事情?

邱模炯:UCloud 内核团队现在不到十个人。大家觉得不到两百人的公司为什么需要十个人的内核团队,是不是太多了?相反我觉得人数少了,应该再多一些。你想我们十人服务上万家客户,分给每个客户只有 0.1 个人,对不对。而我们的客户,他们也要追求稳定性,追求数据的可靠性,内核技术对他们也很重要。

大公司为什么需要内核团队?因为他们有很多的服务器。UCloud 也有大量的服务器,我们目前有万台级别的服务器。公司是否需要内核团队,其实是由服务器的数量、数据中心的规模,以及我们的客户是否需要来决定的。

国内的内核人才确实比较稀缺。现在我们收简历,能收到一大堆做分布式系统、或者做前端开发的简历,但是很少收到内核人才的,即使收到,也很少说对云平台有非常深的认识和钻研,因为云平台也很新。但内核技术对于云平台技术又非常关键,考虑到这个情况,UCloud 大概一年半之前就开始建内核团队,现在正在发挥非常重要的作用。

Linux 内核是开源的,UCloud 的内核成果从开源中吸取,从开源中发展。UCloud 不但掌握内核,而且发展内核,最终是希望把内核成果回馈给我们的用户,我们的业界同行。以后希望通过类似 InfoQ 的活动,把我们的实践与思考不断地反馈给大家。

2014-09-24 07:243068

评论

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

电子屏幕 or 风月宝鉴

mtfelix

手把手带你玩转 Spring

4ye

Java spring 程序员 内容合集 签约计划第二季

Flutter 浅尝 Flare / Lottie / SVGA 多种动画模式

阿策小和尚

28天写作 内容合集 签约计划第二季 12月日更

《网易公开课》也能被拿来练习python爬虫?离谱~

梦想橡皮擦

12月日更

Python Qt GUI设计:QTableView、QListView、QListWidet、QTableWidget、QTreeWidget和QTreeWidgetltem表格和树类(提升篇—1)

不脱发的程序猿

Python qt GUI设计 Qt Company 表格和树类

毕业总结

potti

架构训练营|大作业

Frode

「架构实战营」

《我和我的家乡》观后感

圣迪

如何设计微服务架构

天天向上

架构实战营

Android C++系列:Linux线程(一)概念

轻口味

c++ android 28天写作 12月日更

为什么愿意奉献?(4/28)

赵新龙

28天写作

工厂模式

李子捌

28天写作 12月日更

JavaScript数据结构之 Array

devpoint

JavaScript ES6 array 内容合集 签约计划第二季

前端开发: Vue封装复用思想的运用(其一)

三掌柜

28天写作 12月日更

使用ABAP编程实现对微软Office Word文档的操作

Jerry Wang

数据库 死锁 28天写作 abap 12月日更

日常开发的一点实践记录(合集)

为自己带盐

内容合集 签约计划第二季

给弟弟的信第3封|你幸福吗?

大菠萝

28天写作

电商秒杀系统设计

potti

3.《重学JAVA》—Hello World

杨鹏Geek

Java 25 周年 28天写作 12月日更

[Pulsar] Broker 消息分发

Zike Yang

Apache Pulsar 12月日更

在主流的linux发行版里安装redis

为自己带盐

redis 28天写作 签约计划第二季 12月日更

秒杀系统架构设计

guangbao

使用JDK自带的jmap和jhat监控处于运行状态的Java进程

Jerry Wang

Java jdk jmap 28天写作 12月日更

Android简介【Android专题1】

坚果

android 28天写作 12月日更

架构实战营 - 毕业设计

Alex.Wu

数据一致性

卢卡多多

数据一致性 28天写作 12月日更

为什么不要急着告诉孩子答案?

Justin

心理学 教育 28天写作

amazing

Nydia

【架构实战营】毕业总结与设计

聆息

git出现ssh: connect to host github.com port 22: Connection refused

ilinux

34 K8S之ServiceAccount及X509数字证书

穿过生命散发芬芳

k8s 28天写作 12月日更

UCloud邱模炯:为什么内核是云平台稳定性的关键_Linux_sai_InfoQ精选文章