OpenStack进阶Agenda镜像服务计算服务OpenStack架构身份认证服务存储服务网络服务计量服务编排服务OpenStack架构总体架构OpenStack架构核心架构作为IaaS层的云操作系统,OpenStack为虚拟机提供并管理三大类资源:计算、网络和存储。此外还涉及对这些资源的计量计费和编排管理。OpenStack架构简易逻辑架构OpenStack架构简易逻辑架构管理VM的生命周期,是OpenStack中最核心的服务。为OpenStack提供网络连接服务,负责创建和管理L2、L3网络,为VM提供虚拟网络和物理网络连接。管理VM的启动镜像,Nova创建VM时将使用Glance提供的镜像。为VM提供块存储服务。Cinder提供的每一个Volume在VM看来就是一块虚拟硬盘,一般用作数据盘。提供对象存储服务。VM可以通过RESTfulAPI存放对象数据。作为可选的方案,Glance可以将镜像存放在Swift中;Cinder也可以将Volume备份到Swift中。为OpenStack的各种服务提供认证和权限管理服务。简单的说,OpenStack上的每一个操作都必须通过Keystone的审核。提供OpenStack监控和计量服务,为报警、统计或计费提供数据。为OpenStack用户提供一个Web的自服务Portal。OpenStack架构内部逻辑架构OpenStack架构VM创建流程OpenStack架构部署架构1、控制节点(ControllerNode)管理OpenStack,其上运行的服务有Keystone、Glance、Horizon以及Nova和Neutron中管理相关的组件。也运行支持OpenStack的服务,例如SQL数据库、消息队列和网络时间服务。2、网络节点(NetworkNode)其上运行的服务为Neutron。为OpenStack提供L2和L3网络。包括虚拟机网络、DHCP、路由、NAT等。3、存储节点(StorageNode)提供块存储(Cinder)或对象存储(Swift)服务。4、计算节点(ComputeNode)其上运行Hypervisor(默认使用KVM)。同时运行Neutron服务的agent,为虚拟机提供网络支持。OpenStack架构部署架构ManagementNetwork:OpenStack内部管理用,比如各服务之间通信。TunnelNetwork:OpenStack部署的虚拟机之间通信所使用的网络。ExternalNetwork:对于公有云,ExternalNetwork一般指的是Internet。对于企业私有云,ExternalNetwork则可以是Intranet中的某个网络。StorageNetwork:计算节点与存储节点通信的网络,比如虚拟机挂在云硬盘。Agenda镜像服务计算服务OpenStack架构身份认证服务存储服务网络服务计量服务编排服务身份认证服务Keystone作用1.keystone作为OpenStack的IdentityService,提供了用户信息管理和完成各个模块认证服务。管理用户及其权限。维护OpenStackServices的Endpoint。Authentication(认证)和Authorization(鉴权)身份认证服务Keystone概念1.User,指代任何使用OpenStack的实体,可以是真正的用户,其他系统或者服务。除了admin和demo,OpenStack也为nova、cinder、glance、neutron服务创建了相应的User。2.Credentials是User用来证明自己身份的信息,可以是:1.用户名/密码2.Token3.APIKey等。3.Authentication是Keystone验证User身份的过程。User访问OpenStack时向Keystone提交用户名和密码形式的Credentials,Keystone验证通过后会给User签发一个Token作为后续访问的Credential。4.Token是由数字和字母组成的字符串,User成功Authentication后由Keystone分配给User。5.Project,Project用于将OpenStack的资源(计算、存储和网络)进行分组和隔离。资源的所有权是属于Project的,而不是User。/Project/Account这几个术语是通用的,但长期看会倾向使用Project。每个User(包括admin)必须挂在Project里才能访问该Project的资源。一个User可以属于多个Project。admin相当于root用户,具有最高权限。6.Service包括Compute(Nova)、BlockStorage(Cinder)、ObjectStorage(Swift)等,每个Service都会提供若干个Endpoint,User通过Endpoint访问资源和执行操作。7.Endpoint是网络上可访问的地址,通常是一个URL。Service通过Endpoint暴露自己的API。8.Role,一个role可看着一个ACL的集合。Keystone中,分配给用户的token包含了role列表。被访问的服务会判断访问它的用户的角色,以及每个role访问资源或者操作的权限。系统默认使用admin和_member_role。安全包含两部分:Authentication(认证)和Authorization(鉴权)Authentication解决的是“你是谁?”的问题。Authorization解决的是“你能干什么?”的问题,通过Role实现。身份认证服务KeystoneV3API1.KeystoneV3做出了许多变化和改进。将Tenant改称为Project引入Domain的概念引入Group的概念2.将Tenant改为Project并在其上添加Domain的概念,这更加符合现实世界和云服务的映射。V3利用Domain实现真正的多租户(multi-tenancy)架构,Domain担任Project的高层容器。云服务的客户是Domain的所有者,他们可以在自己的Domain中创建多个Projects、Users、Groups和Roles。通过引入Domain,云服务客户可以对其拥有的多个Project进行统一管理,而不必再向过去那样对每一个Project进行单独管理。Group是一组Users的容器,可以向Group中添加用户,并直接给Group分配角色,那么在这个Group中的所有用户就都拥有了Group所拥有的角色权限。通过引入Group的概念,KeystoneV3实现了对用户组的管理,达到了同时管理一组用户权限的目的。在一个Domain中包含3个Projects,可以通过Group1将RoleSysadmin直接赋予Domain,那么Group1中的所有用户将会对Domain中的所有Projects都拥有管理员权限。也可以通过Group2将RoleEngineer只赋予Project3,这样Group2中的User就只拥有对Project3相应的权限,而不会影响其它Projects。身份认证服务Keystone架构身份认证服务Keystone与其他服务交互Agenda镜像服务计算服务OpenStack架构身份认证服务存储服务网络服务计量服务编排服务镜像服务Glance体系结构Glance为OpenStack提供虚拟机的镜像(操作系统)服务,结构较为简单,本身并不负责实际的存储,主要完成镜像管理工作:1.glance-apiglance-api是系统后台运行的服务进程。对外提供RESTAPI,响应image查询、获取和存储的调用。glance-api不会真正处理请求。如果是与imagemetadata(元数据)相关的操作,glance-api会把请求转发给glance-registry;如果是与image自身存取相关的操作,glance-api会把请求转发给该image的storebackend。2.glance-registryglance-registry是系统后台运行的服务进程。负责处理和存取image的metadata,例如image的大小和类型。3.StorebackendGlance自己并不存储image。真正的image是存放在backend中的。Glance支持多种backend,包括:Adirectoryonalocalfilesystem(这是默认配置)、CephRBD、AmazonS3、OpenStackBlockStorage(Cinder)、OpenStackObjectStorage(Swift)。可以在/etc/glance/glance-api.conf中配置镜像服务Glance镜像格式1.目前支持的image格式比较多,虚拟机镜像格式最简单的是raw格式,可以认为是一个位等价的块设备文件(对/dev/sda使用dd命令进行复制)。此外还有很多格式,各自有不同的特点,如:ISO(主要用于CD或DVD)、VDI(VirtualBox使用)、VHD/VHDX(微软Hyper-V使用)、VMDK(VMware使用)。主流有如下2种:raw,裸磁盘格式,性能较好,但是不支持snapshot等功能qcow2,QCOW2(QEMUcopy-on-writeversion2)则常用于KVM虚拟机,相比raw格式,qcow2格式的文件体积更小,更利于保存和上传。qcow2格式还支持快照(snapshot)功能(raw不支持),因此需要时,Openstack会自动将raw格式的镜像转换成qcow2格式。2.Nova备份的操作叫Snapshot,其工作原理是对instance的镜像文件(系统盘)进行全量备份,生成一个类型为snapshot的image,然后将其保存到Glance上。Agenda镜像服务计算服务OpenStack架构身份认证服务存储服务网络服务计量服务编排服务计算服务Nova层级计算服务Nova层级Nova的架构比较复杂,包含很多组件。这些组件以子服务(后台deamon进程)的形式运行,可以分为以下几类:1.region侧重地理位置因素,每个region有自己独立的endpoint,regions之间完全隔离,但是多个regions之间共享同一个keystone和dashboard,用户可以选择离自己更近的region来部署自己的服务。2.cell主要用来解决openstack的扩展性和规模瓶颈,当达云计算平台到一定的规模后,某些模块必然成为整个系统的瓶颈,比如database和AMQP了,所以,每个cell有自己独立的DB和AMQP。此外由cell来支持分级调度,每一个Cell包含独立的MessageBroker以及Database,其中APICell主要包含nova-api服务,用于接收用户请求,并将用户请求通过message的形式发送至指定的Cell;ChildCell包含除nova-api之外的所有nova-*服务,实现具体的NovaCompute节点服务;APICell与ChildCell共享Glance服务。3.AvailabilityZone简单理解为一组节点的集合,这组节点具有独立的电力供应设备,比如一个个独立供电的机房,或机架都可以被划分成AZ。所以,AZ主要是通过冗余来解决可用性问题。面向用户,在创建instance的时候可以选择创建到哪些AZ中,以保证instance的可用性。4.HostAggregate面向管理员,根据硬件资源的某一属性来对硬件进行划分的功能。计算服务Nova层级此外由cell来支持分级调度,每一个Cell包含独立的MessageBroker以及Database,其中APICell主要包含nova-api服务,用于接收用户请求,并将用户请求通过message的形式发送至指定的Cell;ChildCell包含除nova