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

基于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 查看

(责编/夏梦竹)

分析称平板电脑应用将占全球应用经济的35% 三大运营商对微信等OTT业务摊牌 Runscope联合创始人John Sheehan:API已死,API永存! IBM在京发布大数据白皮书 提出五项关键建议 Twitter开源Parquet 将支持Impala加速实时查询 使用Go代替Ruby,将服务器数量从30降到2 初创公司SwiftStack:“放在盒子里的S3” 赫尔辛基:全球移动游戏开发者的“黄埔军校” 不只属于三星!uMoove将发布“眼球追踪”SDK Android掌门人Andy Rubin宣布辞职 Chrome主管接任 openSUSE 12.3发布 弃MySQL拥抱MariaDB Meteor:让实时Web App成为主流 别了,Google Reader!谷歌于7月1日关闭服务 “天网”降临 机器人或将崛起? 涅槃重生:Qt 5 for Android预览版发布 Google Play将逐步移除广告拦截应用 Shapeways公司开放API 3D打印时代来临 37signal设计师眼中的iOS与Android系统 VMware/Oracle向公有云拓展生态系统 AWS“山寨”技术伙伴创意与产品,是自我完善还是杀鸡取卵? 苹果发布OS X 10.8.3 新版Boot Camp可支持Windows 8 恭喜!麻省理工两密码学教授获2012图灵奖 Rovio的逆袭,发布首款RPG游戏“克鲁德一家” 百会呼吁微软提供合法经营Office 365的相关证明 谁说Vim不是IDE?(四) RDS升级:单DB实例最高可获得3TB存储和3万IOPS 移动周报:“先验证,后开发”的App开发必杀技 Supercell首席执行官谈公司运营理念 SwiftKey:Galaxy S4输入法背后的开发团队 前IE团队领导:IE是如何走向衰败的 谷歌更新BigQuery 允许在其中加入大型数据集 如何将一个可以滚动的窗口的全部内容转换为BMP保存起来(如:IE)?(提供线索就有分)欢迎参与成果供享!!! 请教关于VsPrint Oracle8i Enterprise Manager Release 2.1 相当于ORACLE8.1.几啊? 使用ListView如何操作数据 ★★★简单问题送100分★★★:如何打印框架容器里的的全部内容,包括mschart图表,label,combox等? 我的DW里加入FLASH特效时为什么中文会变成乱码?我给分的............ 我感到天昏地暗、日月无光、前途渺茫、无心睡眠、精神恍惚、双目痴呆相恋8年准备结婚的女友突然和别人结婚了!我受不了了!我快疯了! 请教有关IE5带的ActiveX控件Dhtmled.ocx的98下安装问题 程序员与高级程序员到底那个好过 关于 delphi的一点东东 access一个日期时间字段是短格式的,用什么SQL语句改成长格式的? 怎样才能在主页中显示自己的qq是否在线?????? 有没有平面按钮控件 Interdev6.0 IDE 环境下无法使用MSDN access一个日期时间字段是短格式的,用什么SQL语句改成长格式的?? 大家来帮帮我想想?应该怎么样来删除呢!!!! 各位用VB.net的兄弟,请问你们使得是 Beta1 还是 Beta2 ? 迷周星弛的请来签名啊! 如何操纵RichTextEdit控件??? 我得到GIF图像的这一点的值,怎样得到它的正确的RGB值? 我想请问在CHTML(compact html)中如何对页面进行刷新。 各位老大,你们是如何找到工作的? 在VB.net中,如何实现VB6中的 set A=createobject("XXXX.XXXX") 诸位大虾救命,如何在EDIT控件中判断DBCS字符 !!求救!!对时!!! 在VC中使用Crystal report 8的问题 如何编写c程序自动对GIF图片设置大小 请教:鼠标在windows桌面上按键是否会引发某个事件? 查看DLL的输出函数 menu的问题 web的组件由什么来编写? 嵌入式数据窗口,怎样可以动态往里插数据窗口??? 在DELPHI中如何调用NETBIOS的API函数 AddNew 怎么用?- 怎么办那,啊? 问题标题前的绿色的对号是什么意思?是不是表示问题已经解决? 怎么学VC啊,菜鸟的菜菜的问题啊。 关于打印比较 提取汉字的拼音 四级挂了,给分,气死了 难题时时有,把它问诸位,不知哪位高手,今日肯帮俺------解决送个人照片(不知各位肯要否?) 刚考完英语四级,来这里发泄一下。同时送上300分! PHP和JAVA如何通讯? 请问哪里有 soft-ice for 2k 如何将字符串的首尾空格去掉??? 1分钟求解:与HEX()对应的把16进制转换成10进制的函数是什么? 怎样判断某个控件是button、edit还是combox、listctrl......? VB.NET(VS.NET)/Beta2正式版下载地址与安装方法 有人用VsPrint吗? delphi、vc、c++ builder三者,哪一种是你的最终选择,why? 第一次上来灌,宋粉 (2x-3)(2x-3)=x²-6x+9 解一元二次方程 1x(1+2)分之2+(1+2)x(1+2+3)分之3...1+2+.9)x(1+2+.10)的10次方 解方程 8.8x-2.4x=3.2 4.6x+5.4x=10.89 3(x+1.解方程8.8x-2.4x=3.24.6x+5.4x=10.893(x+1.7)=9.6(x-4.5)6=31.8 2x²-2x-3=0 解一元二次方程急! 2分之1X :3=(X+1):9 求X 求1/5X+1/4X=1/5X+8+1/5X方程的解法 1.(x+2)²-5=0 2.2x²-x-3=0 3.x²-6x-5=0 4.(x+3)²=2x+6 运用一元二次方程的方法解 (170-x)*3/1-4/1x=10怎么解 求(4x-10)=5/7(5x-8)的详细解法,要小学水平,谢谢! 已知x是一元二次方程x的平方+3x-1=0的实术根,那么代数式 (x-3/3x平方-6x)/ (x+2-5\x-2)的值是多少?已知x是一元二次方程x的平方+3x-1=0的实术根,那么代数式(x-3/3x平方-6x)/ (x+2-5\x-2)的值是多少?《不好 1-2/1x(1+2)-3/(1+2)x(1+2+3)-4/(1+2+3)x(1+2+3+4)-……-10/(1+2+3+4+5+6+7+8+9)x(1+2+3+4+5+6+7+8+9+10) 5X的方+4X-2=09999X的方+2X-1=0,已知X的方+X-1=0,则X的三次方+2X的方+2005=?(m^2-1)x^2+mx+1/4=0 已知x是一元二次方程x的平方减二x减八的根,求代数式3x的平方-6x分之x-3÷(x+2- x-2分之5的)的指值 25分之6比X=50,解比例 还有4分之1X+5分之1×45=12 4x+2.5x*(x十0.85)=13.5 方程的解 1x=(1-20%)乘(x+6)解方程 解方程14x+x=2520 X+5分之1X=25分之12 1、方程-0.1x=1的解是________.2、方程3(y+2)=y的解是________.3、方程2x+3=4x-3的解是________. 14x-x=169怎样列方程 x-6分之1x等于5 x+4分之3等于21 (1+3分之1)x等于12求过乘,和怎么算出来的, 1).-2X=3,2).x+2=-1,3)4X-3=9,4)4-2/1X=5,给这几题解方程~.. (1)化简求值:2x^2+14x+24分之x^2+16+8x,其中x=-6当x=3,y=-2,求x^2-(y-1)^2分之x^2-y^2乘以x^2+2yx+y^2分之(x-y)^2-1除以x^2+xy-x分之x^2-xy的值、怎么做, x+4分之1X=1.5 6分之5/[1-(4分之3+12分之1)]答对我采纳额外加30悬赏 1又3分之1x+8×2分之1=16(解方程) 解方程 x(x+1)(x²-2x-4)=0 x³-2x+1=0 x的4次方+8x³+14x²+8x+1=0 x+4/1x=5怎么解方程 m为何值时,一元二次方程m(x²-2x+1)-2x²+x=0(1)有两个不相等的实数根?(2)有两个相等的实数根?(3)没有实数根? 解方程5/6*42-14x=7 解方程:(22-X)*4分之1-5分之1X=1 已知一元二次方程x²-2x m=0若方程的两个实数根为x1、x2,且x1+3x2=3,求m的值 解方程解方程10x/2+12=14x/2 x-3分之1x=0.36解方程 已知关于x的一元二次方程x²-2x-m=0有实数根 解方程:4x+10=2x-5 解方程2分之1x+25%=10 急,解一元二次方程:-x²/4+5/2x=0 解方程(10+2x)(76-4x)=1080 解方程 3分之1x+4分之1x=3分之2 x-0.75x-0.25=1 0.8x-14.7=1.3 1.2÷4分之x=5 3.6x+5.3=16.1 一元二次方程x²+2x=5的根的情况下? 解方程13x—4十2x=4x—3 当x为何值时 (5x+1)/2-3x比式子(7x-5)/3的值大5? 2x²-2x=5 (x+3)²=(1-2x)²两个一元二次方程的解, (4x+2x)/7=3解方程 解方程x(14-x)x1/2=24 x²+2x-5/4=0 一元二次方程 解方程:1/4x=-1/2x+3快,急 1x+3.6=11.2怎么解方程? 解几个方程,①x(x+1)(x+2)(x+3)=3 ②x^4+8x^3+14x^+8x+1=0 ③x(x+1)(x^2-2x-4)=0 解方程,3/4X+1/2X=9/4 2分之1x=4分之3解方程 x^2+2x+3一元二次方程的值为0则3x^2+6x-1值为 26-3x=5 怎么解方程?26-3x=5怎么解方程? 解方程:5/8X-21/8=5/4 已知m,n是一元二次方程x²-3x+1=0的两根,则代数式2m²+4n²-6n+2000的A2014B2013C2011D2012已知m,n是一元二次方程x²-3x+1=0的两根,则代数式2m²+4n²-6n+2000的值A2014B2013C2011D2012 用配方法解方程:(3x+5)(3x-5)+6x=-26 8x/3分之4=5分之3-2解方程我快急死了..... 若一元二次方程2x²-6x+3=0的两根是α,β,求(α-β)²的值 1x(1+2)分之2+(1+2)x(1+2+3)分之3...1+2+...9)x(1+2+...10)的10次大大 -11-6x=7+8x -3+2-7=4x-15-8x ( 解方程)7x-6-8x+12=-3x+9-3+2-7=4x-15-8x
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn