热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

CloudStack云计算平台架构详解

第四届中国云计算大会于2012年5月23-25日在北京国家会议中心隆重举行。本次大会由中国电子学会主办,北京市经济和信息化委员会协办,中国云计算技术与产业联盟、中国电子学会云计算专家委员会承办,CSDN与《程序员》杂志协办。在2012国内公共云全面开花、云

第四届中国云计算大会于2012年5月23-25日在北京国家会议中心隆重举行。本次大会由中国电子学会主办,北京市经济和信息化委员会协办,中国云计算技术与产业联盟、中国电子学会云计算专家委员会承办,CSDN与《程序员》杂志协办。在2012国内公共云全面开花、云计算实践元年之际,本次大会云集云计算核心专家,就国内外云计算核心技术以及行业应用创新实践进行了深入探讨。

思杰系统公司VMOps创始工程师、CloudStack架构师Alex Huang

思杰系统公司VMOps创始工程师、CloudStack架构师Alex Huang带来了《CloudStack架构详解》主题演讲,他先简明扼要得介绍了CloudStack开源云计算解决方案,以及具有加速高伸缩性的公共和私有云IaaS的部署、管理和配置。并且分享了如何使用CloudStack作为基础,数据中心操作者如何快速方便地通过现有基础架构创建云服务。

文字实录如下:

大家好!谢谢大家参加CloudStack架构的详讲。我很荣幸在这里跟大家讲CloudStack的组成。

CloudStack都有哪些功能?

先看看CloudStack的功能是什么,其实它是很简单的,我们希望CloudStack能够提供相关功能给它的客户,自动的用VM,取得VM。这个问题本来是很简单的。我们先看看这个组件,组件里面有Hosts,也有主存储,这些东西连在一起,我们就会有一个Cluster ,再把这些Cluster连在一起就是Pod。

存储为什么要分两套?因为这与成本有很大关联,云端操作里面有了多东西不需要很高的IOPs。看看我们的Deployment Architecture,把Cluster连在一起就是Pod,一个Pod在一个数据中心里面可以是一个,也可以是多个,这些Pod连在一起再加上我们的二存储,这就是一个CloudStack。

这是一开始的图案,本来很简单的,可是一旦加上Control,就变得复杂了,因为它想向不同的东西支持这个运算,在网络上说一定要F5去做,它可以去Control。在User也有同样的问题,要看User是不是已经到了服务的阶层。譬如说用户只能够起5个VM,但是他要起第六个VM的时候就必须让他停止。再加。上这个Complexity,譬如某一个公司用户退户的时候,我必须要把他的数据留30天,这些东西我们都必须要做。对用户来说,我们也必须要给出很多不同的选择。譬如说,这个是很多用户想要的,就是每一个用户需要自己的Network、自己的网络,在这两个网络里面IP是一样的,那我们就不能让用户1的VM去访问用户2的VM。这是很多用户想要的,这是很普遍的,他们可以痛殴我们的VM访问互联网,但是不能从互联网回去访问这些VM。

这又是另外一种模式,以前我们VM是两个网络里面共享的,然后通过这两个网络去联络,在这里他们只有自己的网络,然后我们控制谁可以看到什么网络。同时,我们的Virtual Router可以访问顾客中心,也可以提供这个网络。在这上面他们就可以为这个顾客提供其他的服务,譬如它可以加上VM的监护。

下面看看我们的软件架构是怎么处理的,这是CloudStack Management Server的架构。这里面有OAMAPI ,也有End User API,也有Ec2API,也有其他的API。这些东西弄好之后有很多步骤。这些步骤是用Orchestration Engine弄好的。在Orchestration Engine里面我们是把步骤弄好,因为有不同的硬件、不同的物理机,他们做东西是不同的,那我们就靠这个来实现。同时,我们Management Server也会告诉其他的软件VM已经起来了或者某个用户已经不在了,这些东西要搜集在我们的Usage Server里面。

