什么是云计算
最早提出来是亚马逊公司,发家是靠卖书,最后自己把自己卖书的业务移到互联网上,随着自己公司业务的增加,自己公司内部服务器就不够用了,慢慢就开始做虚拟化,做了虚拟化之后,随着公司组织架构的复杂性,虚拟化满足不了公司业务部门的要求,后来基于虚拟化技术做了二次的研发,它满足不了什么呢,公司部门他有不同的业务线,不同部门也需要不同的物理服务器,那么他还会处理一些部门申请的工单,比如我这么个部门要多一台服务器,多一台虚拟机,用完以后也没有一定的回收策略,所以呢,虚拟化技术是满足于不了公司业务,所以呢,亚马逊公司就开发了一个云计算平台,AWS,亚马逊云。
OpenStack是美国的航天航空宇航局看到人家亚马逊做的云计算做的挺好的,但是呢,你想用人家的,你得花钱,他是收费的,是闭源的,所以,他联合了其他公司,开发了OpenStack平台,它是一个开源的云计算架构。
从IT发展史来说,它分为三个阶段:
最早呢是物理服务器阶段,咱们中国互联网最早是从2000年兴起的,2000年时慢慢有了QQ,当时去网吧只有局域网,并没有外网,不能上Internet,后来有了互联网,在那个时候,搞IT的人其实挺low的,在公司里也就搬搬饮水机,修修电脑,接接线,最后呢,随着互联网的兴起发展,公司内部的服务器需要把自己的服务通过互联网对外提供出去,那么公司自己的业务涉及到互联网肯定需要软件,然后慢慢呢,IT它的技能随着时间推移也需要进化,学习心得东西,最后呢,IT越来越牛逼了。最早呢,我们的IT技术都是把软件,系统放到服务器上跑的,一般呢这个服务器跑一个服务,他不说把所有的服务都运行在一个服务器上,如果说都运行在一个服务器上,你的服务器坏了,你的整套业务就瘫了。
随着技术的慢慢的演化,虚拟化架构出来了,它可以把单个物理服务器虚拟成多个小的逻辑的服务器给我们提供服务,但是呢,虚拟化技术只是把一个服务器虚拟成多个服务器而已,其他的功能很简单。比如说,跟云计算相比,只是提供了虚拟化技术,云计算可以提供不同的资源,我可以根据客户需求它弹性的去给你客户满足,网络,存储等,而且你只需要在云计算平台里提需求就好,至于后台怎么去实现的,你不用去管,但是虚拟化不行,如果说你在虚拟化里要求启动一台虚拟机,必须告诉虚拟化我这台虚拟机启在哪个物理节点上,哪个物理服务器上,如果这个服务器瘫了的话,也没有其他的高级功能,对这个服务器里业务进行弹性伸缩。
最后云计算这项技术诞生了,他是一个按使用量付费的商业模式,他这个模式根据用户的需求不同,用户只要通过互联网,可以从云计算里面获取不同的资源(资源包括网络,服务器也值计算,存储,应用软件,服务)。
云计算提供的三个层次:
SaaS( Software as a Service): 把在线软件作为一种服务。
比如百度网盘,我们用户拿到的是一款软件,你拿过来直接用,我们用户不用管这款软件的客户端是运行在什么样的服务器里,它是通过什么样的语言开发出来的,你直接享受服务就可以。
Paas( Platform as a Service): 把平台作为一种服务。
我们有服务器以后,你要用服务器做开发程序,他必须安装一些开发的环境软件,那么呢,在云计算里面,直接给你把底层的服务器以及里面需要安装的开发环境软件都给你装好了,你拿过来就可以直接用,就好比说你是做python开发的,然后你享受的是pass级别的服务,你就不需要安装pyhton底层的环境了,比如python3.7,解释器。直接就可以写代码。
Iaas( Infrastructure as a Service):把硬件设备作为一种服务。通过公有云公司去注册账户,那么你公司要上线一些服务的话,就通过你注册的公有云公司提供的虚拟的云主机,就不用你公司内部去买服务器了,每次登陆到他的平台,就可以访问到他给你提供的虚拟机。
OpenStack是云计算开源具体落实的一个项目,是由Rackspace和NASA共同开发的云计算平台,让任何人都可以自行建立和提供云端运算服务,每半年发布一次,用Python语言编写。
OpenStack历史
OpenStack社区与链接
社区
www.openstack.org, wiki.openstack.org
邮件列表
http://wiki.openstack.org/MailingLists#General_List
http://wiki.openstack.org/MailingLists#Development_List
http://wiki.openstack.org/MailingLists#Operators
如何贡献代码
http://wiki.openstack.org/HowToContribute
源代码管理
http://wiki.openstack.org/GerritWorkflow
文档
openstack架构及优势
OpenStack为私有云和公有云提供可扩展的弹性的云计算服务,这种服务云必须是简单部署并且扩展性强。
1、模块松耦合
耦合:比如拿一个应用来说,你有一个服务,那么这个服务,其实最后达成一个应用的话,底层有很多很多小组件,必须相互之间去联系配合,才能提供服务,这些小组件之间必须有一定的关系的联系起来,这些关系就是耦合,这些小组件关系性越强,其中的某一个坏掉了,那么其他的就不能正常工作了,所以说,松耦合性越高,依赖性越低。
2、组件配置较为灵活
3、二次开发容易(必须学会python)
Compute:计算服务
Networking:网络服务,虚拟化层的网络服务,可以通过一些软件虚拟出来我们现实中的交换机,路由器,防火墙等等的物理设备
Storage:存储服务给我们提供裸磁盘
OpenStack Dashboard:管理终端,这三个服务通过一个叫管理终端来统一的调度。
openstack构成组件
OpenStack共享服务组件:(不是OpenStack这个软件提供服务有哪些)
数据库服务( Database Service )
MairaDB 及 MongoDB (部署度量服务时用到)
消息传输(Message Queues)
RabbitMQ
缓存(cache)
Memcached
时间(time sync)
NTP
存储(storge provider)
ceph、GFS、LVM、ISICI等
高可用及负载均衡
pacemaker、HAproxy、keepalive、lvs等
pacemaker:
提供一个vip,vip是提供高可用漂移的,他可以把自己负责高可用的服务,通过资源的形式,加入到自己的管理组建里面,他说的这个资源,是管理的高可用服务,比如http,数据库等。如果你要用pacemaker呢,你要把这些服务加入到他的资源管理器里,他能控制这些资源,怎么控制,就是开启,关闭,重启,它还可以可对资源的启动顺序做规定。
比如搭建lnmp网站架构,nginx依赖于数据库和php来工作,那么你这一个服务器在启动的时候,必须把这些服务调动起来,pacemaker可以设置这些服务的启动顺序,把数据库设为优先启动,再启动你的nginx,还有其他的一些服务。还可控制服务的依赖,什么意思,就是说我就想这个nginx依赖于这个数据库,如果这个数据库不起的话,我nginx不起,或者是这个数据库起在第一个节点,我想让nginx也起在这个节点。
还有一个就是粘性,我可以设置某一个服务让他固定启动到某一个节点,比如我有三个节点,nod1,nod2,nod3,平时呢,我可以设置nginx让他正常的情况下启动到nod1下面,如果这个nod1当掉了,他会漂移到nod2,nod3,当我nod1恢复了,nginx又回到nod1上面。
OpenStack核心组件:
身份服务( Identity Service ):Keystone
计算( Compute ): Nova
镜像服务( Image Service ): Glance
网络 & 地址管理( Network ): Neutron
对象存储( Object Storage ): Swift
块存储 (Block Storage) : Cinder
UI 界面 (Dashboard) : Horizon
测量 (Metering) : Ceilometer
部署编排 (Orchestration) : Heat