写点什么

打造基于开源系统的公有云——文思海辉的 OpenStack 实践

  • 2013-11-22
  • 本文字数:2574 字

    阅读完需:约 8 分钟

鹏博士电信传媒集团是上海 A 股上市公司,通过收购北京电信通长城宽带等子公司,目前,互联网接入及增值服务业务已占到鹏博士业务总额的 95% 以上。2012 年底,鹏博士通过收购的北京息壤传媒文化有限公司开始对外提供公有云服务, 而支持这套公有云服务的软件是文思海辉的 HSCloud,一套基于 OpenStack 的云计算管理系统。到 2013 年 11 月,该公有云平台上的实例数已经超过了一万个。

为了对这个 OpenStack 用户案例进行更深入的了解,InfoQ 中文站编辑于近日跟文思海辉的云计算团队进行了沟通,包括文思海辉高级副总裁吴凯和多名主要的系统架构师。

计算资源数据

整个公有云目前用到的物理机在几百台的规模,分布在北京、佛山、香港等地的多个机房中,集群分布还在不断向各个主要国内节点的机房扩展。根据目前的增长速度,预测到明年将达到三万个实例左右的规模。

研发与运维

文思海辉在 HSCloud 云计算方面的团队,三分之二都是研发,其余的是运维和测试。运维方面,文思海辉负责远程的二线运维,一线运维由鹏博士 / 息壤的运维团队负责。

研发团队大约有一半做 OpenStack 本身的开发,主要用 Python。

研发团队的另一半专注于业务层面和前端控制面板的研发,同时他们也需要了解 OpenStack 的 API。因为业务层面涉及到的很多功能(如提供发票、退款、备案、针对不同渠道商的不同套餐定价等)是 OpenStack 项目本身所不具备的,所以这一层并没有用 Horizon 和 Keystone,而是自己用 Java 写的。据透露,微软 Azure 在国内落地,其业务支撑系统也是由文思海辉所开发的。

在这个 HSCloud 云平台上,文思海辉云计算团队对 OpenStack 本身的改动并不是很多——事实上,修改 OpenStack 核心代码是需要避免的,因为会导致后续难以升级。HSCloud 研发团队的工作重点在于搭建一个“隔离层”,将底层 OpenStack 提供的功能和上面的业务需求对接起来。隔离层做的事情很多,下面会逐步说明。

虚拟化方案的选型

HSCloud 之前基于 OpenStack Essex 版本进行主要扩展。最初选型的时候其实考虑过 CloudStack,不过因为觉得 OpenStack 的支持厂家更多,社区更活跃,在中国的 OpenStacker 人数又比较多,所以选择了 OpenStack。目前看来选择是正确的。

虚拟化方案主要是基于 KVM。VMware 方面,主要取决于 VMware 开放了哪些接口。目前在 vCloud 层之上进行管理是没有问题的。对于目前有这方面需求的客户,文思海辉提供的方案是两套系统分别运作,通过隔离层实现在一个界面里面管理两套系统。

IBM 小型机虚拟化方案也有需求,基于 IBM 对 Openstack 的大力支持,相关接口也已经逐步公开出来。

存储的选型

目前以本地存储为主。长期来看,吴凯认为本地存储的方案可以满足大多数的需求。

客户有共享存储需求的情况,EMC、NetApp、赛门铁克的存储方案都可以接入。基本上只要厂商提供的就可以用。此外,有一个监控录像存储的应用用到了 Swift。

共享存储主要是应对有迁移、虚机 HA、大数据类应用需求而储备,这方面文思海辉团队对 Ceph、GlusterFS、Sheepdog 和 Swift 都在进行测试,目前各种解决方案还各有优势。

此外,吴凯表示文思海辉正在跟国内的服务器硬件厂商合作打造自主品牌的 Pactera 云计算一体机,该方案采用了 GlusterFS 作为标配。

网络的选型

一开始上 Essex 版本的时候 Quantum 的功能太差,就是用 Nova,加上 iptables 和 ebtables 自己实现的伪三层软路由来解决网络隔离的问题。

下一个版本的 HSCloud 会上虚拟企业私有云(VPDC)的功能,是基于 Neutron 实现的,用上了 Open vSwitch,比较炫。

遇到的问题和解决方案

做一套公有云体系,很多挑战是业务上的。文思海辉认为将工作流与 OpenStack 结合起来,需要考虑很多东西。要确保运营商、渠道分销商、开发商等各个层面都能够获得利润,保证较好的最终用户体验,这一块需要比较多的思考。当然,还需要有足够的决心才能运转下去。

鹏博士公有云在发展到三、四千台实例的时候,其实遇到了一个很大的性能瓶颈。性能瓶颈来自于几个方面:

  1. 抢占资源经常出现,部分用户优先抢占资源造成其他用户性能差、网络慢
  2. OpenStack 本身的资源调度策略是比较傻的,可能会从比较远、比较忙的节点调度资源,导致网络慢
  3. 业务平台直接调用 OpenStack 的 RESTful 接口,调用多了之后遇到压力,响应速度慢

这就造成了很多客户停用甚至退款,用户增长出现停滞。由于 OpenStack 本身在网络隔离和 IO 隔离方面的实现不够成熟,单靠 OpenStack 本身无法解决上述问题,因此文思海辉研发团队采取了如下动作:

