说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

基于OpenStack的私有云开发部署实践

HTML文档下载 WORD文档下载 PDF文档下载
OpenStack作为目前十分主流的私有云平台,已经被很多组织应用于其内部。本文邀请了来自五八同城公司的高级云计算工程师赵龙,分享了他在企业内部设计、构建以及运维整个OpenStack系统的经验。

【编者按】OpenStack作为目前十分主流的私有云平台,已经被很多组织应用于其内部,提升其内部 IT 基础架构运行和管理的效率。对于很多入门的OpenStack 初学者来说,官方的标准文档已经很难满足他们在学习和实验过程中遇到的问题。本文是来自五八同城公司的高级云计算工程师赵龙,分享了他在企业内部设计、构建以及运维整个OpenStack 系统的经验,让更多希望能够了解和使用这个优秀的云计算平台的技术人员可以更有效地获得最有实用价值的信息。

文中简要介绍了OpenStack 在私有云平台中的一个应用,基于OpenStack 实现了企业内部的虚拟机资源分配管理平台。同时给出了一个OpenStack 企业级的云平台部署方案,在存储和网络上的探索和性能优化使得OpenStack 较好地满足了企业对外提供Web服务的需要。(阅读原文)


随着互联网技术的飞速发展和广泛应用,互联网公司对于产品迭代和技术升级的要求都更为迫切。相应地,研发测试人员对于机器的使用需求量也上了一个台阶。传统的虚拟化解决方案存在大量的问题和弊端,已经无法满足企业内部用户按需取用虚拟机资源的需求,运维人员和开发测试人员在虚拟机的使用管理上存在着很大的耦合性和关联性。探索更为自动化、快捷的虚拟资源使用分配方式已经成为无法回避的问题。

经过充分调研需求,我们在企业内部实现了一套基于 OpenStack 的虚拟机资源管理平台(VMMS),能够动态、实时地响应全公司开发测试人员申请、续借和其他日常使用虚拟机的请求。系统的架构设计如下所示:

图 1.系统架构图

用户通过客户端请求虚拟机时,VMMS 虚拟机资源管理系统会立即响应用户的请求,按照用户的具体需求分配一台配置合理的虚拟机。通过维护一个动态变化的虚拟机资源池空间,对于虚拟机资源的各种请求做到了秒级响应。而且,为了保证虚拟机资源的动态伸缩,系统中还加入了时间管理模块;另外,虚拟机的正常运行工作通过状态管理模块来负责。全部的虚拟机资源都是通过底层的 OpenStack 云平台提供,VMMS Server 以一定频率和 OpenStack 云平台进行通信,保证资源的可用性和请求的及时响应。

VMMS的设计哲学是在平台硬件资源有限的前提下,优先满足用户对虚拟机的各种操作需求,保证虚拟机资源平台的可用性和稳定性,对用户的申请操作和虚拟机资源配额、资源池大小都做了强限制。具体来说,VMMS 的开发管理策略主要体现在以下几方面:

虚拟机配置策略

58 同城是为用户提供本地生活信息的平台,主要提供覆盖广泛、定位精准的各类 Web 服务。使用虚拟资源的用户因为业务和具体场景的不同,对虚拟机的需求也不尽相同。应对普通的 Web 服务开发测试,例如快速接口调整、嵌入新的管理推广模块、页面样式变更等灵动项目的调整与测试,使用接近 PC 机配置的虚拟机就可以达到较好的响应效果,必要时可以通过横向增加机器数量的方法应对业务大规模推广测试和版本迭代;应对核心业务线的优化和部分基础服务就需要使用高配置的机器,这类业务大都具有 CPU 密集型和内存密集型的特点。典型的场景有信息管理中心索引重建、Redis 集群测试等,都需要分配多核 CPU 高内存配置的虚拟机。我们将虚拟机用户的潜在需求大致分为几类,并为之相应准备了配置适宜的虚拟机镜像和云主机类型。用户在申请时,只需要在用途和欲申请虚拟机配置标注,提单后系统就会匹配相应的虚拟机给用户使用。另外,还在部分镜像加入了集中配置和测试部署环境打通的相关配置,有利于减少用户重复配置安装的工作量。

请求响应策略