这个就是我们的Orchestration Engine,我们用它将不同的东西加到CloudStack中。这是我们的一个Plugin,如果真的需要跟它的物理机联系,它就要发命令给ServerResource,这个 ServerResource可以直接跟物理机交互,做好命令以后就返回了。

这是我们里面可以加上去的:第一个是NetworkGuru,这个NetworkGuru是告诉CloudStack可以提供这种服务。第二个是NetworkElement,在网络上提供不同的服务,因为我们有很多不同的硬件可以做这种东西,所以我们用NetworkElement,去实现这种服务。第三个是我们也有DeploymentPlanner,我们把这些东西摆在里面,让其他人去做这个。还有其他的,大家可以进去看看。

如何实现高扩展性?

软件架构设计好之后,我们还要应付其他问题,最大的问题就是Scalability。谈到Scalability有几个问题:一个是它的压力是从哪里来的,CloudStack的压力当然是用户越多要执行的任务就越多;另一个压力是管理的物理机越多,它幕后执行的服务也会越来越多;第三个是CloudStack系统哪里有限制——DB Connections和Network Bandwidth,因为云里面数据流量非常大,所以这两样东西都要控制好了。

我们先看看怎么做,把Management server 分成两步,第一步是API server,第二步是Orchestration Server。如果API访问数据库,那么API Server就去访问数据库。但是做Orchestration的时候,就让Orchestration Server把它提出来,去执行这些任务。另外一件事是物理机越来越多,我们做的事就越来越多,有很多这些幕后的服务在运行的。当物理机越来越多时,我们这个服务就越来越忙了。

我们可以看两套不同的软件写在CloudStack,有些什么问题和CloudStack是怎样处理问题的。第一,我们的Stats Collector,可用来看用了多少CPU和内存,每5分钟运行一次,它代表所有的逻辑都在我们的Server上。另外一个是VMSync,它每一分钟运行一次。

我们看看这个Numbers,假设我们有1万台host,有50个VM,2个management servers就有66个requests 。结果,虽然有50万个VM,可是我们management servers需要做的东西就少很多。而且在每一个management servers上做的不同,它看哪个management servers哪些资源、哪些物理机,其他的物理机就留给其他的management servers。

软件管理和分配

另外,我们很小心地把管理分开。在这个例子里有三个不同,当我们需要在这些DataCenter里面互相移动数据的时候,我们management servers就会在里面其他的虚拟机,虚拟机有一部分插在数据中心的网络里面,另外一部分是去互联网,当这些虚拟机起来了,它就可以自己去做模板和ISO。这也一样,提供看到VM的UI,我们去起把这个Data弄进互联网,用户可以从那里看到VM的UI,management servers并不在其中。有了这么多不同的Deployment,我们首先会有一个Database cloud去提供。如果API Server发现它只需要访问数据库,它就还回去了。这每一个都可以自己去,就不再是一套的东西了。

那我们看看软件的分配是什么样的,在API Server上可以加不同的API。Orchestration Server我也谈了一点,真的要物理机联络的时候琢磨就通过这个去做。那我们看看当我们要VM的时候做什么东西,一个用户说要这个VM。如果它可以的话,就会在我们的数据库里面把所需要的东西写好。当这些东西在我们数据库里面弄好了,我们就会返回,可以继续问我们结果如何,我们也会告诉它。

这里只是比较简单地介绍CloudStack,CloudStack有三年的历史,我们也学了很多东西。对于是Design against failure,很多东西都可以failure,一旦有问题,我们会把所有的封掉。谢谢!

更多精彩内容,请关注CSDN云计算频道微博,第四届中国云计算大会专题报道。

欢迎投稿:“第四届中国云计算大会”之我见——征稿启事