首先是计算资源隔离和流量控制。基于 libvirt 做 CPU 资源隔离本身是很有效的,CPU 忙其实很多时候都是 IO 等待所引起的。libvirt 对 IO 隔离支持的并不好,所以引入了 cgroups 来实现 IO 的控制,给每一台 VM 做了 IOPS 的限制。再加上给每台 VM 做网络连接数的限制,这一块的负载很快就下来了。在管理后台可以很方便的对指定的任意 VM 设置资源限制,这也可以用于在业务上进行高付费级别和低付费级别的客户的区分对待。

调度策略方面倒是不难解决,因为 OpenStack 可定制化是很强的,只要自己写一个调度策略,忽略掉默认的 nova.conf 就解决了。事实上,OpenStack E 版的快照、磁盘管理、迁移的功能都比较弱,也都是自己重写的。

至于业务平台跟 OpenStack 的对接压力,则是在隔离层做了重构,加入了 RabbitMQ 做消息队列。此外还加入了负载均衡,把 OpenStack 服务组件按照 Zone 进行了拆分,把负载分摊到多个集群上面。

另外,一体机方案也对 IO 和内存带宽做过优化处理,可以进一步缓解这方面的瓶颈。

经过这些处理和压力测试之后,吴凯表示这套系统再进一步支持到五万台实例也是没有问题的。

后续升级的挑战

从 2012 年 9 月到 2013 年 11 月,OpenStack 已经经历了 F、G、H 三个大版本。如果一直留在 E 版,那么新版加入的很多功能都难以用上;但是要从 E 版升级到 H 版本,相当于要跳跃两个大版本。在建立了自己的工作流之后,要进行这样的升级是比较麻烦的。有“隔离层”的存在,意味着只要新版的 API 做的事情还跟老版的一样,就不需要动业务逻辑而能够完成底层的升级,这方面倒是问题不大。

上面提到的一些快照、磁盘管理、迁移的功能,在版本更新后,有的模块自己改的更好用了,有的则消失了,这方面需要做一些整合。

对于平滑升级、持续集成这一块,文思海辉已经在新版本中考虑了相关机制,也欢迎业界同行交流解决思路分享实践经验。

2013-11-22 07:323661

评论

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

Elasticsearch和Kibana变更开源许可协议;Facebook利用AI增强为视障人士描述照片能力

京东科技开发者

云计算

毫不留情地揭开负载均衡的真面目~

田维常

负载均衡

智能building 之智慧城市

张老蔫

28天写作

开发的必杀技:Git 的分支管理

华为云开发者联盟

git Linux 分支

屏幕共享功能的应用

anyRTC开发者

android 音视频 WebRTC 在线教育 视频会议

云原生架构下复杂工作负载混合调度的思考与实践

星环科技

云计算

数据库覆盖式数据导入方法:部分和完全

华为云开发者联盟

数据库 sql 数据 DWS 覆盖式导入

2021年1月国产数据库排行榜:OceanBase重回前三,TDSQL增长趋势最强劲!

墨天轮

数据库

Kubernetes Pod篇:带你轻松玩转Pod

xcbeyond

Kubernetes pod 28天写作 Kubernetes从入门到精通 服务编排

红帽架构师:为什么KubeEdge是2020年我最喜欢的开源项目?

华为云原生团队

开源 云原生 边缘计算 边缘技术

【图文并茂,点赞收藏哦!】重学巩固你的Vuejs知识体系

我是哪吒

程序员 面试 Vue 大前端 Web

趋势预测:2021年五大流行的编程语言

禅道项目管理

Java php python 爬虫 趋势

【并发编程的艺术】内存语义分析:volatile、锁与CAS

程序员架构进阶

Java 架构 Java内存模型 28天写作

计算机网络学习第一课

落曦

从定义到AST及其遍历方式,一文带你搞懂Antlr4

华为云开发者联盟

Java AST 语言 antlr4 语法分析器

【年度重磅】2020华为云社区年度技术精选合集,700页+免费下载!

华为云开发者联盟

数据库 AI 云原生 物联网 华为云

娄底携手浪潮,打造了智慧城市建设的“娄底样板”

30+岁、没转管理、加不动班,我的竞争力从哪里来?

博文视点Broadview

八大案例带你了解图数据库如何洞察数据间关联价值

NebulaGraph

图数据库 图数据库实战

区块链养成宠物游戏开发动物世界app系统搭建方案

v16629866266

面试官常问的垃圾回收器,这次全搞懂

Silently9527

Java JVM 垃圾回收 GC

架构师训练营-大作业:物流系统架构设计

晴空万里

架构师训练营第2期

Android Styling System

Changing Lin

android

甲方日常 90

句子

工作 随笔杂谈 日常

使用 async_hooks 模块进行请求追踪

智联大前端

node.js 大前端 koa async_hooks

不可忽视的PHP数据精度损失问题

架构精进之路

php 七日更 28天写作

《Java 面经手册》PDF,全书5章29节,417页11.5万字,完稿&发版!

小傅哥

Java 面试 小傅哥 PDF 面经手册

并发条件队列之Condition 精讲

伯阳

AQS 多线程 lock Condition 条件队列

2021分享三面阿里:Java面试核心手册+Java电子书+技术笔记+学习视频

比伯

Java 编程 架构 面试 程序人生

第二周作业

Geek_6a8931

转角遇上Volcano,看HPC如何应用在气象行业

华为云开发者联盟

容器 云原生 HPC Volcano 批量计算

打造基于开源系统的公有云——文思海辉的OpenStack实践_语言 & 开发_sai_InfoQ精选文章