为了从根本上改善过去虚拟化服务资源分配效率低下的问题,VMMS 系统会在用户操作请求提交后瞬间响应用户的申请。这是基于一个自适应变化的虚拟机资源池实现的。系统初始化时会创建 n 台虚拟机作为原始虚拟机资源池,用户申请后资源分配模块会从已有资源中匹配然后响应用户,系统在后台会根据虚拟机申请周期和频率从全局上调整补全虚拟机资源的速度。VMMS 系统在平台总虚拟机数量 m 和当前维持可用的虚拟机数量 n 都做了一定的限制,为的是保证对虚拟机资源分配平台负载的有效控制。在局部时间内如果用户申请虚拟机操作的并发量超过了设定的阈值,系统会根据并发量调整 m 至 1.5 倍或 2 倍不等。相应地,资源池虚拟机数量 n 也得到了提升,优先保证用户正常进行各种虚拟机请求操作。在用户申请虚拟机操作请求频率回落后,VMMS 会再次将 m 和 n 的值收敛到正常范围。

资源控制策略

私有云平台受限于规模,所能够使用的硬件资源比较有限。为了及时有效地回收不在使用状态的虚拟机,VMMS 系统的时间管理模块会根据每台虚拟机的初始申请周期对在用虚拟机列表中机器进行定时扫描。查找到虚拟机使用周期已到而用户并没有后续的续借行为,系统会自动回收该虚拟机,释放物理资源。用户在申请虚拟机时有虚拟机重要性的可选字段,可根据业务和场景的具体情况给出重要性数值。针对工作数据和日志信息比较关键的虚拟机实例,如果到达指定时间还未收到续借请求,VMMS 会首先对虚拟机做停机处理,告知用户需要续借,没有后续操作的话虚拟机会在三天内回收。

虚拟机稳定性策略

状态管理模块会定时扫描每台在用虚拟机的状态,对不处于可工作状态的虚拟机首先尝试恢复,不成功则启用虚拟机重建和迁移策略来保证虚拟机的可用性。

虚拟机生成策略

为了减少人为干预,虚拟机的生成采用了完全自动化的策略。虚拟机从启动到划分所属网络、绑定浮动 IP、修改初始密码到进行业务上的初始化部署做到了完全借助系统本身流程进行。

借助 VMMS 虚拟机资源管理平台,开发测试人员能够自由便捷地按需取用虚拟机,在业务开发与测试环境的准备工作上提高了效率。VMMS 响应用户的各类虚拟机请求操作达到了每天上百次,简化了传统虚拟化解决方案下用户提单、运维审批,创建虚拟机再交付用户使用的流程,在无需人干预的情况下取得了较过去投入大量运维人力更好的体验;虚拟机的使用迭代周期相比过去大大缩短,每隔 10-15 天虚拟机资源池中的机器就会完整更新一遍,用户随用随取、不用归还,避免了资源的长期占有和浪费;在相同的硬件资源条件下能够管理和提供的虚拟机数量也较过去有了大幅提升。

OpenStack 云平台部署方案介绍

在实现了公司内部供开发测试人员使用的私有云平台后,需要将目光转向公司 Web 服务的虚拟化实现上来。与之对应,就需要部署一套企业级的 OpenStack 云平台环境。

网络方面根据平台需要,分别采用了 vlan 和 flatDHCP 模式,以项目为单位作为租户,进行网络的规划和设计;实现了多网络节点的 OpenStack 环境,保证了网络服务的高可用性。

存储上针对业务的访问特点,实现了基于本地存储、NFS 共享存储和 glusterfs 分布式文件系统共享存储的混合存储方案。将虚拟机的 disk 文件存储在宿主机本地硬盘上,数据盘即工作区间挂载分布式共享存储的卷。

方案上针对企业级生产环境可能遇到的问题实现了虚拟机在线迁移和物理机宕机迁移等功能。虚拟机在线迁移做到对用户基本透明,迁移过程不影响业务运行;物理机宕机迁移做到了虚拟机所在宿主机宕机后(硬盘损毁,网络不通,电源中断)能够在分钟级内迅速恢复虚拟机的正常使用,将由环境问题导致的事故风险降到最低。

经过实践和线上环境的使用统计,基于 OpenStack 的虚拟化解决方案相对于传统的虚拟化解决方案在主要性能上有了明显提升,下图是性能对比:


图 2.性能对比

高可用配置与平台性能优化

OpenStack 云管理平台部署后,在存储和扩展性上还存在诸多问题。例如,虚拟机的操作系统永久损毁或者宕机后,如何快速恢复虚拟机运行对外提供服务,业务负载高了以后如何在很短的时间内添加物理节点均衡线上压力,如何保证存储的 I/O 性能,避免操作系统 I/O 和数据业务 I/O 争夺资源。针对以上问题,做了以下几方面的高可用配置和优化工作:

  • 虚拟机在线迁移和物理机宕机迁移实现;
  • glusterfs 支持的分布式块存储功能实现;
  • OpenStack 本地仓库的搭建。

