B站运维团队成长的血泪史

胡凯,bilibili运维负责人,曾经就职于金山软件、金山网络、猎豹移动,负责运维相关工作。Bilibili是国内最大的年轻人潮流文化娱乐社区,银河系知名弹幕视频分享UGC平台。

95后二次元新人类的追捧,让以视频弹幕、UP主闻名于世的bilibili(以下简称B站)愈发火爆,无数年轻人通过电脑、手机、电视等终端设备在B站上追番、看弹幕,特别是新番上线时的访问压力是非常大的,这就给B站的IT运维团队带来了巨大压力。胡凯在去年加入B站刚刚成立的运维部,人少事多,遇到了很多坑。

本文根据作者在“监控与性能分享群”中的分享内容整理。

B站运维痛点主要有3个:人手不足、故障多、运维系统跟不上,针对这三个痛点,B站采用了三种方式进行破冰。


1、解放劳动力

目前B站的CDN主要是自建的,TB级带宽,视频存储也已达到N个PB,运维压力非常大。招人确实可以解决问题,但在上海这座魔都招聘合适的运维人员非一朝一夕能够完成的,人手不足怎么办?那就想办法把劳动力从繁杂的日常运维工作中释放出来。

由于之前没有专门的运维部门,IT系统的权限都在开发手上,出问题了以后运维总得跟在开发后面查原因,效率低不说,沟通往往容易出现问题。

所以我们第1步做的就是:用Ansible + Jenkins搞定自动发布。Ansible是相对简单的批量管理工具,支持模板管理等高级功能。搞定了自动发布,开发的服务器需求已经明显下降,只要把代码提交到 Git主干,就会自动触发发布。


Git使用的是 GitLab,同时为了安全我们做了一层LDAP代理,效果相当于“将军令”,操作机、Git和Jenkins用 OpenLDAP 做统一认证,后续用到的Redmine、Grafana、Zabbix 等都接入了OpenLDAP认证,每个人都有个动态口令,每次验证都需要用到。

2、一棒子监控告警系统

由于原始的监控不满足快速增长的业务,我们部署了开源监控系统 Zabbix,虽然运维同事能够很好的使用Zabbix,但其他部门同事总觉得易用性不高、而且很多定制化监控实现起来很麻烦。


然后,我们开始折腾监控系统——“一棒子监控”,为什么这么说呢,因为要把监控细化,不是一两天的事情。而B站的几乎所有请求都要经过CDN,入口在手上,出问题想知道还难吗?于是,我们在入口处做了监控,所有 5xx 的错误都打到ELK,那么无论是什么业务出问题了都会及时告警,让相关人员来处理,后续再细化。

另外,要把精力投入到最重要的事情上。我们可以花很长的时间去搞好Zabbix、Open-Falcon,但结果可能是 从80分 到 90分这种并不显著的效果,而很多监控并不是 Zabbix、Open-Falcon擅长的,不如打个差异战。

上图中有个 StatsD推荐给大家,StatsD可以非常灵活的嵌入到代码里进行监控(Shell都可以),因为使用UDP协议,所以服务端性能和故障不会影响到调用的程序,可以实现业务级的 QPS、响应时间等统计类监控。

其中一个报警最终的效果如下:


B站是自建CDN的,在国内有覆盖全国的好几百个CDN节点,CDN的监控一直是个难点,当某1个链路出现问题,用传统的Zabbix、Open-Falcon监控很难发现问题。虽然我们自研了Http-monitor监控,可用于网站的可用性监控告警,但考虑到独立资源和数据可靠性,还有用户端网络质量的检测,还是同时使用了第三方监控宝的服务。监控宝使用简单,功能实用,监控点多,分布式监控可以及时发现网络上出现的问题,提供的快照功能可以快速定位问题和查看详细信息。而且监控宝属于第三方独立的,还能出具网站的SLA证书,作为B站内部工作考核的依据。



3、开源系统的爱与恨


B站技术氛围浓厚,爱开源、爱新技术,所以使用了大量的开源组件,包括SheepDog(丢过数据)和GlusterFS(卡成翔),其中最大的坑是 SD卡 + Ceph存储。Ceph本身的设计非常好,但是姿势不对也会死很惨。比如B站的某套服务器集群用 SD卡来跑系统,结果 SD卡跪了导致系统也跪了,所有虚拟机的磁盘io都卡顿甚至死机,经过不断调优终于还是稳定了。Ceph给我最大的安慰是:它没有丢数据,没有丢!

此外,Redis3.0、Codis、Twemproxy等开源系统都在B站得到了使用,最后我们自研了 BiliTW(已开源),主要原因是 Codis现在没更新了,Twemproxy的性能比较差,特别是后端Redis多的情况下(而且它和Redis一样、只吃单核)。BiliTW最大的改进是支持多核,增加了一些易于运维的功能。

