--------------------------------------------------------------------------------------
版权所有:超图研究所(www.supermap.com)
Blog: http://blog.csdn.net/chinagissoft
QQ群:16403743
宗旨:专注于"GIS+"前沿技术的研究与交流,将云计算技术、大数据技术、容器技术、物联网与GIS进行深度融合,探讨"GIS+"技术和行业解决方案
转载说明:文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!
--------------------------------------------------------------------------------------
软件资源
关于部署私有云的软件资源我们需要考虑操作系统,虚拟机管理程序(HyperVisor)以及OpenStack相关组件,接下来我们就介绍一下如何从这些不同软件维度来选取最为适合的技术路线。
=========================OS=================================
操作系统一般情况下,以OpenStack为例,主流的Linux操作系统都支持部署OpenStack,例如企业级的Redhat,同级免费的CentOS,Ubuntu、SUSE等等,但是我们应该怎么选择合适的操作系统呢?
个人认为既然OpenStack都支持在上述操作系统部署,我们应该选择自己最擅长的操作系统作为安装环境,虽然都是Linux操作系统,但是还是有许多不一样的地方,选择熟悉的操作系统对于我们在安装、部署、优化等提供非常大的方便。如果你这些并不考虑,以下你可能需要注意一下:
1、Ubuntu
由于OpenStack是在Ubuntu操作系统研发的,所以Ubuntu系统对OpenStack有天然的融合,该操作系统在国外特别流行,但是在中国用户并不太多,不过例如超图软件公司却选择Ubuntu操作系统,不仅仅是因为OpenStack从全球用户部署来说是最流行的环境,而且还有非常多的问题解析,最重要的是Ubuntu与国产操作系统——中标麒麟有天然的父子关系,所以这也是所谓的国产化操作系统,对于致力于中国软件发展来说,对超图来说是一个非常好的选择。
2、CentOS
CentOS操作系统是中国OpenStack用户选择最多的系统,在我们学习OpenStack的QQ群中,大部分用户都选择该操作系统,该操作系统的操作跟Redhat基本类似,而且无需RHEL的许可,所以该操作系统也非常多。
3、RHEL
说实话,红帽系统是Linux企业级的明星产品,但是对于开源OpenStack来说,用这个系统并不多,已经过多商业化的RHEL本身与开源有所背离,不过如果你使用RH的RDO部署OpenStack,购买了RH的服务用户肯定会使用该系统,好处自然是宿主机的系统安全性和可靠性的保障。
其他操作系统在国内基本用的很少,建议用户也不要使用,如果出现了什么问题,可能连响应环境的解决方案都不好查找。
=========================虚拟机管理器=================================
虚拟机管理器,我们也称之为hypervisor,
Hypervisor是一种运行在物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享一套基础物理硬件,因此也可以看作是虚拟环境中的“元”操作系统,它可以协调访问服务器上的所有物理设备和虚拟机,是所有虚拟化技术的核心。
我们常说的Hypervisor包括:KVM、Xen、Esxi、LXC、Hyper-V等,相比较这几个不同类型,由于Esxi和Hyper-V来自商业化的虚拟化软件,其他都是开源,LXC为容器相关,所以主流的开源以KVM和XEN,最早Xen是最为用户接受的一种技术方案,Xen最早是剑桥大学,包括现在很多厂商的私有云平台产品都是基于Xen,例如华为Fusion、曙光的Cloudview等,不过近几年来,KVM的风头已经超过了Xen,由于Linux已经从内核级别集成了KVM,所以天然关系也为KVM在Linux的优化带来了便利,OpenStack也是以KVM为hypervisor,不过OpenStack也集成上述多种Hypervisor,也就是说加入你的vSphere或者Hyper-V虚拟机也可以通过OpenStack来统一管理,这也为OpenStack的推广积累了更多的用户群,所以如果你还在犹豫的话,建议首先KVM作为hypervisor。
当然,这么多的Hypervisor ,如果有一个统一的管理方式当然是一件非常好的事情,Libvirt为多种Hypervisor提供了一种统一的管理方式,它是一个软件集合。它提供了如下几种方式:
•API库
•后台运行程序
•命令行工具(virsh)
•提供虚拟机的创建、启动、关闭、删除、恢复、暂停、回滚、迁移等功能。
•管理包括虚拟网卡、虚拟内存、虚拟CPU、虚拟磁盘等虚拟机使用的外部设备。
•提供远程连接功能,通过virsh或者API来管理物理机的hypervisor。
个人理解,这一块是虚拟化的相关知识,也是学习OpenStack非常重要的技术基础,如果已经熟悉OpenStack的用户可以通过管理界面创建虚拟机,其实本质上是通过libvirt来管理多个hypervisor,但是最终还是使用KVM来实施真正的虚拟机操作。
所以KVM可以理解为底层技术,Libvirt可以理解为KVM的二次封装,OpenStack可以理解为有一个可视化的管理界面来实现功能,有了这些技术选择,用户可以根据自己的需求来选择不同的技术。如果你想做一个私有云的产品,你更多的是选择KVM、Xen来底层开发,如果你只是希望使用私有云技术为你自己的产品或者业务提供便利,还是选择现有的技术方案来站在巨人肩膀,超图软件无疑是选择了后者。
更多的参考:
通用型云须确保使用的hypervisor可以支持多数通用目的的用例,例如KVM或Xen。更多特定的hypervisor需要根据特定的功能和支持特性需求来做出选择。在一些情况下,也许是授权所需,需要运行的软件必须是在认证的hypervisor中,比如来自VMware,微软和思杰的产品。
通过OpenStack云平台提供的特性决定了选择最佳的hyperviosr。举个例子,要使通用型云主要支持基于微软的迁移,或工作人员>所管理的是需要特定技能的去管理hypervisor或操作系统,Hyper-V也许是最好的选择。即使是决定了使用Hyper-V,这也并不意味着不可以去管理相关的操作系统,要记得OpenStack是支持多种hypervisor的。在设计通用型用时需要考虑到不同的hypervisor有他们特定的硬件需求。例如欲整合VMware的特性:活迁移,那么就需要安装安装vMotion,给ESXi hypervisor所使用的VCenter/vSphere,这即是增加的基础设施需求。
在混合的hypervisor环境中,等于聚合了计算资源,但是各个hypervisor定义了各自的能力,以及它们分别对软、硬件特殊的需求等。这些功能需要明确暴露给最终用户,或者通过为实例类型定义的元数据来访问。
=========================OpenStack=================================
OpenStack是一个开源平台,包含非常多的组件,这一点可以类比于Office于word的关系。
OpenStack最早由美国国家航空航天局研发的Nova和Rackspace研发的Swift组成;后来以Apache许可证授权,OpenStack是一个旨在为公共云和专用云的建设的一个开源的云计算管理平台项目。OpenStack项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台,通过各种互补的服务提供了基础设施即服务的解决方案。
OpenStack覆盖了网络、虚拟化、操作系统、服务器等各个方面。它是一个不断更新的云计算平台项目,整个OpenStack由核心项目、孵化项目和其他相关项目构成。
- 核心项目包括Keystone、Glance、Nova、Neutron、Cinder等组件,许多用户已经基于它们搭建了自己的企业专用云平台。
- 孵化项目目前正在研发、更新、扩展和测试中,一旦它们成熟,经过社区批准,即会转化为社区的核心项目,包括Ironic、Savanna等。
- 其他相关项目主要是协助整个OpenStack组件的元数据存储、消息协同等基础工作,包括MySQL、RabbitMQ等
一个标准的云环境需要提供哪些功能呢?用户需要通过镜像文件生成一个或者多个虚拟机实例;这些虚拟机实例需要实现网络连通;如果虚拟机实例的资源不足,可以进行计算资源、存储资源的动态扩展;用户同样希望能有一个可视化的门户对云环境进行管理和性能监控,安全、智能、稳定、可扩展将是用户最关心的问题。
其实OpenStack的核心组件几乎实现了上述的所有功能(如图1),简要介绍一下OpenStack的核心项目(也称组件)的主要功能:
- Nova组件,提供计算服务。该组件是一套控制器,用于管理虚拟机实例的生命周期,根据用户需求提供虚拟服务。负责虚拟化实例的创建、调度、开机、关机、挂起、暂停、调整、迁移、重启、销毁等操作。
- Glance组件,提供镜像服务。一套虚拟机镜像查找及检索系统,支持多种虚拟机镜像格式(AKI、AMI、ARI、ISO、QCOW2、RAW、VDI、VHD、VMDK),有创建上传镜像、删除镜像、编辑镜像基本信息的功能。Nova组件可以通过该服务来当创建虚拟机时,安装各种不同用途的应用虚拟机。
- Keystone组件,提供认证服务。对所有OpenStack服务提供身份验证、服务规则和服务令牌的功能,管理租户、租户用户、租户用户角色等功能。该组件对所有OpenStack服务提供了一个目录,可以通过该目录查询和访问部署的各种服务。
- Neutron组件,提供网络服务。提供云计算的网络虚拟化技术,为OpenStack其他服务提供网络连接服务。为用户提供接口,可以定义Network、Subnet、Router,配置DHCP、DNS、L3服务,网络支持Flat、GRE、VLAN、VXLAN。插件架构支持许多主流的网络厂家和技术,如OpenvSwitch。
- Cinder组件,提供块存储服务。为运行虚拟机实例提供稳定的持久化数据块存储服务,它的插件驱动架构有利于块设备的创建和管理,如创建卷、删除卷,在实例上挂载和卸载卷。
- Swift组件,提供对象存储服务。通过RESTful API来保存和访问任意非结构化数据,通过数据的自动复制和高度可扩展性,达到数据的高度容错和稳定可靠可为Glance提供镜像存储,为Cinder提供卷备份服务。
- Horizon组件,提供仪表盘服务。为整个OpenStack环境提供了一个基于Web的管理门户,用于简化用户对服务的操作,例如:创建和启动虚拟机、分配网络、配置访问控制等。
- Ceilometer组件,提供运维计费服务。该组件收集整个OpenStack资源使用数据,包括计算、镜像、网络,存储等,可以用来实现云平台的计费功能,同时也可以用于云平台的性能监控以及其他统计。
- Heat组件,提供编排服务。提供了一种通过模板定义的协同部署方式,实现云基础设施软件运行环境(例如各种复杂网络、存储,还可以将各种环境和用户数据注入到创建的虚拟机实例中)的自动化部署。
一般情况下,我们并不需要安装所有组件,但是需要了解这些组件保护的功能,这样我们在部署过程中根据需求进行部署,但是有几个组件是必须安装的,包括Keystone、Glance、Nova、Neutron、Horizon等。
=========================增强软件=================================
关于增强软件,更多是对于基于OpenStack的高可用选择方面的使用,这方面可能需要在熟悉OpenStack的基础上更加高技术的需求。
通用型OpenStack的软件部署不仅仅是OpenStack特定的组件。一个典型的部署,如提供支撑功能的服务,须包含数据库,消息队列,以及为OpenStack环境提供高可用的软件。设计的决定围绕着底层的消息队列会影响到控制器服务的多寡,正如技术上为数据库提供高弹性功能,例如在MariaDB之上使用Galera。在这些场景中,服务的复制依赖于预订的机器数,因此,考虑数据库的 节点,例如,至少需要3个节点才可满足Galera节点的失效恢复。随着节点数量的增加,以支持软件的特性,考虑机柜的空间和交换机的端口显得非常的重要。
多数的通用型部署使用硬件的负载均衡来提供API访问高可用和SSL终端,但是软件的解决方案也要考虑到,比如HAProxy。至关重要的是软件实现的高可用也很靠谱。这些高可用的软件Keepalived或基于Corosync的Pacemaker。Pacemaker和Corosync配合起来可以提供双活或者单活的高可用配置,至于是否双活取决于OpenStack环境中特别的服务。使用Pacemaker会影响到设计,假定有至少2台控制器基础设施,其中一个节点
可在待机模式下运行的某些服务。
Memcached是一个分布式的内存对象缓存系统,Redia是一个key-value存储系统。在通用型云中使用这两个系统来减轻认证服务的负载。memcached服务缓存令牌,基于它天生的分布式特性可以缓减授权系统的瓶颈。使用
memcached或Redis不会影响到用户的架构设计,虽然它们会部署到基础设施节点中为OpenStack提供服务。
关于这方面的技术参考:
http://blog.csdn.net/chinagissoft/article/category/5613025