虚拟机在线迁移和物理机宕机迁移

基于NFS 共享存储的配置部署

  • 在存储集群上安装 NFS 服务;
  • 计算节点挂载 NFS 服务器的目录;
  • 配置计算节点使其能够免密码 ssh 登录;
  • 修改 nova.conf 文件;
  • 配置 libvirt 的相关文件;
  • 添加 iptables 的相关规则。

部署过程中需要注意一些细节:

1. 挂载点是有要求的,一定要挂载在 nova.conf 配置文件中指向的 instances 创建目录下。各计算节点上,这个路径要完全一样,通常情况下可以使用默认路径/var/lib/nova/instances。如果 NFS 的客户端即计算节点没有选择这个挂载点,也可以顺利创建虚拟机,但是迁移时会发生错误。

2. 确保计算节点有挂载目录的执行和查找权限。

chmod o+x /var/lib/nova/instances

3. 修改 nova 和 libvirt 的配置,使 vncserver 监听 0.0.0.0 而不是计算节点的 IP;同时设置 libvirt 监听 tcp。

更改以下配置项的值:

listen_tls=0listen_tcp=1auth_tcp="none"

4. 在计算节点添加 iptables 规则,确保试图途径 16509 端口的 TCP 连接可以顺利通过。16509 端口是 libvirt 专门用于虚拟机迁移的端口,在线迁移依赖于共享存储和 libvirt 工具在线迁移的配置。在各宿主机上添加如下的 iptables 规则:

iptables -I INPUT 3 -p tcp --dport 16509 -j ACCEPTiptables -I OUTPUT 3 -p tcp --dport 16509 -j ACCEPT

未完>>>关于OpenStack本地仓库搭建方法的更多精彩内容,请移步 IBM developerworks 查看

(责编/夏梦竹)