最后总结一下B站运维团队的成长过程:

由于人手不足,所以事情得挑着做;由于故障多,得先抓入口、抓大的;由于运维系统跟不上,得先拿开源的顶着;由于用了大量开源系统,所以踩了很多坑。


问:请问动态口令是怎么做的,自己开发还是开源auth?

答:用的是谷歌动态口令,开源的Google身份验证器。

问:Ceph部署到线上需要什么特别的处理吗?都遇到什么问题了?

答:Ceph要注意版本,一定要用稳定版,要用大厂用过的版本。另外 Ceph非常耗资源,B站全部用的SSD,Ceph的内部交换是独立的万兆网络。Ceph遇到最大的问题就是感觉Ceph成了分布式单点存储,都是几个节点、几个副本,大的kvm块存储集群有64节点的集群,数据3副本,解决起来很复杂,需要有爱研究,能看懂代码的人。

问:B站运维团队多少人?

答:去年是从0开始,目前20多人,包含应用、研发、安全、信息等。

问:GlusterFS这个存储用起来卡吗?

答:GlusterFS 我认为只适合做大文件的冷存储。

问:为什么不用Docker而用kvm

答:我们也用Docker,Docker一直有关注,但实际用的人不多,能用起来的都是投了很多资源进去的大公司。在 Docker 1.9.0 开始,我们把核心SLB跑在Docker上了,用Host方式。今年下半年,我们的一个大目标就是Docker接入其它线上业务。目前使用的Mesos Macvlan方式已经在踩水过程中。

问:Hadoop 相关的运维需要做吗

答:大数据也做,暂无专职人员。技术研究这块由于缺少专人,我都是给每个应用运维分任务。大数据就分给了一个应用运维在搞,和开发一起学习。

问:你们服务器网卡做绑定了吗?

答:我们全部做了双网卡的绑定,万兆bond0。

问:故障多,这种麻烦如何快速解决?

答:这个很难,一方面需要了解业务,二方面需要有数据和手段。刚开始我们查问题非常慢,后来逐步改进,比如完善监控,加故障锚点,故障总结。最近在做 Drapper 链接追踪,好多公司也都有做,实际上就是在请求的链接各个环节加标记,然后选择性做实时分析。Drapper最终实现的效果就像浏览器的审查元素一样,哪里慢一下就看到了。

问:mode0模式的话总带宽还是一个网卡的吧?我在测试mode=4,结合交换机的动态聚合,遇到的问题是服务器相互传输的话,带宽是一个网卡的速度。

答:Mode 0 最好在交换机上做下配置,带宽是跑2张网卡的,既能冗余,也能上量。我们自建CDN带宽很高,单台机器带宽就按20G准备。在猎豹用的是Mode4,也挺好的,Mode6不需要特殊配置,但有一个方向不均衡。之前测试Mode4效果最好,但公司最后用了Mode6,因为易维护。

关于带宽的问题,必须2个客户端向一个服务端同时传输才能达到双网卡带宽,以前测试mode0的时候遇到过跑不满的现象,后来就用了mode6。不过是好多年前的事情了,当时应该是CentOS5或6,现在B站用的是 Debian 8,Mode 0 并没有发现问题。

问:你们的Redis集群3.0稳定吗?

答:Redis 3.0 挺稳定的,它的 Java客户端会好些,其它语言可能得自己开发。这边语言很多,有些业务还是用 Proxy的方式在跑。我们正在开发一个Cache管理系统,最终会兼容各种方式,未来会开源。

问:BiliTW是https://github.com/anewhuahua/bilitw吗?

答:不是,这个是前同事做的,是基于Twemproxy 改的多进程版本。未来会重构一个新的,放在https://github.com/bilibili下面。

问:B站的云用的多吗?

答:内部相当于是私有云了,游戏业务用公有云多些。

欢迎大家投搞:lily.qi@cloudwise.com

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容

  • Zabbix简介 Zabbix官方网站Zabbix中文文档 本文系统环境是CentOS7x86_64, Zabbi...
    Zhang21阅读 7,951评论 0 37
  • 本篇文章内容来自第10期魅族开放日饿了么高级运维经理徐巍的现场分享。 编辑:Cynthia 大家好,首先,先简单介...
    Cynthia成阅读 513评论 0 3
  • 2017-2-17 晴 从小到大,我就有一个优势——很容易获得他人的信任,并且不分男女老幼,他们都很喜欢找我倾诉,...
    实干作品阅读 522评论 0 0
  • 有幸参加1月6日至8日的包子铺工作型ppt培训,收获颇丰。细节自不必讲,包翔老师以“道法术器”四个层面,谈工作型p...
    日午花影正阅读 238评论 0 0