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

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

(责编/夏梦竹)

VB常见问题解答(1) VB程序中处理随机事件 VB的多媒体控件VBPLAY.VBX简介 VB技巧点滴 VB技巧汇编 (一) VB剪贴板的用法 VB开发CAI软件的小经验 VB软件设计中的几个问题 VB新手常见问题解答 VB修改注册表一特例 VB与VC混合编程中处理消息的方法 VB中的进制转换是怎样的? VB中调用带参数存储过程的实现(数据库) VB中感叹号“!”与圆点“.”的用法差异 VB中如何实现注册表的读写 VB中实现“擦视”技术 Visual Basic 2000年问题 Visual Basic 的未来 Visual Basic 命令分类表 Visual Basic三级跳 Visual Basic使用技巧 Visual Basic中的子类处理技术 Visual Basic中软件封面技术探秘 VisualBasic 软件设计中的几个问题 Windows 95/NT 运行了多长时间 -VB资料 Windows 的登录资料库 -VB资料 把回车键变成TAB键-VB资料 把文件置入到Text或RichText中 -VB资料 避免按 [ENTER] 回车键产生的“嘀”声 -VB资料 避免使用全局变量-VB资料 避免装载多份应用程序-VB资料 在PB8下面,MAIN窗口的MAXBOX = FALSE ,我设定这个窗口一打开的时候就最大化,为什么在这个窗口打开之后双击TITLE,窗口就变成了我设计的 CSDN论坛到底怎么了??? 一个和sql server连接问题? OO设计还有哪有原则? http://edu.sina.com.cn/l/2002-03-14/21924.html(看看吧~!!!多惨啊) 请问c的n次乘方函数是什么? 请各位大侠指教,关了类型转换的问题 学习Jive源代码要从那里入手 ★★★快来抢100分★★★:在bcb6里,我用import activex control添加组件怎么提示错误:E2347 Parameter mismatch in write access ?? 大家给推荐几个MM喜欢的小游戏吧 如何在一个基于对话框的界面上添加一个view 一个关于两个网页之间的传递及表单生成问题,请教! 在c/s之间,数据处理的问题 vb中的类的多样性,怎么表现出的? 谁能告诉我DELPHI6.0安装盘的序列号.送分,thanks!!! UFO 的秘密!最新发现,足以推翻以前任何种学说,想知道UFO真正的面目者,进来看看。 菜鸟问高手,如何在一个多文档程序中,关闭子窗口? 关于漂亮虫虫的疑惑 如何移动edit控件,使用什么函数?谢谢 servlet和JSP有何区别?(菜鸟级) template class declare? 请教一个很菜的问题,赶快请进 高手看过来,关于ipc的问题! 怎样在listbox中保存信息? 刚刚学习ASP,请问在哪里可以下载ASP的资料!!!!! swing中哪个类可以用作ToolBar中的按钮? 要能显示图象的 template 怎样更改trichedit鼠标指针样式? 我正在寻求仿XP菜单的源代码或控件,不知道哪位高手有????(email:zhem8@yeah.net) 关于创建不规则窗口的问题,请一定帮忙。谢谢!我只有100分了~~~~~~~~~~~~~~! 用cdonts发邮件时为什么把附件发到了内容当中,都是乱码,应该怎么改? Coledatetime同oracle8中的date类型相同吗? 关于操作系统 怎样拦截某个控件的消息? 请问怎么不加lib档又可以编译做好的dll?? 请问DivX的使用 请问有谁研究过USB接口的驱动????? 简单问题:怎么给我满意的答复加分呢? 救命啊。。。 9行程序崩溃WIN2000/xp 太、太、太好了!连帮助都是中文的,还可以继承、多线程,盗版比正版还提前发布。 关于C++的构造函数的问题 初学java网络编程的问题 KYLIX如何连接ORACLE? 有全套的ERP源代码出售 俺的机子装了Linux现在想改装WindowNT,用NT分区格式化后,咋一启动就显示LI,然后就不动了。 我安装了win2000和redhat Linux7.2,要启动盘才能进入Linux,怎样能在启动时选择进入 pb6.5 + personal oracle 815 连接数据库数据库出错!!! 哪位用VC编写XML处理程序的大侠: 100分求购密码登陆jsp程序 vb如何让我Happy 硫酸亚铁与氯气反应的方程式不要离子式 怎么鉴定红珊瑚的真假 有氯化钠和氯化钾的混合物,它所钾钠的物质的量的比为3:11.求氯化钾的质量分数2.含1mol氯离子的该混合物的质量 蚂蚁的英语单词怎么拼? 红珊瑚鉴别最近买了一个红珊瑚小枝子,用火烧的方法试了一下,发现受过高温的地方变成了灰白色,还略带一点黄色.这是红珊瑚吗.真品红珊瑚用火烧的话会是什么现象. 有一种氯化钠与氯化钾的混合物,它所含钾与钠的物质的量之比为3:1,求:(1)混合物中氯化钾的质量有一种氯化钠与氯化钾的混合物,它所含钾与钠的物质的量之比为3:1,求:(1)混合物中氯化钾的质 铁和硫酸反应生成氧气和硫酸亚铁的化学方程式 铊是一种什么金属?了解的朋友最好详细介绍下, 有一种氯化钠与氯化钾的混合物,它所含钾与钠的物质的量之比为3:1,求混合物中氯化钾的质量分数(2)含1mol氯离子的该混合物的质量 1.测出一胶头滴管的水的体积,再测出一滴管水共有几滴? 不锈钢316氮化处理后对抗腐蚀性有何影响 为什么纯金属结晶必须过冷?从能量角度考虑 高锰酸钾和硫酸亚铁氨反应的化学方程式是什么? 为什么不锈钢在除碳之后的抗腐蚀性更强 做盐酸和氢氧化钠的中和反应实验时,为什么要用胶头滴管将酸溶液滴入碱溶液? 纯铁比生铁更难发生点化学腐蚀 这句话对不? 两个问题,1,金属结晶的基本规律是什么?2,晶核的形核率和生长速率受哪些因素影响 怎么算氯化钾中的硫酸镁 为什么铁在潮湿空气中更易腐蚀 金属结晶的过程是一个什么和什么的过程 氯乙烷和氢氧化钠的水溶液反应能叫水解反应或者卤化反应吗? 醛基的碳原子除了跟氧原子通过双键连接外,另两个空位是不是只能和碳原子或氢原子连接呢? 新买的热水瓶里的味道要怎么除掉? 一氯乙烷与氢氧化钠的反应方程式及反应类型 一个手性碳原子左边连一个羟基,右边连一个醛基,上面连一个氢,下面连一个羟甲基怎么命名呀?(D/L) 氢氧化钠稀溶液可以与二氧化碳反应吗 要证明氯乙烷中氯元素的存在可以进行如下操作,其中顺序正确的是 ①加入AgNO3溶液,②加入NaOH溶液,③加热,,④加蒸馏水,⑤冷却后加入HNO3后酸化,⑥加入NaOH的乙醇溶液,A,④③①⑤ B,②③⑤① 普通胶头滴管怎样正确使用?滴管又怎样正确使用? S和NaOH的反应解释?就是为什么生成了那些东西 氯乙烷和氢氧化钠醇溶液共热化学方程式是什么主产物导入溴水生成什么 醇发生氧化反应,为什么羟基所在的碳原子上要有氢原子? 二氯乙烷与稀氢氧化钠溶液反应吗您好,我想知道二氯乙烷挥发气体与稀氢氧化钠溶液直接快速反应吗? 把氯乙烷假如NAOH水溶液中加热 再加入硝酸银溶液可生成白色沉淀 为什么这句话是错误的? 硫酸亚铁氧气和水方程式怎么配平 金属结晶的条件和驱动力是什么 氯化钠溶液蒸发时看到晶体析出就立即停止加热,会使氯化钠比实际值偏低吗?为什么? 硫酸亚铁溶液在氧气中氧化反应方程式?Fe3+是否沉淀? 新的热水瓶木塞如何去味道 蒸发操作时析出大量晶体时停止加热与析出晶膜时停止加热的异同…如题 硫酸亚铁与氧气的反应为什么硫酸亚铁或氯化亚铁溶液久置在空气中会慢慢变成硫酸铁和氯化铁是否因为亚铁离子在空气中被逐渐氧化成铁离子?如果是 请写出反应的方程式 如何去除暖瓶木塞松香味道呢 蒸发时,边蒸发边搅拌到有晶体出现时停止加热哪里操作错误? 烧开水的水壶如何去除其中的水垢 热水瓶木塞有味道,怎么去除 乙醇与金属反应时,为什么是乙醇分子中羟基中O-H键断裂,而不是甲基上的碳氢键断裂? 如何去除壶里的污垢,暖水壶和烧开水的壶里都有 怎样快速去除暖瓶木塞异味 碳酸钠晶体(Na2CO3・xH2O)的混合物,为了测定x值,某同学为了测定碳酸钠晶体Na2CO3・xH2O的x值,某同学将碳酸钠晶体放入坩埚中加热到不含结晶水,发生的反应为Na2CO3・xH2O==△==Na2CO3+xH2O 有机物中一个碳原子上可以同时连氢原子和羟基吗? 请问这块印度尼西亚珊瑚化石珊瑚玉化石的价格 将28.6g碳酸钠盐的结晶水合物(Na2CO3·xH2O)加热至完全失去结晶水,得到无水化合物10.6g,试求x的值 为什么必须在OH在连有羟基碳的相邻的碳原子上有氢原子则可以消去为什么必须有H?O、N什么的不行吗?不就是为了能形成不饱和键吗.那为什么不保证在连有羟基碳的碳原子上有氢原子或是其 与Al同元素且相邻元素的单质与氢氧化钠溶液反应的离子方程式 加热2.86克结晶碳酸钠(Na2co3.xH2O),除去结晶水后,剩余粉末质量为1.06克,则x值为A.2 B.5 C.7 D.10 亲,次氯酸与碳碳双键加成时拆成羟基与氯原子还是氢原子与氯氧基? 红珊瑚价格 红珊瑚鉴别 红珊瑚手链我想知道红珊瑚的价格 是什么样的我也想知道红珊瑚鉴别有哪些方法我更想知道,红珊瑚手链,在 哪里可以买到真的红珊瑚网 zv99.com 这上面介绍的内容有价 碳酸钠晶体NA2CO3-10H2O加热后会失水么?加热NA2CO3-10H2O后会有什么反应? 打一英语单词 蚂蚁本来无尾巴 如何鉴定红珊瑚的真伪啊..红珊瑚有什么作用啊, 将Na2CO3•xH2O晶体2.84g溶于水,配制成250mL溶液.取出20mL这种溶液放入锥形瓶中,再逐滴加入0.2mol/L盐酸,当消耗盐酸16mL时,溶液中的Na2CO3已全部转化为NaCl和CO2.求:(1)Na2CO3溶液的物质的量浓度.(2
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