前言

不知不觉中已经接触云计算领域一年有余了,从CloudFoundry到OpenStack,从虚拟化到云平台,随着项目的深入发现要学的东西越来越多,但时间却总是不够用,所以也想借这篇博文对过去的2012年做一个总结。

值得庆幸的是,我们躲过了世界末日,我们还活着,云计算事业还将继续。

瞬联为什么需要私有云?

说到这样一个问题,必须要了解一下企业的背景。简单来说,瞬联就是一家外包公司。相信很多人看到这里可能会发出这样的感叹:哦,就是个卖人的公司嘛!相信大多数的外包公司都会留给人这样的印象,但是这句话只说对了一半。从外包的定义上说,除了传统的人力资源外包,项目外包也占据了外包行业的半壁江山。其实在中国,电信行业、金融业的项目,都是以项目打包的方式承包给IT服务企业完成的。

需求一:开发、测试环境的需求

其中占据瞬联业务重要的一部分就是服务即产品(Service as a product)的模式,在瞬联内部有大量为不同客户项目提供解决方案的团队,涵盖电信、移动互联网等诸多方面,其中也包括我们企业私有云解决方案团队,这些团队在项目开发过程中,经常需要使用很多不同的开发环境,但无外乎Windows和各种Linux版本,当项目开始后,项目经理四处寻找空闲资源,当项目结束后,环境又被销毁掉,资源被回收,但是如果项目一旦重新启动,通常的做法是按照文档重新搭建环境,大大浪费人力和时间成本。那么这里通过OpenStack提供的镜像服务以及虚拟机服务可以方便快速的保存、重建开发、测试环境,大大缩短了环境重建的周期,提高效率,也提高了资源的利用率。

但是,从实际使用状况来看,OpenStack主要是面对公有云运营商开发的,所以不会对用户使用资源使用刻意限制,换句话说,你用的越多我越高兴。但对私有云的来说,硬件资源总是有限的,我们不能让所有的用户不加限制的随意占用资源(时间和硬件资源),所以对于企业私有云来说,流程控制是必不可少的。所以针对这一点,我们在Nova项目中开发了一个新的服务Flow,用来控制虚拟机资源的申请流程,以及控制虚拟机资源使用的时间和通知等服务。

另外,对于公司来讲,资源的隔离性也是很很有必要的,不同项目、部门的采购的硬件往往希望独占,所以这里面就涉及到Zone的概念。OpenStack中的Zone是在生成虚拟机时指定的,但是我们并不希望让用户不加限制的去选择Zone信息,这样失去了对用户行为的控制。那么,我们会将Project和Zone由云管理员进行绑定,用户申请时只能选择该Project允许创建虚拟机的Zone。这样就保障了项目对硬件隔离的需求。

需求二:共享存储——私有网盘

此外,基于群组的文件共享也是重要需求之一。在我们企业内部环境中,文件的共享基本通过电子邮件或者wiki的方式实现,但无论哪种方式都有明显的劣势:电子邮件不利于查找而wiki对普通用户使用有门槛。基于以上需求,我们结合OpenStack提供的对象存储模块SWIFT,开发了针对企业私有云平台的网盘服务。另外,对于一些OFFICE、PDF、图片等,大部分的用户只想查看其中的内容,并不需要编辑他们,但往往我们收到这样的文件,只能下载后通过本地的客户端软件打开后才能查看,很浪费时间。所以,我们又开发了针对文档及图片等常见文件格式的在线浏览功能,同时还提供群组分享、内容检索等服务。网盘的应用在企业内部,即保证了数据的安全、可靠,又提高了用户体验。

需求三:VDI远程桌面

最后,是关于VDI,也就是远程桌面系统,用来解决远程办公、软件共享、安全控制等功能。针对这个需求,我们利用OpenStack对虚拟资源的灵活控制,开发了一套基于OpenStack的VDI应用。用户使用任意RDP客户端,每次连接固定的域名,之后选择要使用的软件资源池,用OpenStack用户登陆后即可进入相应的操作系统,使用要使用的软件。并且,用户可以通过网盘服务,将所需要的文档资料拷入拷出,同时,我们为用户提供一块云端硬盘,用户存入此块磁盘的文件可以永久保存,在下一次登陆后,仍然可以方便的使用。

