阿里云飞天发布时刻,领先大模型限免,超7000万 tokens免费体验 了解详情
写点什么

打造基于开源系统的公有云——文思海辉的 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:323304

评论

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

【LeetCode】搜索旋转排序数组Java题解

Albert

算法 LeetCode 10月月更

华云大咖说 | 安超ArSDN云安全场景方案

华云数据

信创 华云数据 安超

刚上岸字节年薪60W的Java架构师,耗时半年总结的24W字面试手册

Java 程序员 架构 面试 后端

谁说GitHub才能出经典?出自牛客网的Java程序员逆袭手册才是YYDS

Java 程序员 架构 面试 计算机

Node.js 日志最佳实践指南

devpoint

Node console 10月月更

Prometheus 的 Metric 数据类型

耳东@Erdong

Prometheus 10月月更

想不到吧!这本字节算法大佬562页《算法中文手册》,在Gihub上排名第一!

Java 架构 面试 程序人生 编程语言

通关宝典!Java 面试核心知识让你面试过,过,过!

Java 程序员 面试 后端 构架

TypeScript 中的 Index Signatures

Regan Yue

typescript ReganYue 10月月更

字节总监毕生心血总结:收获,不止SQL优化抓住SQL的本质

Java 程序员 架构 面试 计算机

真香!兜兜转转还是得看你“阿里面试参考指南”

Java 程序员 架构 面试 后端

Cobar提出的一种在分库场景下对Order By / Limit 的优化

捉虫大师

算法 cobar

看动画学算法之:栈stack

程序那些事

数据结构 算法 看动画学算法 程序那些事 stack

升级了 Windows 11 正式版,有坑吗?

王磊

碉堡了!Alibaba爆款Java高并发核心编程手册,在牛博网上被疯狂转载!

Java 架构 面试 程序人生 编程语言

CSS架构之Base层

Augus

CSS 10月月更

【Flutter 专题】31 图解 TextPainter 与 TextSpan 小尝试

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 10月月更

【Vuex 源码学习】第十一篇 - Vuex 插件的开发

Brave

源码 vuex 10月月更

发布两小时,霸榜GitHub!Spring Boot实战文档

Java 编程 程序员 后端 计算机

内卷破坏者!“阿里爸爸”全新出品SpringBoot高级笔记(全彩版)

Java 编程 架构 IT 计算机

极客时间转眼间就4周年了

IT蜗壳-Tango

10月月更

在线图片转base64工具

入门小站

工具

[ Golang 中的 DDD 实践] 仓储

baiyutang

golang 领域驱动设计 DDD 10月月更

css3中的3D转换效果有哪些,浏览器私有前缀兼容写法

你好bk

html5 css3 大前端 html/css

[初恋系列]一个让初恋爱不释手的购物平台(电商系统微服务拆分)

人工智能~~~

微服务 电商平台 拆分 电商系统

Vue进阶(幺叁贰):ES实现数组合并

No Silver Bullet

Vue 数组合并 10月月更

互动视频和5G的相互成就

脑极体

Thread 的状态改变操作学习笔记

风翱

Thread 10月月更

SpringBoot 实战:在 RequestBody 中优雅的使用枚举参数

看山

Java Spring Boot Effective Spring 10月月更

linux之vi,vim命令

入门小站

Linux

双非本科毕业竟能四面阿里稳操胜券,轻松拿offer,定级P6+,怎么做到的?!

Java 程序员 架构 面试 后端

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