分分钟快速开始OpenStack指南

Posted 云技术实践

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分分钟快速开始OpenStack指南相关的知识,希望对你有一定的参考价值。


目录

历史与愿景

关于OpenStack

OpenStack项目组件介绍

快速开始命令集

OpenStack使用案例

部署模型…以及更多精彩内容!


历史与愿景

   在今天,OpenStack是领袖级的私有云解决方案,以大量基础设施供应商,多个发布版本以及多种可选的部署模式来满足你的需求。最令人感兴趣的是这个成熟的项目的代码库是完全开源的。这意味着会有更多的开发者以及运维人员正在一个超越传统软件开发与支持的模式下持续学习、优化、修复软件。


   OpenStack是由Rackspace 和NASA在2010年携手共同创建。自项目成立以来,它成长为可以支持如沃尔玛,eBay以及Comcast等客户,并且收到了多元的技术公司、学术机构的代码贡献,其中包括Intel与MIT。


   OpenStack社区是全球增长最快的开源项目组织之一,并拥有超过12000家公司成员以及53000位个人贡献者。它由OpenStack基金会管理,OpenStack基金会致力于提升企业或组织开发、发布以及采用OpenStack的水平。据451-Research统计,2016年企业或组织使用OpenStack的收益是1.7亿美元,预期收入将在2017年增长至2.4亿美元并在2018年增长至3.3亿美元。



采用趋势

据SUSE提供的依据动态市场观察的另一项调查结果显示,96%的企业能够认识到采用开源私有云可以取得市场优势。尤其是在采用者可以在开放平台上识别成本、运营效率、标准化程度以及他们在采用OpenStack的时候不会担忧被供应商锁定成为他们做选择时的最大的影响因素。最后一个因素值得进一步阐述:


OpenStack提供了一个选择的集合,包括KVM和VMware ESX等虚拟化技术,基于开源技术的网络架构的多个选项,包括科,Juniper,VMware以及其他项目的架构,还有来自NetApp,EMC,Dell以及其他众多公司提供的存储技术架构选项。各种规模的组织都使用OpenStack来实现这些以及其他的好处。


正如你可能预料到的,各类组织在OpenStack上运行着不同的工作负载,例如:软件开发和测试,持续集成与交付,基础设施服务于网络服务。21%的OpenStack采用者报告部署企业中间件的数量正在提升。


关于OpenStack