瞬联如何建设私有云?

记得OpenStack北京行活动时,陈沙克老兄曾经提到过微软的那句名言:Eat your own dog food(吃你自己的狗食)。所以,我们认为如果想提供基于OpenStack的服务,那么必然自己先要用好,这也是我们在内部大力推广我们云服务的重要原因。

在最开始部署我们的私有云服务时,我常常纠结的两个问题是:我需要新的硬件设备吗?我的旧的硬件怎么办?最后,我得出的结论就是我在OpenStack APAC讲的那句话:立足现有装备,打赢未来战争。所以从现有阶段来看,瞬联在私有云硬件成本的投入几乎为零。因为现有的硬件资源完全满足项目需求,我为什么要购置昂贵的硬件设备呢?但并不意味着我们永远不购置新的硬件设备,从一个长远的发展来看,我们的策略是:随着项目逐步迁移到云中,根据实际的需求购买更好的硬件设备,逐步淘汰耗电大,占空间的老旧设备。

因为我们毕竟不像那些预算充裕的大公司,可以随意购置新设备。所以我们的解决方案针对的是像我们一样,花自己的钱,又想构建私有云的中小企业。

这里援引我一位非常要好的哥们对于国内云计算市场评价的话:

“对于云计算的价值,真的是见人说人话,见鬼说鬼话。国内云计算产业,究其源头会发现,基本是IBM、HP、SUN、DELL、VMware、Citrix等这些软硬件提供商在引导,把偌大的国内云计算市场往沟里带,说白了就是为了卖硬件和软件。国内各大运营商、各政府机构等有钱的地方,都有大国盛宴,举国体制的风范,开始跑马圈地,搞集中IDC,搞大事业……”

网络规划&高可用

好了,说了这么多废话,开始说点干货吧。先上一张拓扑图:

我们选用的OpenStack网络是传统的VLAN方式,并没有使用Quantum,这是因为在Essex版本时,Quantum还不是正式的模块,所以到了Folsom版本,我们延续了原有的VLAN方式。VLAN方式很好的实现了各个项目之间的隔离,保证了安全性。

为了能够让各个分公司都能够使用私有云,我们先划定了一条各个分公司都能够访问的VLAN作为提供公共服务的网段,再划定一条VLAN作为虚拟机内部通讯的网络。同时在相关交换机上预留VLAN ID 800~850,50条VLAN与OpenStack内部VLAN相对应,同一VLAN下虚拟机之间通讯不受影响。通过这些手段,保证了无论我们的计算节点位于哪一层的机房,都可以进行通讯。

在图中,最左侧为控制节点,其中OpenStack控制节点和网盘应用形成MySQL集群,用于实时备份数据,任意一台出现问题之后,另外一台可以快速作为对方的备份节点。下面的一台是为了提供自动部署的服务器。

中间靠上的两台服务器,分别提供镜像和卷服务,利用GlusterFS形成冗余,并可互为灾备节点。因为GlusterFS并不支持块设备,所以这里用到的Cinder驱动为NFS。中间的服务器代表一个机房中的某几台服务器形成一个Zone,这个Zone专门为CL这个项目组提供虚拟机服务。中间靠下的服务器是SWIFT服务器,作为网盘的后台。

最右边的服务器,代表OpenStack控制节点所在机房如何和另外一个机房的服务器连接。那么这几台服务器形成一个独立的区域,为整个瞬联内部提供服务。

监控方案采用Nagios,对主机性能及关键进程形成监控,后期准备在已有的Nagios OpenStack Plugin基础上增加一些关键指标的监控。

部署

我们当前采用的OpenStack版本为定制版Folsom,底层操作系统为Ubuntu 12.04 64bit Server版本。操作系统采用kickstart实现推送,本地缓存了所有DEB包,无须网络安装。IT人员只须设定好网络地址,之后由Fabric脚本完成主机名、NTP、Puppet等基础软件的安装。

因为是我们定制的版本,所以市面上所有的部署方案基本都是不适用的,我们基于dodai-deploy,开发了可以部署我们自己软件的版本,并且将所有的数据库全部默认使用MySQL(默认的dodai-deploy只有nova是使用MySQL数据库)。

