OpenStack01-OpenStack介绍

1、云计算简介

1、什么是云计算

  • 云计算是通过虚拟化技术去实现的,它是一种按量付费的模式!

2、为什么要使用云计算

  • 小公司是为了节省成本。不用购买物理机、不用租IDC机房、不用购买宽带和公网IP。
  • 大公司是为了把闲置的资源进行出租,节省成本,甚至是获取利润(超卖技术 KSM)。
    • 为什么大公司会有闲置资源,是因为大公司在举行活动时会有较大的流量,要满足需求,就必须要购置大量的服务器、宽带等资源,但活动一般就只有几天,其他时间这些资源就会被闲置。

3、云计算的服务类型

  • 云计算有三种服务类型,即基础设施即服务(IaaS)、平台即服务(PaaS)和软件即服务(SaaS)。
    • IAAS:服务商只提供虚拟服务器,客户需要自己部署服务运行的环境、管理代码和数据。
    • PAAS:服务商提供服务运行的环境(例如php、java、python、go、c#、nodejs等), 客户只需要管理代码和数据。
    • SAAS:服务商直接提供应用,客户直接使用其提供的应有即可。例如企业邮箱、cdn和rds等。

2、Openstack简介

2.1、OpenStack介绍

  • OpenStack是IAAS(infrastructure as a service,基础设置即服务)架构的实现, OpenStack 是一个由NASA(美国国家航空航天局)和Rackspace合作研发并发起的,开放源代码的项目。
  • OpenStack是一个开源的云计算管理平台项目,由几个主要的组件一起完成具体的工作。OpenSiack支持几乎所有类型的云环境,项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenStack通过各种互补的服务提供了IAAS的解决方案,每个服务都提供API进行集成。
  • OpenStack是一个旨在为公共及私有云的建设与管理提供软件的开源项目。OpenStack项目的首要任务是简化云的部署过程并为其带来良好的可扩展性。可以通过OpenStack的WEB前端设置及管理自己的公共云或私有云。
  • OpenStack云计算平台,可以帮助服务商或企业内部实现类似于Amazon EC2和S3的云基础架构服务(Infrastructure asa Servicc,IAAS)。
    • OpenStack很多功能和API都与AWS是相司的。AWS底层也是使用的KVM虚拟。
  • OpenStack的核心组件是计算、网络和存储,是为了简化资源的管理和分配,把资源划分为三个比较大的资源池,对外通过API进行交互。

2.2、OpenStack的版本信息

  • CentOS 7和RHEL 7均支持OpenStack Train及更早版本。
  • CentOS 8和RHEL 8均支持OpenStack Ussuri和Victoria。
  • OpenStack每半年更新一个新版本,一年发布两个版本。版本号按字母顺序排列。目前,Zed版本是最新版本。
    • Alpha:是内部测试版,一般不向外部发布,会有很多Bug,一般只有测试人员使用
    • Dev:在软件开发中多用于开发软件的代号,相比于beta版本,dev版本可能出现的更早(dev版本的软件通常比beta版本的软件更不稳定)。
    • Beta:也是测试版,这个阶段的版本会一直加入新的功能。在Alpha版之后推出。
    • RC:(Release Candidate)发行候选版本,RC版不会再加入新的功能了,主要着重于除错。
    • GA:(General Availability)正式发布的版本,在国外都是用GA来说明release版本的。

2.3、OpenStack的常用组件

  • OpenStack由几个关键服务组成,这些服务可以单独安装。这些服务根据“云”的需求协同工作,包括计算(Compute)、认证(Identity)、网络(Networking)、镜像(Image)、块存储(Block Storage)、对象存储(Object Storage)、遥测(Telemetry)、编排(Orchestration)和数据库服务(Database services)。
  • OpenStack基本服务:
    • Identity service(keystone):负责用户身份验证、服务注册和身份令牌的管理。
    • Image service(glance):负责注册、查询和存储镜像。
    • Placement service(placement):统计node节点的可用资源。从Nova中拆分出的一个组件(stein版本)。
    • Compute service(nova):负责实例生命周期管理、计算资源管理、网络与授权管理、基于REST的API服务和异步连续通信。
    • Networking service(neutron):实现了虚拟机的网络资源管理,即虚拟机网络。
    • Dashboard(horizon):基于OpenStack API接口使用django开发的web前端。是管理、控制OpenStack服务的Web控制面板。
  • OpenStack的存储服务:
    • Block Storage service(cinder):块存储。
    • Object Storage service(Swift):对象存储,用于永久类型的静态数据的长期存储
  • OpenStack的其他服务:
    • Telemetry Data Collection service(Ceilometer):提供监控和数据采集、计量服务
    • Orchestration service (Heat):自动化组件的部署。
    • Database service (Trove):提供数据库应用服务。

2.3.1、认证服务Keystone(Identity service)

  • Keystone在OpenStack服务框架中负责用户身份验证、服务注册和身份令牌的管理,它实现了OpenStack的Identity API。
  • Keystone类似一个服务总线,或者说是整个OpenStack服务框架的注册表,其他服务通过Keystone注册其服务并获得该服务的API(Endpoint),即该服务的访问入口(服务访问的URL)。任何服务之间的相互调用,也要经过Keystone的身份验证才能获得目标服务的API(Endpoint)以访问目标服务。Keystone支持多种形式的认证授权,包括常用的用户名和密码验证系统、基于Token的令牌验证系统和使用Public/Private秘钥对的验证系统,除此之外,Keystone还可以集成普遍使用的目录服务(DirectoryService),如轻量级目录访问协议(LDAP)。
  • OpenStack集群中部署的所有服务都会在Keystone认证服务中进行注册,然后Keystone为每个服务提供一个或多个API(Endpoint)用于对这些服务进行请求访问,同时对外提供已经注册的服务列表。
  • Keystone使用租户的形式将OpenStack中的资源进行逻辑隔离,在Keystone中,不同租户在访问相同服务时,尽管访问的是相同的API(Endpoint),但是不同租户具有不同的令牌,因此看到的资源是完全不一样的,即一个租户的用户无法访问另一租户的资源。
  • OpenStack中的用户在经过Keystone的验证后,会获得Keystone颁发并具有一定有效时长的Token,在允许用户访问目标服务的API(Endpoint)之前,服务会请求Keystone验证用户的Token是否有效,有效则允许访问相应的服务,否则拒绝访问,同时OpenStack中的每一个用户都会被分配一个与租户和用户相关的身份角色(Role)。
  • Keystone的两个主要功能分别是用户管理和服务管理,要理解Keystone如何管理用户,则需要首先理解Keystone中用户管理的几个术语:
    • User(用户):User是一个使用OpenStack的人、系统或者服务的字符称号,Keystone会对用户发起的资源调用请求进行验证,验证通过的用户可以登录OpenStack并且通过Keystone颁发的Token去访问资源,用户可以被分配到一个或者多个project中。
    • Project(项目):Project是对资源进行分组或者隔离的容器(有时也称为Tenant 租户),一个Project可能对应一个客户、一个服务账号、一个组织或者一个项目。在OpenStack中,用户可以属于多个Project,并且必须至少属于某个Project。Project中可使用资源的限制称为Project Quotas,它包括该Project内可使用的各种资源限额,如CPU限额、内存限额等。
    • Credential(用户凭据):Credential是用来证明用户身份的数据,可以是用户名和密码、用户名和APIkey,或者是Keystone认证后分配的Token。
    • Authentication(身份认证):Authentication是验证用户身份的一个过程。Keystone服务通过检查用户的Credential来确定用户的身份,在第一次对用户进行认证时,用户使用用户名/密码或者用户名/APIkey作为Credential,而当用户的Credential被验证后,Keystone会给用户分配一个Authentication Token供该用户后续的请求使用。
    • Token(令牌):Token是一个Keystone分配的用于访问OpenStack API和资源服务的字符文本字串。一个用户的Token可能在任何时间被撤销(revoke),即用户的Token是有时间限制的,在OpenStack中,Token是和特定的Project绑定的,因此如果用户属多个Project,则会有多个Token。
    • Service(服务):Service是一个OpenStack提供的服务,比如Nova、Swift或者Glance等,在OpenStack中,每个服务提供一个或者多个Endpoint以供不同角色的用户进行资源访问和操作。
    • Endpoint(服务人口):Endpoint是一个Service监听服务请求的网络地址,客户端要访问某个Service,则必须通过该Service提供的Endpoint,Endpoint通常是个可访问的URL地址,在OpenStack的多Region部署架构中,不同Region中相同的Service也具有不同的Endpoint。在OpenStack服务框架中,Service之间的相互访问也需要通过服务的Endpoint才可访问对应的目标Service,例如当Nova服务需要访问Glance服务以获取Image时,Nova就需要首先访问Keystone,从Keystone的服务列表中拿到Glance的Endpoint,然后通过访问该Endpoint以获取Glance服务。每个服务的Endpoint都具有Region属性,具有不同Region属性值的Endpoint也是不相同的。通常,一个服务会提供三类Endpoint供客户端使用:属性为admin url的Endpoint只能被具有admin角色的用户访问;属性为internal url的Endpoint被OpenStack内部服务用以彼此之间的服务通信;属性为public url的Endpoint用于其他用户的访问。
    • Role(角色):Role可以看成是一个访问控制列表(ACL)的集合。在Keystone的认证机制中,分配给用户的Token中包含了用户的角色列表。被用户访问的服务会解析用户角色列表中的角色所能进行的操作和可以访问的资源,在Keystone中,系统默认使用admin和memberrole角色。
    • Policy(策略):Keystone对用户的验证除了包含对用户的身份进行验证,还需要鉴别用户对某个服务是否有访问权限(根据Role判断)。Policy机制就是用来控制某一个Project中的某个User是否具有某个操作的权限。这个与相关的Role关联的User能执行什么操作,不能执行什么操作,就是通过Policy机制来实现的。对于Keystone服务来说,Policy就是一个JSON格式的文件,默认位置是/etc/keystone/policy.json。通过配置这个文件,Keystone认证服务实现了基于用户角色的权限管理。

2.3.2、镜像服务Glance(Image service)

  • Glance主要负责注册、查询和存储镜像,Glance中的镜像可以是用户制作并上传的镜像,也可以是对当前实例进行快照的镜像副本,两种类型的镜像都可以快速用于实例部署。通过Glance提供的标准RESTful API接口,Glance存储的镜像可以供OpenStack用户和管理员进行并行查询和访问,默认情况下,Glance将用户上传的镜像存储在部署Glance服务的主机目录上(/var/lib/glance/images)。Glance API服务可以通过配置缓存机制来提高镜像服务的响应速度,Glance支持多种后端存储服务,例如本地文件系统作为存储介质、Swif(OpenStackObjectStorage)作为存储介质或者AWSS3兼容的API作为存储介质以及分布式存储集群Ceph等。
  • Glance作为OpenStack的一个核心系统项目,其架构是基于组件设计的,Glance具有高可用、可容错及故障恢复、标准高度开放和兼容性强等特点。
  • 在Glance中需要理解的两个术语是镜像格式(Formats)和容器格式(Containers)。
  • 虚拟机镜像格式是底层的磁盘镜像格式,虚拟化供应商利用不同的磁盘镜像格式来存储虚拟机镜像数据,目前Glance常用的镜像格式包括:
    • aki镜像格式。aki是AWS的Kernel镜像格式。
    • ari镜像格式。ari是AWS的Ramdisk镜像格式。
    • ami镜像格式。ami是AWS的虚拟机镜像格式。
    • raw镜像格式。raw是一种非结构化的镜像格式,一个没有扩展过的镜像文件通常就是raw格式镜像。
    • vhd镜像格式。vhd是一种通用的虚拟机磁盘格式,可用于Vmware、Xen、MicrosoftHyper-V、VirtualBox等虚拟化引擎中。
    • vmdk镜像格式。vmdk是Vmware的虚拟机磁盘格式,支持多种Hypervisor。
    • vdi镜像格式。vdi是VirtualBox、QEMU等支持的虚拟机磁盘格式。
    • iso镜像格式。iso是光驱数据的存档格式,如CD-ROM。
    • qcow2镜像格式。qcow2是一种支持QEMU并且支持动态磁盘镜像扩展和写时复制(CopyonWrite)的磁盘格式。
  • 容器格式主要用于表明虚拟机镜像容器格式主要用于表明虚拟机镜像文件是否包含实际虚拟机的元数据信息,容器类似一个文件夹,文件夹中可能包含磁盘镜像和实际虚机的元数据信息也可能只有镜像文件而没有元数据信息。目前使用较多的镜像容器格式有如下几种:
    • docker格式。一种docker容器格式。
    • ovf格式。一种开发式虚拟机磁盘格式,最初由Vmware发起,目前已被多种虚拟化设备支持。
    • bare格式。裸格式,这表示镜像没有Container或者没有包含元数据信息。
    • aki格式。AmazonKernel镜像。
    • ari格式。AmazonRamdisk镜像。
    • ami格式。Amazon虚拟机镜像。

2.3.3、计算服务Nova(Compute service)

  • Nova是OpenStack中最为核心和复杂的项目之一,也是OpenStack中使用最多和最为成熟稳定的项目。
  • Nova的主要功能是对虚拟机进行管理并提供虚拟机运行所需的主要资源,Nova是OpenStack作为IaaS服务的基石,此外,Nova在通用服务器上进行计算能力弹性水平扩展的特性是OpenStack成为先进云计算平台最为主要的原因之一。
  • 在OpenStack提供的IaaS服务中,Nova负责实例生命周期管理、计算资源管理、网络与授权管理、基于REST的API服务和异步连续通信等,虽然其中的某些功能模块已从Nova项目中分离成为独立项目,但是这些项目的基本功能仍然没变。在OpenStack中,Nova与其多个OpenStack服务之间会进行相互访问,如Nova使用Keystone服务进行访问者的身份验证,使用Horizon作为其图形界面管理接口,使用Cinder提供的块存储服务作为虚拟机的磁盘存储,此外,Nova还需使用Glance提供的镜像服务以创建虚拟机实例,使用Neutron提供的网络服务为虚拟机之间和虚拟机与外网之间的通信提供服务。
  • 在IaaS架构里,虚拟服务器是最主要的服务,其他的网络、存储、镜像、监控、自动编排等服务都是为实现虚拟机的正常运行提供服务的,因此,Nova与这些服务项目之间都存在交互,这也是Nova最为复杂和重要的原因。
  • 在目前的Nova版本中,最主要的三个子服务分别是Nova-api、Nova-compute和Nova-scheduler:
    • nova-api:接受并响应所有的计算服务请求,管理虚拟机(云主机)生命周期
    • nova-compute(多个):是最核心的服务,提供虚机实例运行所需的计算资源,如CPU、内存等。真正管理虚拟机
    • nova-scheduler:nova调度器(挑选出最合适的nova-compute来创建虚机)。负责响应请求后端的过滤规划,如根据设定的过滤规则进行创建实例请求的计算节点选取。
    • nova-conductor:是nova-compute服务与数据库交互的中介。它消除了nova-compute服务对云数据库的直接访问。
    • nova-novncproxy和nova-xvpvncproxy:提供通过VNC连接访问运行实例的代理。支持基于浏览器的novnc客户端
    • nova-api-metadata:接受来自虚拟机发送的元数据请求
  • 需要注意的是,虽然Nova提供了创建虚拟机和管理虚拟机生命周期的功能,但是Nova本身不提供虚拟化引擎,而是通过集成与虚拟化引擎相关的软件以API调用的形式来控制各种Hypervisor,目前Nova支持的Hypervisor有:XenServer、LXC、KVM、UML、VMwarevSphere、QEMU、Hyper-V、PowerVM以及Docker等,用户可以根据自己的技术优势和计算资源的类型需求选取适合自己的Hypervisor。

1

#                                                                                                                      #
posted @ 2023-03-03 00:05  麦恒  阅读(186)  评论(0编辑  收藏  举报