首届bong线上黑客马拉松第一阶段达成! 12支团队晋级 APSys 2014,AMD将发表基于异构体系的DNN实现与评估 PagerDuty实战分析:将MySQL迁移至XtraDB并成功运行EC2 Molecule:自食其力的免费HTML5游戏框架 智能家居升级:Nest启动开发者计划,并开放API Docker,从这里做起! 《近匠》云巴创始人张虎:低门槛云服务为小团队创造更多机会 Oculus公司同意收购Xbox 360手柄设计团队 公有云VS私有云 哪个数据更安全? 调查:开发者越老越吃香吗? Facebook在线支付:取代虚拟货币的终极边界 Google I/O前析:关于新一代设计框架Quantum Paper的猜想 Google I/O 2014前瞻:“令人发指”的Android产品线 福昕熊雨前:PDFium开源项目的背后 Dropbox无法登陆,国内企业网盘横向评测! 如果编程语言是超级英雄…… 谷歌发布Material Design设计语言 系统、功能与设计,Android L究竟新在哪儿? 《近匠》游道易副总裁孙可:发行商眼中的手游市场 布道师徐立:Docker是标准化IT结构的新方式 解读全新Google Play Games:多屏游戏时代终于来了! 设计神器PaintCode 2.1发布,完全支持Swift 一周消息树:天河二号以每秒3.3亿亿次的速度再居世界超算榜首 传闻微软计划用Lumia品牌取代Surface 【CTO俱乐部读书会】杨立东:技术团队留人“三板斧” 蓝港在线王世颖:浅谈手机游戏发行的成功基因 美国高通公司执行董事长Paul E. Jacobs:移动科技——精彩现在,辉煌未来 告别公用云,Instagram已将服务迁至Facebook数据中心 华为助力凤凰实现全媒体战略 跨平台2D/3D游戏开发框架libGDX发布1.2.0更新 Docker CEO Ben Golub:Docker借助开源、天时走向成功 谁有英文版的FLASH和DREAMWEAVER!! 那里有C#的电子书下载呀 新手提问,关于SQL数据库的连接代码 在unix下的ftp问题 一个简单的问题 jbuilder中的Tools->Configure Servers的对话框中没有JBoss 3.X,如何是好? SqlServer数据库的备份问题 在线求助ReportBulider如何做这样的报表? 怎样得到用户表名? 大家好帮忙啊 ——————在线等待!! 直接访问操作符"." 和间接访问操作符"->" 有什么区别 数据库优化的问题 一个文本框,有一个验证控件(判断是否为数字),还有一个textchanged事件,这是一个矛盾的东西,让我头疼~~ interface中的uses语句和implemetation中的uses语句有何不同? XP个人单机服务器配置后访问需要帐号密码,怎么办 干得不开心,想转行,大家给点建议 如何实现“让用户自定义快捷键?” 怎么样把.aspx制作成安装的文件?? 我写了如下一个方法,但是用起来有问题,帮我看看!! 俺倒~~~~~~~~`怎么能上三星啊? 向高手求救:如何得到一张表的行数和列数!! 散分!代码解读! 使用sybase时的提示The query and the views in it exceed the limit of 16 tables. 有办法解决吗? 如何将数组的内容添加到一个文件的末尾 怎样才能打开一个489K的.DAT文件? 列表框(ClistCtrl)如何得到选中项的文本内容和选中项的索引值 为什么我登录到Oracle Management Server时老出错。(oracle 9i) 这样的sql语句怎么写呢?急啊!(还可以加分) pb中截取字符串的问题:急,在线等待 急,在VC++.Net中怎样将字符串System::String类型转换为LPSTR类型? 用PQ把NTFS转换成FAT32时,文件名全变名问号了,怎么办?!!!!!!!!!! 又是回车符的问题,急!!!!! 关于工具栏的问题 控件的DragMode为dmAutomatic,不能用鼠标点? 奇怪的电脑时钟 系统不支持本地交互式登陆 ListView的小问题 有责任感的中国人(水均益:我来谈京沪高速铁路 ),顶者有分!200分 如何给MDI窗口设置背景图? 如何使数据按我定义的顺序显示出来 请教,我有一个toolbar,上面有四个toolbutton,问题! 关于按钮的小问题 追加记录思路 TemplatePower控件谁用过,Delphi下做网页报告的,在Builder上装不上 如何在MIDP中保存小数? 关于窗口设计 有责任感的中国人(水均益:我来谈京沪高速铁路 ),顶者有分!200分! 这里没有人关心Yokun吗?还是大家都在闭门造车? XP服务器安装后访问需密码,,该如何设置? 关于dc,hdc,getdc和pchar()的问题 急~~~在线等 TODO AUto-generated method stub是什么意思(翻译成中文) "拿热脸贴你的屁股凉了"什么意思 作为一个爱国者,你认为真正的爱国者应该具备哪些基本素质、态度和能力?可以举一些例子吗?正面反面的都行. 某校七年级二班的同学在学习 商鞅变法 这课中,表演了一出历史短剧.下列各项,错A 甲同学扮演秦孝公商鞅主持变法B 亿同学边缘生产粮食布锦多的人获得奖励C 丙同学扮演获得军功德大奖接 一个60公斤的人在一个电梯中间点站着,电梯匀速上升或下降 四个角在过程中受力分别为多少 电梯1.5m/s 【急】【有分】把你遇到的困难和解决困难的过程写成一篇小作文,300字左右把你遇到的困难和解决困难的过程写成一篇小作文,300字左右,侧重心理描写.我们的这个题目是在语文作业上的.我 翻译:First,setup“Network Topology configuration”Start with “Interface” fullinstaller.可以删除吗可以删是吧 尺寸造句怎么写 Solaris 心跳线 报错 ospid 10063:network interface with IP address 10.0.0.2no longer operational数据库是oracle10g 写一篇遇到困难并解决困难的作文(不少于200字) 吉林省雾霾渐退影响仍持续 学校停课面中国代表在联合国呼吁支持最不发达国家酝酿八旬六连任 麦凯恩欲2016年竞成人高考本周末开考今明两天发放准考证男子持韦小宝身份证乘火车 称只想开个早上拜孔子上课念四书五经 杭州郊外有菲总统再度表示菲政府不会就马尼拉人质以情报部长质疑伊朗谈判诚意 呼吁美国浙江临海户外休闲用品业蓬勃发展 企业莫斯科“双子星”餐厅 店员都是双胞胎澳大利亚第三季度通胀率达2.2%轨道交通一体化是推进同城化要领大树断枝 砸伤路人弱冷空气南下 今晚明晨凉爽今年“慈善日”项目要“结对子”积分入户入围分数线初定136300年古芒果树为“天兔”“折腰”珠海生育保险“全覆盖”省一级幼儿园托管费6.5元/天佛山横空出世 占领汽车业高地人质被劫命悬一线 特警锁喉夺刀救人年缴70元 最高报销20万明末苍茫游戏主神养成指南仙界大玩家小胖妹修仙记迷失在电影天堂永镇天渊蒸汽黎明三国之无限召唤大宋小郎君少年总裁之校园纵横绝世名姬:冷王倾城妻蓟县鼓楼旅游道须沟旅游赶海园旅游阿沛新村旅游大鹏东山寺旅游老寨山旅游青龙湖旅游白云源旅游南寮渔港旅游高峰山旅游清真寺旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