软件&项目

    OpenStack私有云平台是由多个软件项目集合集中工作来提供管理预置数据中心内的多种物理资源诸如计算(Nova),存储(Cinder)以及网络(Neutron)的能力。它也提供一个为数众多的API集合和一个中央控制台((Horizon)来管理云资源。


   OpenStack为了运行于高性价比的硬件上而设计。为了给那些希望使用特殊的企业级硬件的用户服务,OpenStack支持思科,Juniper,IBM,Dell EMC以及许多其他企业提供的特殊驱动。


   OpenStack遵循一年2次发布版本更新的节奏,一个发行版在春季末释出,另一个版本在深秋释出。每个版本都不仅包含计算、网络,存储,也包括自动化/编排(Heat),大数据/ Hadoop(Sahara),容器编排管理(Magnum)和其他功能的项目。


   请移步GitHub查看代码更新的细节。比如,计算项目的开源代码可以在openstack/nova目录中查到,而块存储项目在openstack/cinder目录中。


总体架构

     之前已提到过,OpenStack是一整套模块化的项目,包括计算、存储、网络、镜像、日志服务以及其他许多项目的集合。如下图所示,每个项目的运行时进程都使用诸如RabbitMQ(消息总线)的服务互相通信。每个服务还公开了一个API端点,该端点用于接收请求并与其他服务通信。例如,Cinder(块存储)服务公开一个API端点以便于与Nova(计算服务)通信。


虽然OpenStack项目的代码是免费的,由于多个项目间繁复的依赖性,自己动手部署的方式非常复杂。于是,多种部署方式各异的第三方发行版应运而生,如:托管私有云,一站式私有云解决方案,以及软件及服务模式管理OpenStack方案。



REST API,CLI&HORIZON(控制台)


   OpenStack中的服务使用REST应用程序接口从客户端接收请求并发送给其它服务来做处理,在不维护任何服务的状态信息的情况下。让我们想象一个场景,在这个场景中您需要一个新的块存储卷。Cinder-api进程接收到了申请一个新的块存储卷的请求,然后把这个信号通过消息总线或队列传递给了cinder调度器和cinder卷管理进程。OpenStack的其他组件,如计算(Nova)和镜像(Glance)也有类似的服务进程:nova-api 和 glance-api。


  从运维人员的视角来看,REST API是提供给命令行接口(CLI)以及控制台命令运行的基础。下面的命令展示了用户使用“cinder create”命令以及相应的REST API请求创建一个新的Cinder卷。


(openstack) workstation:localdir p9user$ cinder


--debug create --name pf9-1G 1


DEBUG:keystoneauth:REQ: curl -g -i –X POST

 https://p9user.p9.net/cinder/v2/f175f441ebbb4c2b8fedf6469d6415fc/volumes -H “User-Agent: python-cinderclient” -H “Content-Type: application/json” -H “Accept: application/json” -H “X-Auth-Token: {SHA1}token” -d ‘{“volume”:{“status”: “creating”, “user_id”: null, “name”: “pf9-1G”, “imageRef”: null, “availability_zone”: null,“description”: null, “multiattach”: false, “attach_status”: “detached”, “volume_type”: null, “metadata”:{}, “consistencygroup_id”: null, “source_volid”: null,“snapshot_id”: null, “project_id”: null, “source_replica”: null, “size”: 1}}’

   

   从上面的命令行片段中可以看到,“cinder create”命令就通过命令行发出了命令来创建一个1G大小的叫做“pf9-1G”的卷组。


OpenStack项目组件介绍


OpenStack由许多模块化的服务组成,这些服务的代码都在开源的Apache许可证下发布。


计算


      OpenStack计算服务(Nova)提供供应、删除、管理实例的服务(虚拟机)。它 支持多种虚拟化技术,包括KVM,Vmware ESXi以及其他的技术。


存储


   OpenStack存储服务提供块存储,对象存储和文件共享存储技术的支持。快存储为 虚拟机实例提供虚拟存储,另外,对象存储支持可扩展、分布式、非结构化的数据存储 。


   OpenStack块存储服务(Cinder)为虚拟化服务提供创建、附加、取消附加快存储设备的服务。它与OpenStack的计算服务完全集成,可以通过控制台进行管理,并支持多种企业级平台的特有存储驱动软件例如Dell EMC,HPE,Netapp,而且它还支持卷组快照服务。


    OpenStack对象存储(Swift)为云平台提供高性价比、API易感知、分布式、冗余、可扩展的存储备份、归档以及数据保持服务。它是一个杰出的存储镜像,视频,虚拟机镜像以及文档的存储平台。


网络


  

共享服务


   与计算,存储,网络这三个基础架构模块不同,OpenStack有几种服务可以把这些基础组件整合在一起,使OpenStack就像一个普通的系统为用户提供统一的体验。


身份认证


   OpenStack身份认证服务(Keystone)供应身份认证以及证书服务。它为用户提供一个中央目录来指引用户去使用那些他们有权限使用的服务。它支持集成一些令人兴奋的后端目录服务例如LDAP。


镜像

  

  OpenStack镜像服务(Glance)为磁盘以及系统镜像提供API感知与发现,注册以及交付服务。Glance服务可以将镜像存储在多种类型的后端存储服务中,包括OpenStack的对象存储服务,Swift。OpenStack镜像服务可以容纳多种镜像存放格式,包括Raw,VHD,VMDK以及VDI。


监控


    OpenStack 监控服务((Ceilometer)聚合应用和性能数据并且能够为所有OpenStack服务提供阀值报警服务。


编排


   OpenStack编排服务(Heat)提供自动化的,基于模板的基础设施部署能力。与监控服务集成使用可以提供可选的实例自动伸缩服务。


数据库


   OpenStack 数据库服务(Trove)在OpenStack平台上提供数据库即服务功能(DBaaS)。

   

控制台


   OpenStack控制台服务提供一个集中式的用户图形界面,供应并管理云资源。计费以及监控等第三方服务可以非常方便地集成到OpenStack控制台上。OpenStack服务亦可以通过API来调用。


数据处理


   OpenStack大数据处理服务提供分布式数据处理堆栈以及可整合的管理接口。


其他项目


   OpenStack平台还有许多可选的服务模块可以互相集成。这些服务中包括应用日志记录(Murano),裸金属(物理机)服务(Ironic),容器供应编排服务(Magnum),共享存储服务(Manila) 。

 

快速开始命令集


    作为管理控制台(Horizon)的备选实施方案,OpenStack提供了命令行接口(CLI)来进行查询,更新,创建与删除云资源并且提供了许多其他的操作。CLI可以使用下列命令来安装到你的笔记本或客户端机器上(首先安装Python3.5)。


$ pip install python-openstackclient


    如果需要一个完整的客户端安装说明,请参考OpenStack官方说明文档。为了熟悉使用CLI,有必要使用一个可以 “溯源(sourced)”的合适的证书来对使用者做验证。下面这个例子展示了一个openrc文件以及从这个文件中获取的环境变量。


    在图中所示的CLI命令行中,遗留的与新版本都被展示了。新的,统一的OpenStack客户端提供了更加易于使用的命令。


$ cat openrc

export OS_USERNAME=osuser

export OS_TENANT_NAME=engineering

export OS_PASSWORD=<enter password>

export OS_AUTH_URL=https://<openstack-auth-url>/

keystone/v2.0

export OS_REGION_NAME=us-east-1

$ source openrc


秘钥管理


    创建以及上传SSH秘钥


    为了在OpenStack云平台上创建服务(例如Nova实例)。有必要在集群内添加一个公钥并创建一个镜像。SSH秘钥可以使用如下命令创建:


    创建密钥对


$ ssh-keygen -t rsa

   

   上传公钥


    使用刚刚执行的命令所提供的信息,就可以在系统里定位公钥并上传到OpenStack云平台上。


$ nova keypair-add --public-key ~/.ssh/id_rsa.pub

<keypair_name> (legacy CLI)

- or -

$ openstack keypair create --public-key ~/.ssh/id_rsa.

pub <keypair_name> (new Unified OpenStack CLI)

   

   创建一个镜像


    执行以下命令可以创建一个Glance镜像。


$ glance image-create --name <image_name> --disk-

format <disk_format> --container-format bare --file

<image_file>

- or -

$ openstack image create --container-format bare

--disk-format <disk_format> --file <image_file> <image_name>


   镜像服务支持许多镜像格式,包括qcow2,vhd,vmdk,ami,raw以及其他格式。


    启动实例


    在OpenStack云平台中随着公钥以及镜像的就位,现在可以启动虚拟机实例了。

   命令如下:


$ nova boot --image <image_name> --flavor <flavor_name>
--nic net-id=<network_id> --key-name <keypair_name>
<server_name>
- or -

$ openstack server create --flavor <flavor_name> --nic
net-id=<network_id> --key-name <keypair_name> <server_name>


    在以上命令中有一个特点,必须给服务或者实例提供合适的资源。这些特例包括 m1.small, m1.medium, and m1.large 。与此同时,也可以创建新特例。


其他Nova命令(计算/服务/实例)

   

   为了查找可用的特例,可以使用如下命令:


$ nova flavor-list

- or -
$ openstack flavor list


   下面是列出Nova实例的命令:


$ nova list

- or -
$ openstack list


  下面是关闭,重启和为实例更换镜像的命令:


$ nova rebuild <server> <image>
- or -

$ openstack server rebuild --image <image_name>
<server_name>


   显示实例日志的命令:


$ nova console-log <server>
- or -

$ openstack console log show


其他Clance命令(镜像目录)

 

    为运行中实例创建镜像:

   

   服务镜像允许用户创建一个预配置的镜像并在稍后重新使用。这些景象可以用来启动新实例并将显示镜像列出的时间。


$ nova image-create <nova_instance_name> <image_
name>
- or -

$ openstack server image create <nova_instance_name>
<image_name>


   查找可用镜像:


$ glance image-list

- or -
$ openstack image list  


   删除Glance镜像:


$ glance image-delete <image_name>
- or -

$ openstack image delete <image_name>



Netron命令(网络)



   为了查看在扁平网络,VLAN网络以及VXLAN网络环境中可用的Neutron网络拓扑,你可以运行如下命令:


$ neutron network-list
- or -

$ openstack network list


 创建一个名叫“devops_network”的新网络:


$ neutron net-create devops_network
- or -

$ openstack network create devops_network


   在“devops_network”网络中创建一个名为“devops_subnet”的子网:


$ neutron subnet-create --gateway 10.10.10.1 devops_
network 10.10.10.0/24
- or -

$ openstack subnet create --gateway 10.10.10.1
--network devops_network --subnet-range 10.10.10.0/24
devops_subnet



    在浮动IP下工作



$ neutron floatingip-list
- or -

$ openstack floating ip list

  


$ neutron floatingip-create <floating ip network>
- or -

$ openstack floating ip create <floating IP network>



$ nova floating-ip-associate <instance> <floating_ip>
- or -

$ openstack server floating ip add <instance>
floating_ip>


安全组


   一个Nova实例的安全组允许用户给实例的入网或出网流量添加规则。以下命令创建了一个名叫ssh_secgroup的安全组:


$ neutron security-group-create ssh_secgroup
- or -

$ openstack security group create ssh_secgroup


   以下命令可以为安全组添加一条规则,在下面命令的例子中,安全组开启了TCP层的22端口:


$ neutron security-group-rule-create --protocol tcp
--direction ingress --port-range-min 22 --port-rangemax 22 ssh_secgroup
- or -

$ openstack security group rule create --protocol tcp
--ingress --protocol tcp --dst-port 22 ssh_secgroup


   上面的命令还有另一种形式如下:


$ nova add-secgroup <server> ssh_secgroup
- or -

$ openstack server add security group <server> ssh_
secgroup


Cinder命令(块存储)


   Cinder提供一组可以一次性挂载到一个实例上的存储设备,并且在实例终止时依旧存在(持久卷)。Cinder卷组经常作为一组已存在的SAN存储接口,允许用户使用易于使用的API来和它们交互。


$ cinder create --name <name> <size_in_GB>
- or -

$ openstack volume create --size <size_in_GB> <volume_name>


   为Nova实例挂载一个Cinder卷组:

    

$ nova volume-attach <instance_name> <volume_name>
- or -

$ openstack server add volume <instance_name> <volume_name>


Swift命令(对象存储)


    创建一个对象存储容器


    作为块存储的附加服务,OpenStack提供对象存储服务来存储一些静态文件例如实时流媒体文件,软件包以及许多其他类型的文件,下面的命令是从Swift中上传下载命令的例子:


$ swift upload <container_name> <local_file_name>
- or -
$ openstack object create <container_name> <local_file_
name>

$ swift download <container_name> <object_name>
- or -
$ openstack object save <container_name> <object_name>

  

KeyStone命令(身份认证与访问控制)


    OpenStack使用Keystone来创建,删除与更新用户、用户组和服务运行下列命令可以创建一个新用户:


$ openstack user-create


   用户可以给不同角色分配不同的权限。管理者一般比单服务中的用户拥有更高的权限。创建新角色的命令:


$ openstack role-create <name>


    一个部门或者租户是分配给一些组织中的用户的资源的子集。例如,一个组织部署一个OpenStack私有云项目一般会有几个不同分项目(部门)例如”工程“,”金融“或”市场“,每个项目都配给一部分资源并区分用户。以下命令创建了一个租户:


$ openstack project-create <name>

    

    给用户配置一个角色:


$ openstack role add --user <user> --project

<project> <role>

   

 删除用户,项目还有一个角色:


$ openstack user delete <user>
$ openstack project delete <project>

$ openstack role delete <role>


   有许多可以在项目上设置的配额类型,以下命令展示了配额设置:


$ openstack quota set --gigabytes <GB_of_storage>
--ram <GB_of_ram> --cores <number_of_cores>

--snapshots <number_of_snapshots> <project_name>


配额可以通过以下命令查看:


$ openstack quota show <project> 


   总而言之,OpenStack CLI为许多服务提供了大量的命令。查看OpenStack已有命令的一种方式是在原有的客户端中使用命令中的”help“关键词。在标准OpenStack客户端中敲下这第一关键词可以展示出一系列可用命令。例如:


$ nova help
- or -

$ openstack server


OpenStack使用案例


     作为私有云软件的引领者。OpenStack已经以以下方式被使用了:


开放标准样板


   在一个开放的生态系统下,OpenStack允许整合许多不同的基础设施供应商,虚拟化技术,分布式模型以及部署模型。开放标准提供了灵活性:用户有繁多的计算,存储及网络供应商以及多种自动化技术例如Puppet,Ansible还有Chef等供应商以及自动化技术的选项。OpenStack平台的灵活程度可以与公有云供应商做深刻对比,究竟谁为用户工作流提供了更多样的工具集和API。


从公有云撤回


在最近的一些案例中,公有云的花费对某些组织过于昂贵以至于它们决定从中撤回一些工作流到自己预先准备的环境中。据福布斯报道,公有云在长期工作负载与高网络流量下的消费模型是不经济的。在PubMatic公有云支出增长到超过每月400000美元之后,他们决定将云负载迁移到一个基于OpenStack的部署在他们私有基础设施上的私有云,这给他们带来了与公有云相似的体验。


历史应用


公有云部署在离终端用户大约一百公里远的数据中心内,而且提供服务的基础设施一般都是X86标准的架构。因此,整合旧数据库或者依赖于特制硬件的应用难以集成进公有云。这些应用不论如何,都可以整合进一个OpenStack私有云并且让你可以使用一个普通的管理框架让现有应用工具化,自动化。


敏感数据


     据OpenStack用户调查显示,超过40%的受访者感觉到安全以及隐私是驱动他们采用私有云的前五大因素的一部分。敏感数据可能包括那些不能向网络公布设及风险与公司内部规章的雇员与公司的信息。


可发展云


     亚马逊与Netflix等公司实践DevOps方法论以增强开发组与运维组之间的合作与沟通。OpenStack提供了API来为持续集成以及持续部署流程的自动化,集成构建和快速排除软件故障赋能。使用OpenStack企业组织能创建一个自服务的门户为开发与生产环境,开发工具应用日志例如Jenkins和mysql还有为windows,Mac以及linux系统环境提供共享文件环境所需的虚拟机资源。


基础设施云


作为基础设施即服务的领导者,OpenStack提供了与众多供应商例如Cisco,IBM,Dell EMC,HPE以及其他许多厂商集成的能力。使用与厂商特制驱动共享的代码集,OpenStack提供了一个无缝路径为厂商采用灵活的,没有任何厂商锁定的基础设施云。基础设施部署者可以与在IRC频道上与厂商开发者直接沟通,故障可以通过OpenStack LaunchPad保存在文件中。Amobee的成功故事展示了使用OpenStack作为基础设施云的先进的部署细节。


NFV(网络功能虚拟化)



混合云


    OpenStack是私有云解决方案的一个选项。当有些组织之在此前提下部署,许多其他组织想要使用公有云作为备份,灾难恢复,在业务爆发时超量部署以及其他用途。举例来说,金融机构使用混合云因为他们需要预置的基础设施来做潜在的敏感交易并使用公有云来做基于计算服务的数据分析工作流。通过混合云模式,这些机构可以保护他们的实际资产并减少开支。混合云管理平台的例子包括Platform9,Scalr,RightScale,ZeroStack以及许多其他案例。


部署模型


预制的非软件即服务的发行版


在传统模式中,OpenStack发行版往往与供应商的预安装OpenStack工具一起发布。在这种模式下,IT人员预期将构建、部署和维护分发及其相关的基础设施。选择厂商的支持与服务将发生额外费用。


采用OpenStack发行版的最大劣势在于在快速变更的代码集上持续维护你部署的基础设施的需求,而这变更频率为每六个月一次。除此之外,当IT团队在新的机房区域部署服务与工作流,会增加额外的复杂性。


非软件即服务的发行版举例:


• Red Hat Enterprise Linux OpenStack Platform (RHEL OSP)

• Mirantis OpenStack (MOS)

• Suse OpenStack Cloud


托管私有云


托管私有云解决方案类似于网站托管。在这类模式下,组织将OpenStack基础设施的维护移交给托管提供商。虽然该模式缓解了IT人员维护的基于分布式的解决方案遇到的一些问题。托管私有云意味着公司将数据放在了托管服务提供商的数据中心的企业和周边网络。选择托管供应商会被托管云供应商的私有云服务锁定。


OpenStack托管云服务商举例:


• Rackspace OpenStack Private Cloud

• IBM Bluemix Private Cloud 


盒中私有云


OpenStack的组件提供了使用预制基础设施来部署私有云的能力。该模型的优点是保留了用于部署OpenStack的基础结构。从而确保数据不会离开组织网络边界。不过,这些服务的许可证会非常昂贵,且采用此模式部署OpenStack组件的组织必须被动接受这笔前期投资。组织会被推荐硬件锁定。最新的OpenStack调查反映了灵活性在选择硬件供应商方面的重要性,而在以下情况下将难以实现:


私有盒中云举例:


   • Cisco Metacloud

   • Stratoscale


  软件即服务模式管理OpenStack(OpenStack即服务)


   这种模式允许组织在部署OpenStack的同时提供灵活选择他的数据中心基础设施的机会。人们可以在网络周边保持对公司数据的控制,同时还可以部署、维护和升级OpenStack软件。而且升级不会影响正在运行中的数据中心基础设施。


英文原文:

https://dzone.com/refcardz/getting-started-openstack-most

译者:云技术社区金牌翻译 小富


相关阅读:




以上是关于分分钟快速开始OpenStack指南的主要内容,如果未能解决你的问题,请参考以下文章

如何从零开始学习OpenStack

OpenStack Ocata Horizon 开发—— 快速开始

OpenStack Ocata Horizon 开发—— 快速开始

40分钟快速搭建OpenStack

从零开始:TensorFlow机器学习模型快速部署指南

MessagePack Java 0.6.X 快速开始指南 - 安装