我们全新部署一台计算节点的时间,从裸机到能够使用大致为30分钟之内。

定制化

还是先上一张图:

凡是有蓝色的模块是我们定制过的模块和增加的模块,主要集中在Keystone、Nova、以及Horizon三个模块,在Cinder中增加了关于NFS驱动层的三个方法。

Nova是我们最早开始改动的模块,为了实现对于虚拟机申请的控制,我们增加了一张表用于存放用户所有申请及状态。之后增加Flow api用于实现相应的请求。最后,增加了nova-flow服务用于通知用户虚拟机过期和删除过期的虚拟机。这样配合Horizon的改动,就可以完成了对虚拟机申请流程的控制。

可供申请的虚拟机列表

用户申请页面,增加申请天数、区域等信息

在Keystone中,为了实现Zone和项目绑定的目的,我们增加了相关方法,并且增加了一个新的角色ProjectAdmin,用于在某一个项目中,完成用户虚拟机申请的审批工作。因为OpenStack主要是针对公有云的开发,所以暂时没有把这部分代码提交到社区。

管理员可以设置Project允许生成虚拟机的区域

Cinder中,因为NFS驱动中,并没有生成卷镜像和从卷镜像生成新镜像的方法,所以这部分代码,正准备提交到社区。

网盘应用

网盘应用基于OpenStack Swift API开发的。提供在线文档、图片浏览、群组分享功能,现在支持的格式:DOC/XLS/PPT/PDF/PNG等多种常见的文档和图片格式。我们准备在近期将我们的版本开源,回馈社区。还是图片最容易说明问题,继续上图:

用户登陆后的页面,私人空间

在线浏览功能

虚拟化桌面应用

虚拟化桌面包括VDI Broker以及Visual两个部分,Broker主要负责处理RDP协议解析以及和Visual交互,而Visual则完全负责资源分配。VDI同时支持添加虚拟机和物理机,现阶段暂时需要云管理员对所有可用服务器进行配置,在下一个阶段将根据需求启停虚拟机。如果用户使用的是虚拟机,那么在用户登陆后,自动挂载一块用户硬盘,用户保存在此硬盘的所有资料,在下一次使用VDI服务时仍然存在。还是来看图:

架构图

标准的RDP客户端连接

用户选择要使用的资源池,完成连接

结语

在半年的内部运行中,系统非常稳定,随着新功能的不断更新,内部的用户也愿意使用云平台服务。各个项目的负责人也积极的将项目的开发、测试环境放到云中运维,而这也直接帮助他们更好的控制项目进度,缩短准备周期。我们相信随着我们不断的努力,一定能让企业私有云在我们的企业日常生活中发挥越来越重要的作用。

当然,我们还有很多工作要做,还有很多功能要完善,我们也希望和社区、和更多行业用户、企业交流,以帮助我们更好的优化、完善我们的解决方案,也希望帮助有需要的企业用户创建一个稳定、良好的企业级私有云平台。

最后,也欢迎对我们解决方案感兴趣用户与我们做进一步交流。

我的新浪微博 @RaySun

电子邮箱:qsun01185@cienet.com.cn

欢迎转载,请注明作者。