推荐阅读
  • 技术总监的角色定位与代码实践
    关于技术总监是否应当参与代码编写,这一议题始终伴随着技术行业的成长而引发广泛的讨论。本文旨在从多个角度探讨技术总监参与代码编写的必要性和影响因素,包括公司背景、发展阶段及团队规模等。 ... [详细]
  • 收割机|篇幅_国内最牛逼的笔记,不接受反驳!!
    收割机|篇幅_国内最牛逼的笔记,不接受反驳!! ... [详细]
  • 本文详细探讨了Scala中单例模式的实现方式,通过关键字object来模拟其他语言中的静态成员功能,同时介绍了伴生对象的概念及其应用场景。 ... [详细]
  • 本文总结了一次针对大厂Java研发岗位的面试经历,探讨了面试中常见的问题及其背后的原因,并分享了一些实用的面试准备资料。 ... [详细]
  • 使用 Vue3 Script Setup 语法糖构建双人联机俄罗斯方块
    作为一名前端开发者,Vue3 是一个不可或缺的工具。本文通过一个实战项目——双人联机俄罗斯方块,详细介绍如何利用 Vue3 的 Script Setup 语法糖进行开发,帮助读者掌握最新的前端技术。 ... [详细]
  • 本文详细探讨了Netty中Future及其子类的设计与实现,包括其在并发编程中的作用和具体应用场景。我们将介绍Future的继承体系、关键方法的实现细节,并讨论如何通过监听器和回调机制来处理异步任务的结果。 ... [详细]
  • Scala 实现 UTF-8 编码属性文件读取与克隆
    本文介绍如何使用 Scala 以 UTF-8 编码方式读取属性文件,并实现属性文件的克隆功能。通过这种方式,可以确保配置文件在多线程环境下的一致性和高效性。 ... [详细]
  • 本文探讨了MariaDB在当前数据库市场中的地位和挑战,分析其可能面临的困境,并提出了对未来发展的几点看法。 ... [详细]
  • 探讨了小型企业在构建安全网络和软件时所面临的挑战和机遇。本文介绍了如何通过合理的方法和工具,确保小型企业能够有效提升其软件的安全性,从而保护客户数据并增强市场竞争力。 ... [详细]
  • Scala与Java的数据类型对比及特性
    本文将深入探讨Scala和Java在数据类型上的差异与相似之处,重点介绍两种语言的基本类型、引用类型及其包装类,并分析它们在面向对象编程中的表现。 ... [详细]
  • 本文详细介绍了优化DB2数据库性能的多种方法,涵盖统计信息更新、缓冲池调整、日志缓冲区配置、应用程序堆大小设置、排序堆参数调整、代理程序管理、锁机制优化、活动应用程序限制、页清除程序配置、I/O服务器数量设定以及编入组提交数调整等方面。通过这些技术手段,可以显著提升数据库的运行效率和响应速度。 ... [详细]
  • 本文深入探讨了SQL数据库中常见的面试问题,包括如何获取自增字段的当前值、防止SQL注入的方法、游标的作用与使用、索引的形式及其优缺点,以及事务和存储过程的概念。通过详细的解答和示例,帮助读者更好地理解和应对这些技术问题。 ... [详细]
  • 本文探讨了在一个物理隔离的环境中构建数据交换平台所面临的挑战,包括但不限于数据加密、传输监控及确保文件交换的安全性和可靠性。同时,作者结合自身项目经验,分享了项目规划、实施过程中的关键决策及其背后的思考。 ... [详细]
  • 深入解析Dubbo:使用与源码分析
    本文详细介绍了Dubbo的使用方法和源码分析,涵盖其架构设计、核心特性和调用流程。 ... [详细]
  • PCIe中的弹性缓冲原理解析
    PCIe是一种高速串行总线,其传输信号为差分信号,并采用同步传输方式。然而,PCIe并没有专用的同步时钟。本文将详细介绍PCIe中的弹性缓冲(Elastic Buffer)原理,探讨其如何处理时钟差异,确保数据传输的稳定性和可靠性。 ... [详细]
author-avatar
mobiledu2502926597
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有