云计算是一种按使用量付费的服务模式,这是一种能够提供可用的、便捷的、按需求的网络访问模式,计算共享池能够快速的为用户提供网络、服务器、存储、应用软件及其他服务,并且只需要花费很少的管理时间。
NIST还针对于云计算的服务模式提出了3个服务层次:
Openstack项目
Openstack最初是由NASA和Rackspace共同发起的云端计算服务项目,该项目以Apache许可证授权的方式成为了一款开源产品,目的是将多个组件整合后从而实现一个开源的云计算平台,目前Openstack项目正在被红帽、IBM、AMD、Intel、戴尔、思科、微软等超过一百家厂商共同研发,并已经支持了几乎所有的常见云计算环境,拥有了良好的可扩展性,而且部署搭建Openstack服务也变得十分简单,目前国内对于云计算的需求也逐渐增加,华胜天成、高德地图、京东、阿里巴巴、百度、中兴、华为等中国企业也加入到了Openstack项目研发当中,Openstack项目也正在随着全球内得到了众多厂商的参与支持而快速成熟。
Open是开放,Stack则是堆砌之意,合起来就是将众多的功能服务堆积起来的集合,让人们通过Openstack云计算项目,能够将诸如计算能力、存储、网络和软件等资源抽象成服务,以便让用户可以通过互联网远程来享用,付费的形式也变得因需而定,调整方便,拥有极强的虚拟可扩展性,是公共和私有云的建设与管理软件中的优秀开源项目。
功能 | 项目名称 | 描述 |
计算服务 | Nova | 负责虚拟机的创建、开关机、挂起、迁移、调整CPU、内存等规则。 |
对象存储 | Swift | 用于在大规模可扩展系统中通过内置的冗余及高容差机制实现对象存储的系统。 |
镜像服务 | Glance | 用于创建、上传、删除、编辑镜像信息的虚拟机镜像查找及索引系统。 |
身份服务 | Keystone | 为其他的功能服务提供身份验证、服务规则及服务令牌的功能。 |
网络管理 | Neutron | 用于为其他服务提供云计算的网络虚拟化技术,可自定义各种网络规则,支持主流的网络厂商技术。 |
块存储 | Cinder | 为虚拟机实例提供稳定的数据块存储的创建、删除、挂载、卸载、管理等服务。 |
图形界面 | Horizon | 为用户提供简单易用的Web管理界面,降低用户对功能服务的操作难度。 |
测量服务 | Ceilometer | 收集项目内所有的事件,用于监控、计费或为其他服务提供数据支撑。 |
部署编排 | Heat | 实现通过模板方式进行自动化的资源环境部署服务。 |
数据库服务 | Trove | 为用户提供可扩展的关系或非关系性数据库服务。 |
服务模块组件详解
Openstack是一个云计算的平台,也像是部署云操作系统的工具集,可以通过调取不同的组件来构建虚拟计算及云计算服务,比较重要的包括有计算(compute)、对象存储(Objectstorage)、认证(Identity)、仪表板(Dashboard)、块存储(Block Storage)、网络(Network)和镜像服务(image service),Openstack服务组件协同工作拓扑:
Nova提供计算服务
API服务器用于提供云计算设施与外界交互的接口,也是用户对云计算设施进行管理的唯一通道,用户通过网页来调用各种API接口,再由API服务器通过消息队列把请求传递至目标设置进行处理。
Rabbit MQ Server(消息队列):
Openstack在遵循AMQP高级消息队列协议的基础之上采用了消息队列进行通信,异步通信的方式更是能够减少了用户的等待时间,让整个平台都变得更有效率。
Nova-compute(运算工作站):
运算工作站通过消息队列接收用户的请求并执行,从而负责对主机实例的整个生命周期中的各种操作进行处理,一般会架设多台计算工作站,根据调度算法来按照实例在任意一个计算工作站上部署。
Nova-network(网络控制器):
基于LVM的实例卷能够为一个主机实例创建、删除、附加卷或从主机中分离卷。
Nova-scheduler(调度器)
调度器以名为"nova-schedule"的守护进程方式进行运行,根据对比CPU架构及负载、内存占用率、子节点的远近等因素,使用调度算法从可用的资源池中选择运算服务器。
Glance提供镜像服务
Openstack镜像服务是一套用于主机实例来发现、注册、索引的系统,功能相比较也很简单,具有基于组件的架构、高可用、容错性、开发标准等优良特性,虚拟机的镜像可以被放置到多种存储上。
Swift提供存储服务
Swift模块是一种分布式、持续虚拟对象存储,具有跨节点百级对象的存储能力,并且支持内建冗余和失效备援的功能,同时还能够处理数据归档和媒体流,对于超大数据和多对象数量非常高效。
Swfit代理服务器:
用于通过Swift-API与代理服务器进行交互,代理服务器能够检查实例位置并路由相关的请求,当实例失效或被转移后则自动故障切换,减少重复路由请求。
Swift对象服务器:
用于处理本地存储中对象数据的存储、索引和删除操作。
Swift容器服务器:
用于统计容器内包含的对象数量及容量存储空间使用率,默认对象列表将存储为SQLite或者MYSQL文件。
Swift帐户服务器:
与容器服务器类似,列出容器中的对象。
Ring索引环:
用户记录着Swift中物理存储对象位置的信息,作为真实物理存储位置的虚拟映射,能够查找及定位不同集群的实体真实物理位置的索引服务,上述的代理、对象、容器、帐户都拥有自己的Ring索引环。
Keystone提供认证服务
Keystone模块依赖于自身的Identity API系统基于判断动作消息来源者请求的合法性来为Openstack中Swift、Glance、Nove等各个组件提供认证和访问策略服务,
Horizon提供管理服务
Horizon是一个用于管理、控制Openstack云计算平台服务器的Web控制面板,用户能够在网页中管理主机实例、镜像、创建密钥对、管理实例卷、操作Swift容器等操作。
Quantum提供网络服务
重要的网络管理组件。
Cinder提供存储管理服务
用于管理主机实例中的存储资源。
Heat提供软件部署服务
用于在主机实例创建后简化配置操作。
------------------------------------------------------------------------------------------------------------------------------------
安装Openstack软件
为了能够让云计算平台发挥到最好的性能,我们需要开启虚拟机的虚拟化功能,内存至少为4GB(推荐8GB以上),并添加额外的一块硬盘(20G以上)。
主机名称 | IP地址/子网 | DNS地址 |
openstack.linux.com | 192.168.10.10/24 | 192.168.10.10 |
设置服务器的主机名称:
使用vim编辑器写入主机名(域名)与IP地址的映射文件:
将服务器网卡IP地址配置成"192.168.10.10"后测试主机连通状态:
创建系统镜像的挂载目录:
写入镜像与挂载点的信息:
挂载系统镜像设备:
写入基本的yum仓库配置信息:
下载EPEL仓库源以及Openstack-juno的软件安装包,并上传至服务器的/media目录中:
Openstack Juno——云计算平台软件
Openstack云计算软件能够将诸如计算能力、存储、网络和软件等资源抽象成服务,以便让用户可以通过互联网远程来享用,付费的形式也变得因需而定,拥有极强的虚拟可扩展性。
EPEL——系统的软件源仓库
EPEL是企业版额外的资源包,提供了默认不提供的软件安装包
分别解压文件:
分别写入EPEL与openstack的yum仓库源信息:
将/dev/sdb创建成逻辑卷,卷组名称为cinder-volumes:
重启系统:
安装Openstack的应答文件:
安装openstack服务程序:(这里如果报错的话请指定你的DNS和检查网络配置)
创建云平台的网卡配置文件:
修改网卡参数信息为:
将网卡设备添加到OVS网络中:
重启系统让网络设备同步:
执行身份认证脚本
[cc lang="bash"]
打开浏览器进入http://192.168.10.10/dashboard
如果在服务器上试报错的话就重启一下网卡,刚才没重启。
查看登录的帐号密码:
我们这里账号是admin 密码是1e88514c368f419c
输入帐号密码后进入到Openstack管理中心:
使用Openstack服务
配置虚拟网络
要想让云平台中的虚拟实例机能够互相通信,并且让外部的用户访问到里面的数据,我们首先就必需配置好云平台中的网络环境。
Openstack创建网络:
编辑网络配置:
点击创建子网:
创建子网信息:
填写子网详情(DHCP地址池中的IP地址用逗号间隔):
子网详情:
创建私有网络:
创建网络:
填写网络信息:
设置网络详情:
查看网络信息:
添加路由信息:
填写路由名称:
设置路由的网关信息:
设置网关:
在网络拓扑中添加接口
添加接口信息:
路由的接口信息(需要等待几秒钟后,内部接口的状态会变成ACTIVE):
几秒钟之后(或者你刷新一下)
创建云主机类型
我们可以预先设置多个云主机类型的模板,这样可以灵活的满足用户的需求,先来创建云主机类型:
填写云主机的基本信息:
创建上传镜像:
Cirros是一款极为精简的操作系统,非常小巧精简的Linux系统镜像,一般会在搭建Openstack后测试云计算平台可用性的系统,特点是体积小巧,速度极快,那么来上传Cirros系统镜像吧:
查看已上传的镜像(Cirros1系统上传速度超级快吧!):(由于创建Cirros的时候卡住了,不能删除,只能重新上传一个)
创建主机实例
创建云主机实例:
填写云主机的详情(云主机类型可以选择前面自定义创建的):
查看云主机的访问与安全规则:
将私有网络网卡添加到云主机:
查看安装后的脚本数据:
查看磁盘的分区方式:
主机实例的孵化过程大约需要10-30秒,然后查看已经运行的实例:(由于我这里电脑太卡,时间需要很长)
查看实例主机的网络拓扑(当前仅在内网中):
为实例主机绑定浮动IP地址:
为主机实例添加浮动IP
选择绑定的IP地址:
将主机实例与IP地址关联:
此时再查看实例的信息,IP地址段就多了一个数据值(192.168.10.51):
尝试从外部ping云主机实例(结果是失败的):
原因是我们没有设置安全组规则那,需要让外部流量允许进入到主机实例中:
填写策略组的名称与描述:
管理安全组的规则:
添加安全规则:
允许所有的ICMP数据包流入(当然根据工作有时还需要选择TCP或UDP协议,此时仅为验证网络连通性):
编辑实例的安全策略组:
将新建的安全组策略作用到主机实例上:
再次尝试从外部ping虚拟实例主机:
添加云硬盘
云计算平台的特性就是要能够灵活的,弹性的调整主机实例使用的资源,我们可以来为主机实例多挂载一块云硬盘,首先来创建云硬盘设备:
填写云硬盘的信息(以10GB为例)
编辑挂载设备到主机云实例:
将云硬盘挂载到主机实例中:
查看云主机实例中的硬盘信息:
控制云主机实例
经过上面的一系列配置,我们此时已经创建出了一台能够交付给用户使用的云主机实例了,查看下云平台的信息:
编辑安全策略,允许TCP和UDP协议的数据流入到云主机实例中:
分别添加TCP和UDP的允许规则:
成功登录到云主机实例中(默认帐号为"cirros",密码为:"cubswin:)"):
这是我第二次登录了,所以可能和第一次登录不太一样,直接就输入密码进来了。我用的是Xshell工具登录的。
查看云主机实例的网络情况:
挂载刚刚创建的云硬盘设备:
最后挂载上查看,大功告成。