瞬联基于OpenStack的私有云解决方案相关推荐

  1. 小米基于OpenStack搭建私有云平台技术架构大揭秘!

    摘要: 小米公司OpenStack项目的技术负责人潘晓东分享在使用OpenStack建设小米私有云平台的一些经验和踩过的一些坑,重点探讨在目前OpenStack还不太稳定的情况下,如何建设一个具备企业 ...

  2. 基于openstack的私有云构建_阿里云杨敬宇:四层技术构建基于城市场景的边缘计算...

    12月11日,阿里云边缘计算技术负责人杨敬宇在2019亚太内容分发大会上表示:在未来,边缘计算主要是以地市.区县为单位开展,面向城市服务的交通.医疗.健康.教育.新零售等场景提供算力基础.阿里云认为边 ...

  3. OpenStack 企业私有云的若干需求(7):电信行业解决方案 NFV

    本文转自网络文章,内容均为非盈利,一切版权原作者所有. 文章内容仅代表原作者独立观点,不代表本账号立场,转载此文章在于个人学习收藏,传递更多知识. 如有侵权,马上删除. 原文作者:世民谈云计算(微信公 ...

  4. 服务器虚拟化基于NetApp存储的Microsoft私有云解决方案

    主要功能 降低成本 使用 NetApp 和 Microsoft 基础架 构,从虚拟化发展到私有云,并降 低提供 IT 服务和应用的成本. 提高灵活性 借助可扩展的动态 IT 基础架构, 更快地响应不断 ...

  5. 云服务器惠普版_惠普被评为中国私有云解决方案领导厂商

    [IT168 资讯]惠普近日宣布,Forrester把惠普评为中国私有云解决方案领域的领导厂商.根据<Forrester Wave:2015年第一季度中国私有云解决方案>报告(The Fo ...

  6. 这是一份华为云私有云解决方案2017年的成绩单

    岁末年初,回顾的好时节. 要说这一年IT业界的热点,绝对少不了云计算.在全球数字化转型的大背景下,作为基础平台,2017年已鲜有人再去讨论云是什么,该不该上这样的话题.相反,云如今已成为全社会的共识, ...

  7. OpenStack Icehouse私有云实战部署

    linux运维 OpenStack Icehouse私有云实战部署 前言 相信你一定对"云主机"一词并不陌生吧,通过在Web页面选择所需主机配置,即可快速定制一台属于自己的虚拟主机 ...

  8. OpenStack 企业私有云的若干需求(2):自动扩展支持

    本系列会介绍OpenStack 企业私有云的几个需求: 自动扩展(Auto-scaling)支持 多租户和租户隔离 (multi-tenancy and tenancy isolation) 混合云( ...

  9. HUAWEI CLOUD Stack 私有云解决方案(HCS)

    HUAWEI CLOUD Stack 私有云解决(HCS) 注明: 本文介绍的版本为HUAWEI CLOUD Stack 6.5(也叫华为云Stack或HCS), 在华为6.5版本以前的名字是Fusi ...

最新文章

  1. linux opencv
  2. 网站文章中如何设置关键词才更有利于SEO优化?
  3. row number函数_Hive排名函数ROW_NUMBER,RANK 和 DENSE_RANK的区别
  4. win10用Eclipse+OpenJTag对S3C2440开发板进行动态调试
  5. c语言求树上节点的双亲,用非递归算法求二叉树叶子结点的c语言代码怎样写?...
  6. 花书+吴恩达深度学习(二)非线性激活函数(ReLU, maxout, sigmoid, tanh)
  7. java类的方法 作用 属性_JAVA:类和对象(秒懂版)
  8. SVN报错之Failed to run the WC DB work queue associated with...的处理方法
  9. 数字图像处理(21): 图像金字塔(高斯金字塔 与 拉普拉斯金字塔)
  10. 排队论模型(八):Matlab 生成随机数、排队模型的计算机模拟
  11. Caused by: java.lang.SecurityException: Neither user 10068 nor current process has android.permissio
  12. 强者越强-效率与公平的幂律视角
  13. html的空心箭头,CSS实现空心三角指示箭头
  14. 图文演示戴尔win10重装系统步骤
  15. android应用层学习经验
  16. 花椒母公司花房更新招股书:年利润4亿 周鸿祎是大股东
  17. 编译程序原理VS解释程序原理
  18. 找到抓手,用对方法,中电金信关于金融机构数据治理建设路径分享
  19. Hive恢复误删数据表
  20. GetElementById

热门文章

  1. openjudge 1.3.10 计算并联电阻的阻值
  2. 灵山卫大集逢一逢六开集。也就是阴历的日期,如果末尾是1或6,例如,阴历二月十六,就是赶灵山卫大集的日子。下面,请根据输入的阴历日期,判断这一天是否赶集吧。
  3. 一分钟搞懂精度,错误率、查准率、查全率
  4. C#语言实例源码系列-实现屏幕放大器和取色
  5. 彩信SMIL文件学习
  6. python如何生成26个英文字母(包括大小和小写)以及附上英文可见(常用)字符的ASCII码表。
  7. java图片处理---Javax.imageIO包的用法
  8. 贴片电容的封装尺寸容值解读
  9. 捕食者-被捕食者方程组分析
  10. 欧氏距离 VS 余弦距离